Home | History | Annotate | Download | only in pps
      1 package com.android.hotspot2.pps;
      2 
      3 import com.android.hotspot2.Utils;
      4 import com.android.hotspot2.omadm.MOManager;
      5 import com.android.hotspot2.omadm.OMAException;
      6 import com.android.hotspot2.omadm.OMANode;
      7 
      8 import java.util.ArrayList;
      9 import java.util.List;
     10 
     11 import static com.android.hotspot2.omadm.MOManager.TAG_CreationDate;
     12 import static com.android.hotspot2.omadm.MOManager.TAG_DataLimit;
     13 import static com.android.hotspot2.omadm.MOManager.TAG_ExpirationDate;
     14 import static com.android.hotspot2.omadm.MOManager.TAG_StartDate;
     15 import static com.android.hotspot2.omadm.MOManager.TAG_TimeLimit;
     16 import static com.android.hotspot2.omadm.MOManager.TAG_TypeOfSubscription;
     17 import static com.android.hotspot2.omadm.MOManager.TAG_UsageLimits;
     18 import static com.android.hotspot2.omadm.MOManager.TAG_UsageTimePeriod;
     19 
     20 public class SubscriptionParameters {
     21     private final long mCDate;
     22     private final long mXDate;
     23     private final String mType;
     24     private final List<Limit> mLimits;
     25 
     26     public SubscriptionParameters(OMANode node) throws OMAException {
     27         mCDate = MOManager.getTime(node.getChild(TAG_CreationDate));
     28         mXDate = MOManager.getTime(node.getChild(TAG_ExpirationDate));
     29         mType = MOManager.getString(node.getChild(TAG_TypeOfSubscription));
     30 
     31         OMANode ulNode = node.getChild(TAG_UsageLimits);
     32         if (ulNode == null) {
     33             mLimits = null;
     34         } else {
     35             mLimits = new ArrayList<>(ulNode.getChildren().size());
     36             for (OMANode instance : ulNode.getChildren()) {
     37                 if (instance.isLeaf()) {
     38                     throw new OMAException("Not expecting leaf node in " +
     39                             TAG_UsageLimits);
     40                 }
     41                 mLimits.add(new Limit(instance));
     42             }
     43         }
     44 
     45     }
     46 
     47     private static class Limit {
     48         private final long mDataLimit;
     49         private final long mStartDate;
     50         private final long mTimeLimit;
     51         private final long mUsageTimePeriod;
     52 
     53         private Limit(OMANode node) throws OMAException {
     54             mDataLimit = MOManager.getLong(node, TAG_DataLimit, Long.MAX_VALUE);
     55             mStartDate = MOManager.getTime(node.getChild(TAG_StartDate));
     56             mTimeLimit = MOManager.getLong(node, TAG_TimeLimit, Long.MAX_VALUE) *
     57                     MOManager.IntervalFactor;
     58             mUsageTimePeriod = MOManager.getLong(node, TAG_UsageTimePeriod, null);
     59         }
     60 
     61         @Override
     62         public String toString() {
     63             return "Limit{" +
     64                     "dataLimit=" + mDataLimit +
     65                     ", startDate=" + Utils.toUTCString(mStartDate) +
     66                     ", timeLimit=" + mTimeLimit +
     67                     ", usageTimePeriod=" + mUsageTimePeriod +
     68                     '}';
     69         }
     70     }
     71 
     72     @Override
     73     public String toString() {
     74         return "SubscriptionParameters{" +
     75                 "cDate=" + Utils.toUTCString(mCDate) +
     76                 ", xDate=" + Utils.toUTCString(mXDate) +
     77                 ", type='" + mType + '\'' +
     78                 ", limits=" + mLimits +
     79                 '}';
     80     }
     81 }
     82