11d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistpackage com.android.server.wifi.hotspot2.pps; 21d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 31d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistimport com.android.server.wifi.hotspot2.Utils; 41d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistimport com.android.server.wifi.hotspot2.omadm.OMAException; 51d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistimport com.android.server.wifi.hotspot2.omadm.OMANode; 62e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager; 71d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 81d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistimport java.util.ArrayList; 91d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistimport java.util.List; 101d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 112e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_CreationDate; 122e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_DataLimit; 132e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_ExpirationDate; 142e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_StartDate; 152e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_TimeLimit; 162e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_TypeOfSubscription; 172e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_UsageLimits; 182e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_UsageTimePeriod; 191d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 201d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistpublic class SubscriptionParameters { 211d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final long mCDate; 221d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final long mXDate; 231d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final String mType; 241d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final List<Limit> mLimits; 251d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 261d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist public SubscriptionParameters(OMANode node) throws OMAException { 272e814680f4dd27a5f825afab189843582235cedcJan Nordqvist mCDate = PasspointManagementObjectManager.getTime(node.getChild(TAG_CreationDate)); 282e814680f4dd27a5f825afab189843582235cedcJan Nordqvist mXDate = PasspointManagementObjectManager.getTime(node.getChild(TAG_ExpirationDate)); 292e814680f4dd27a5f825afab189843582235cedcJan Nordqvist mType = PasspointManagementObjectManager.getString(node.getChild(TAG_TypeOfSubscription)); 301d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 311d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist OMANode ulNode = node.getChild(TAG_UsageLimits); 321d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist if (ulNode == null) { 331d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist mLimits = null; 341d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 351d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist else { 361d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist mLimits = new ArrayList<>(ulNode.getChildren().size()); 371d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist for (OMANode instance : ulNode.getChildren()) { 381d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist if (instance.isLeaf()) { 391d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist throw new OMAException("Not expecting leaf node in " + 401d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist TAG_UsageLimits); 411d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 421d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist mLimits.add(new Limit(instance)); 431d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 441d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 451d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 461d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 471d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 481d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private static class Limit { 491d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final long mDataLimit; 501d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final long mStartDate; 511d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final long mTimeLimit; 521d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final long mUsageTimePeriod; 531d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 541d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private Limit(OMANode node) throws OMAException { 552e814680f4dd27a5f825afab189843582235cedcJan Nordqvist mDataLimit = PasspointManagementObjectManager 562e814680f4dd27a5f825afab189843582235cedcJan Nordqvist .getLong(node, TAG_DataLimit, Long.MAX_VALUE); 572e814680f4dd27a5f825afab189843582235cedcJan Nordqvist mStartDate = PasspointManagementObjectManager 582e814680f4dd27a5f825afab189843582235cedcJan Nordqvist .getTime(node.getChild(TAG_StartDate)); 592e814680f4dd27a5f825afab189843582235cedcJan Nordqvist mTimeLimit = PasspointManagementObjectManager 602e814680f4dd27a5f825afab189843582235cedcJan Nordqvist .getLong(node, TAG_TimeLimit, Long.MAX_VALUE) 612e814680f4dd27a5f825afab189843582235cedcJan Nordqvist * PasspointManagementObjectManager.IntervalFactor; 622e814680f4dd27a5f825afab189843582235cedcJan Nordqvist mUsageTimePeriod = PasspointManagementObjectManager 632e814680f4dd27a5f825afab189843582235cedcJan Nordqvist .getLong(node, TAG_UsageTimePeriod, null); 641d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 651d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 661d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist @Override 671d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist public String toString() { 681d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist return "Limit{" + 691d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist "dataLimit=" + mDataLimit + 701d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist ", startDate=" + Utils.toUTCString(mStartDate) + 711d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist ", timeLimit=" + mTimeLimit + 721d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist ", usageTimePeriod=" + mUsageTimePeriod + 731d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist '}'; 741d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 751d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 761d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 771d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist @Override 781d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist public String toString() { 791d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist return "SubscriptionParameters{" + 801d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist "cDate=" + Utils.toUTCString(mCDate) + 811d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist ", xDate=" + Utils.toUTCString(mXDate) + 821d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist ", type='" + mType + '\'' + 831d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist ", limits=" + mLimits + 841d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist '}'; 851d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 861d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist} 87