Home | History | Annotate | Download | only in pps
      1 package com.android.hotspot2.pps;
      2 
      3 import com.android.hotspot2.Utils;
      4 
      5 import java.util.ArrayList;
      6 import java.util.Collection;
      7 import java.util.HashSet;
      8 import java.util.List;
      9 import java.util.Map;
     10 import java.util.Set;
     11 
     12 public class HomeSP {
     13     private final Map<String, Long> mSSIDs;        // SSID, HESSID, [0,N]
     14     private final String mFQDN;
     15     private final DomainMatcher mDomainMatcher;
     16     private final Set<String> mOtherHomePartners;
     17     private final HashSet<Long> mRoamingConsortiums;    // [0,N]
     18     private final Set<Long> mMatchAnyOIs;           // [0,N]
     19     private final List<Long> mMatchAllOIs;          // [0,N]
     20 
     21     private final Credential mCredential;
     22 
     23     // Informational:
     24     private final String mFriendlyName;             // [1]
     25     private final String mIconURL;                  // [0,1]
     26 
     27     private final Policy mPolicy;
     28     private final int mCredentialPriority;
     29     private final Map<String, String> mAAATrustRoots;
     30     private final UpdateInfo mSubscriptionUpdate;
     31     private final SubscriptionParameters mSubscriptionParameters;
     32     private final int mUpdateIdentifier;
     33 
     34     @Deprecated
     35     public HomeSP(Map<String, Long> ssidMap,
     36                    /*@NotNull*/ String fqdn,
     37                    /*@NotNull*/ HashSet<Long> roamingConsortiums,
     38                    /*@NotNull*/ Set<String> otherHomePartners,
     39                    /*@NotNull*/ Set<Long> matchAnyOIs,
     40                    /*@NotNull*/ List<Long> matchAllOIs,
     41                    String friendlyName,
     42                    String iconURL,
     43                    Credential credential) {
     44 
     45         mSSIDs = ssidMap;
     46         List<List<String>> otherPartners = new ArrayList<>(otherHomePartners.size());
     47         for (String otherPartner : otherHomePartners) {
     48             otherPartners.add(Utils.splitDomain(otherPartner));
     49         }
     50         mOtherHomePartners = otherHomePartners;
     51         mFQDN = fqdn;
     52         mDomainMatcher = new DomainMatcher(Utils.splitDomain(fqdn), otherPartners);
     53         mRoamingConsortiums = roamingConsortiums;
     54         mMatchAnyOIs = matchAnyOIs;
     55         mMatchAllOIs = matchAllOIs;
     56         mFriendlyName = friendlyName;
     57         mIconURL = iconURL;
     58         mCredential = credential;
     59 
     60         mPolicy = null;
     61         mCredentialPriority = -1;
     62         mAAATrustRoots = null;
     63         mSubscriptionUpdate = null;
     64         mSubscriptionParameters = null;
     65         mUpdateIdentifier = -1;
     66     }
     67 
     68     public HomeSP(Map<String, Long> ssidMap,
     69                    /*@NotNull*/ String fqdn,
     70                    /*@NotNull*/ HashSet<Long> roamingConsortiums,
     71                    /*@NotNull*/ Set<String> otherHomePartners,
     72                    /*@NotNull*/ Set<Long> matchAnyOIs,
     73                    /*@NotNull*/ List<Long> matchAllOIs,
     74                    String friendlyName,
     75                    String iconURL,
     76                    Credential credential,
     77 
     78                    Policy policy,
     79                    int credentialPriority,
     80                    Map<String, String> AAATrustRoots,
     81                    UpdateInfo subscriptionUpdate,
     82                    SubscriptionParameters subscriptionParameters,
     83                    int updateIdentifier) {
     84 
     85         mSSIDs = ssidMap;
     86         List<List<String>> otherPartners = new ArrayList<>(otherHomePartners.size());
     87         for (String otherPartner : otherHomePartners) {
     88             otherPartners.add(Utils.splitDomain(otherPartner));
     89         }
     90         mOtherHomePartners = otherHomePartners;
     91         mFQDN = fqdn;
     92         mDomainMatcher = new DomainMatcher(Utils.splitDomain(fqdn), otherPartners);
     93         mRoamingConsortiums = roamingConsortiums;
     94         mMatchAnyOIs = matchAnyOIs;
     95         mMatchAllOIs = matchAllOIs;
     96         mFriendlyName = friendlyName;
     97         mIconURL = iconURL;
     98         mCredential = credential;
     99 
    100         mPolicy = policy;
    101         mCredentialPriority = credentialPriority;
    102         mAAATrustRoots = AAATrustRoots;
    103         mSubscriptionUpdate = subscriptionUpdate;
    104         mSubscriptionParameters = subscriptionParameters;
    105         mUpdateIdentifier = updateIdentifier;
    106     }
    107 
    108     public int getUpdateIdentifier() {
    109         return mUpdateIdentifier;
    110     }
    111 
    112     public UpdateInfo getSubscriptionUpdate() {
    113         return mSubscriptionUpdate;
    114     }
    115 
    116     public Policy getPolicy() {
    117         return mPolicy;
    118     }
    119 
    120     private String imsiMatch(List<String> imsis, String mccMnc) {
    121         if (mCredential.getImsi().matchesMccMnc(mccMnc)) {
    122             for (String imsi : imsis) {
    123                 if (imsi.startsWith(mccMnc)) {
    124                     return imsi;
    125                 }
    126             }
    127         }
    128         return null;
    129     }
    130 
    131     public String getFQDN() {
    132         return mFQDN;
    133     }
    134 
    135     public String getFriendlyName() {
    136         return mFriendlyName;
    137     }
    138 
    139     public HashSet<Long> getRoamingConsortiums() {
    140         return mRoamingConsortiums;
    141     }
    142 
    143     public Credential getCredential() {
    144         return mCredential;
    145     }
    146 
    147     public Map<String, Long> getSSIDs() {
    148         return mSSIDs;
    149     }
    150 
    151     public Collection<String> getOtherHomePartners() {
    152         return mOtherHomePartners;
    153     }
    154 
    155     public Set<Long> getMatchAnyOIs() {
    156         return mMatchAnyOIs;
    157     }
    158 
    159     public List<Long> getMatchAllOIs() {
    160         return mMatchAllOIs;
    161     }
    162 
    163     public String getIconURL() {
    164         return mIconURL;
    165     }
    166 
    167     public boolean deepEquals(HomeSP other) {
    168         return mFQDN.equals(other.mFQDN) &&
    169                 mSSIDs.equals(other.mSSIDs) &&
    170                 mOtherHomePartners.equals(other.mOtherHomePartners) &&
    171                 mRoamingConsortiums.equals(other.mRoamingConsortiums) &&
    172                 mMatchAnyOIs.equals(other.mMatchAnyOIs) &&
    173                 mMatchAllOIs.equals(other.mMatchAllOIs) &&
    174                 mFriendlyName.equals(other.mFriendlyName) &&
    175                 Utils.compare(mIconURL, other.mIconURL) == 0 &&
    176                 mCredential.equals(other.mCredential);
    177     }
    178 
    179     @Override
    180     public boolean equals(Object thatObject) {
    181         if (this == thatObject) {
    182             return true;
    183         } else if (thatObject == null || getClass() != thatObject.getClass()) {
    184             return false;
    185         }
    186 
    187         HomeSP that = (HomeSP) thatObject;
    188         return mFQDN.equals(that.mFQDN);
    189     }
    190 
    191     @Override
    192     public int hashCode() {
    193         return mFQDN.hashCode();
    194     }
    195 
    196     @Override
    197     public String toString() {
    198         return "HomeSP{" +
    199                 "SSIDs=" + mSSIDs +
    200                 ", FQDN='" + mFQDN + '\'' +
    201                 ", DomainMatcher=" + mDomainMatcher +
    202                 ", RoamingConsortiums={" + Utils.roamingConsortiumsToString(mRoamingConsortiums) +
    203                 '}' +
    204                 ", MatchAnyOIs={" + Utils.roamingConsortiumsToString(mMatchAnyOIs) + '}' +
    205                 ", MatchAllOIs={" + Utils.roamingConsortiumsToString(mMatchAllOIs) + '}' +
    206                 ", Credential=" + mCredential +
    207                 ", FriendlyName='" + mFriendlyName + '\'' +
    208                 ", IconURL='" + mIconURL + '\'' +
    209                 '}';
    210     }
    211 }
    212