blob: cfbf9d199daf55e4cb11a0c61f41234d20798da6 [file] [log] [blame]
package com.android.hotspot2.pps;
import com.android.hotspot2.Utils;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class HomeSP {
private final Map<String, Long> mSSIDs; // SSID, HESSID, [0,N]
private final String mFQDN;
private final DomainMatcher mDomainMatcher;
private final Set<String> mOtherHomePartners;
private final HashSet<Long> mRoamingConsortiums; // [0,N]
private final Set<Long> mMatchAnyOIs; // [0,N]
private final List<Long> mMatchAllOIs; // [0,N]
private final Credential mCredential;
// Informational:
private final String mFriendlyName; // [1]
private final String mIconURL; // [0,1]
private final Policy mPolicy;
private final int mCredentialPriority;
private final Map<String, String> mAAATrustRoots;
private final UpdateInfo mSubscriptionUpdate;
private final SubscriptionParameters mSubscriptionParameters;
private final int mUpdateIdentifier;
@Deprecated
public HomeSP(Map<String, Long> ssidMap,
/*@NotNull*/ String fqdn,
/*@NotNull*/ HashSet<Long> roamingConsortiums,
/*@NotNull*/ Set<String> otherHomePartners,
/*@NotNull*/ Set<Long> matchAnyOIs,
/*@NotNull*/ List<Long> matchAllOIs,
String friendlyName,
String iconURL,
Credential credential) {
mSSIDs = ssidMap;
List<List<String>> otherPartners = new ArrayList<>(otherHomePartners.size());
for (String otherPartner : otherHomePartners) {
otherPartners.add(Utils.splitDomain(otherPartner));
}
mOtherHomePartners = otherHomePartners;
mFQDN = fqdn;
mDomainMatcher = new DomainMatcher(Utils.splitDomain(fqdn), otherPartners);
mRoamingConsortiums = roamingConsortiums;
mMatchAnyOIs = matchAnyOIs;
mMatchAllOIs = matchAllOIs;
mFriendlyName = friendlyName;
mIconURL = iconURL;
mCredential = credential;
mPolicy = null;
mCredentialPriority = -1;
mAAATrustRoots = null;
mSubscriptionUpdate = null;
mSubscriptionParameters = null;
mUpdateIdentifier = -1;
}
public HomeSP(Map<String, Long> ssidMap,
/*@NotNull*/ String fqdn,
/*@NotNull*/ HashSet<Long> roamingConsortiums,
/*@NotNull*/ Set<String> otherHomePartners,
/*@NotNull*/ Set<Long> matchAnyOIs,
/*@NotNull*/ List<Long> matchAllOIs,
String friendlyName,
String iconURL,
Credential credential,
Policy policy,
int credentialPriority,
Map<String, String> AAATrustRoots,
UpdateInfo subscriptionUpdate,
SubscriptionParameters subscriptionParameters,
int updateIdentifier) {
mSSIDs = ssidMap;
List<List<String>> otherPartners = new ArrayList<>(otherHomePartners.size());
for (String otherPartner : otherHomePartners) {
otherPartners.add(Utils.splitDomain(otherPartner));
}
mOtherHomePartners = otherHomePartners;
mFQDN = fqdn;
mDomainMatcher = new DomainMatcher(Utils.splitDomain(fqdn), otherPartners);
mRoamingConsortiums = roamingConsortiums;
mMatchAnyOIs = matchAnyOIs;
mMatchAllOIs = matchAllOIs;
mFriendlyName = friendlyName;
mIconURL = iconURL;
mCredential = credential;
mPolicy = policy;
mCredentialPriority = credentialPriority;
mAAATrustRoots = AAATrustRoots;
mSubscriptionUpdate = subscriptionUpdate;
mSubscriptionParameters = subscriptionParameters;
mUpdateIdentifier = updateIdentifier;
}
public int getUpdateIdentifier() {
return mUpdateIdentifier;
}
public UpdateInfo getSubscriptionUpdate() {
return mSubscriptionUpdate;
}
public Policy getPolicy() {
return mPolicy;
}
private String imsiMatch(List<String> imsis, String mccMnc) {
if (mCredential.getImsi().matchesMccMnc(mccMnc)) {
for (String imsi : imsis) {
if (imsi.startsWith(mccMnc)) {
return imsi;
}
}
}
return null;
}
public String getFQDN() {
return mFQDN;
}
public String getFriendlyName() {
return mFriendlyName;
}
public HashSet<Long> getRoamingConsortiums() {
return mRoamingConsortiums;
}
public Credential getCredential() {
return mCredential;
}
public Map<String, Long> getSSIDs() {
return mSSIDs;
}
public Collection<String> getOtherHomePartners() {
return mOtherHomePartners;
}
public Set<Long> getMatchAnyOIs() {
return mMatchAnyOIs;
}
public List<Long> getMatchAllOIs() {
return mMatchAllOIs;
}
public String getIconURL() {
return mIconURL;
}
public boolean deepEquals(HomeSP other) {
return mFQDN.equals(other.mFQDN) &&
mSSIDs.equals(other.mSSIDs) &&
mOtherHomePartners.equals(other.mOtherHomePartners) &&
mRoamingConsortiums.equals(other.mRoamingConsortiums) &&
mMatchAnyOIs.equals(other.mMatchAnyOIs) &&
mMatchAllOIs.equals(other.mMatchAllOIs) &&
mFriendlyName.equals(other.mFriendlyName) &&
Utils.compare(mIconURL, other.mIconURL) == 0 &&
mCredential.equals(other.mCredential);
}
@Override
public boolean equals(Object thatObject) {
if (this == thatObject) {
return true;
} else if (thatObject == null || getClass() != thatObject.getClass()) {
return false;
}
HomeSP that = (HomeSP) thatObject;
return mFQDN.equals(that.mFQDN);
}
@Override
public int hashCode() {
return mFQDN.hashCode();
}
@Override
public String toString() {
return "HomeSP{" +
"SSIDs=" + mSSIDs +
", FQDN='" + mFQDN + '\'' +
", DomainMatcher=" + mDomainMatcher +
", RoamingConsortiums={" + Utils.roamingConsortiumsToString(mRoamingConsortiums) +
'}' +
", MatchAnyOIs={" + Utils.roamingConsortiumsToString(mMatchAnyOIs) + '}' +
", MatchAllOIs={" + Utils.roamingConsortiumsToString(mMatchAllOIs) + '}' +
", Credential=" + mCredential +
", FriendlyName='" + mFriendlyName + '\'' +
", IconURL='" + mIconURL + '\'' +
'}';
}
}