blob: e073ad786666eb5174aeec94599655122958afc4 [file] [log] [blame]
package com.android.hotspot2.pps;
import com.android.hotspot2.Utils;
import com.android.hotspot2.omadm.MOManager;
import com.android.hotspot2.omadm.OMAException;
import com.android.hotspot2.omadm.OMANode;
import java.util.ArrayList;
import java.util.List;
import static com.android.hotspot2.omadm.MOManager.TAG_CreationDate;
import static com.android.hotspot2.omadm.MOManager.TAG_DataLimit;
import static com.android.hotspot2.omadm.MOManager.TAG_ExpirationDate;
import static com.android.hotspot2.omadm.MOManager.TAG_StartDate;
import static com.android.hotspot2.omadm.MOManager.TAG_TimeLimit;
import static com.android.hotspot2.omadm.MOManager.TAG_TypeOfSubscription;
import static com.android.hotspot2.omadm.MOManager.TAG_UsageLimits;
import static com.android.hotspot2.omadm.MOManager.TAG_UsageTimePeriod;
public class SubscriptionParameters {
private final long mCDate;
private final long mXDate;
private final String mType;
private final List<Limit> mLimits;
public SubscriptionParameters(OMANode node) throws OMAException {
mCDate = MOManager.getTime(node.getChild(TAG_CreationDate));
mXDate = MOManager.getTime(node.getChild(TAG_ExpirationDate));
mType = MOManager.getString(node.getChild(TAG_TypeOfSubscription));
OMANode ulNode = node.getChild(TAG_UsageLimits);
if (ulNode == null) {
mLimits = null;
} else {
mLimits = new ArrayList<>(ulNode.getChildren().size());
for (OMANode instance : ulNode.getChildren()) {
if (instance.isLeaf()) {
throw new OMAException("Not expecting leaf node in " +
TAG_UsageLimits);
}
mLimits.add(new Limit(instance));
}
}
}
private static class Limit {
private final long mDataLimit;
private final long mStartDate;
private final long mTimeLimit;
private final long mUsageTimePeriod;
private Limit(OMANode node) throws OMAException {
mDataLimit = MOManager.getLong(node, TAG_DataLimit, Long.MAX_VALUE);
mStartDate = MOManager.getTime(node.getChild(TAG_StartDate));
mTimeLimit = MOManager.getLong(node, TAG_TimeLimit, Long.MAX_VALUE) *
MOManager.IntervalFactor;
mUsageTimePeriod = MOManager.getLong(node, TAG_UsageTimePeriod, null);
}
@Override
public String toString() {
return "Limit{" +
"dataLimit=" + mDataLimit +
", startDate=" + Utils.toUTCString(mStartDate) +
", timeLimit=" + mTimeLimit +
", usageTimePeriod=" + mUsageTimePeriod +
'}';
}
}
@Override
public String toString() {
return "SubscriptionParameters{" +
"cDate=" + Utils.toUTCString(mCDate) +
", xDate=" + Utils.toUTCString(mXDate) +
", type='" + mType + '\'' +
", limits=" + mLimits +
'}';
}
}