1 /* 2 * Copyright (C) 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.internal.telephony.cdnr; 18 19 import android.os.Parcel; 20 import android.os.Parcelable; 21 import android.telephony.Rlog; 22 23 import java.util.Objects; 24 25 /** 26 * A container of carrier display name. 27 */ 28 public class CarrierDisplayNameData implements Parcelable { 29 30 private static final String LOG_TAG = "CarrierDisplayNameData"; 31 32 /** Service provider name. */ 33 private final String mSpn; 34 35 /** Data service provider name. */ 36 private final String mDataSpn; 37 38 /** PLMN network name */ 39 private final String mPlmn; 40 41 /** {@code True} if display service provider name is required. */ 42 private final boolean mShowSpn; 43 44 /** {@code True} if display PLMN network name is required. */ 45 private final boolean mShowPlmn; 46 CarrierDisplayNameData( String spn, String dataSpn, boolean showSpn, String plmn, boolean showPlmn)47 private CarrierDisplayNameData( 48 String spn, String dataSpn, boolean showSpn, String plmn, boolean showPlmn) { 49 final String logString = "Data SPN must be provided if SPN is provided"; 50 if (spn != null && dataSpn == null) { 51 Rlog.e(LOG_TAG, logString); 52 if (android.os.Build.isDebuggable()) { 53 throw new IllegalArgumentException(logString); 54 } else { 55 dataSpn = spn; 56 } 57 } 58 59 this.mSpn = spn; 60 this.mDataSpn = dataSpn; 61 this.mShowSpn = showSpn; 62 this.mPlmn = plmn; 63 this.mShowPlmn = showPlmn; 64 } 65 66 /** 67 * Get the service provider name. 68 * @return service provider name. 69 */ getSpn()70 public String getSpn() { 71 return mSpn; 72 } 73 74 /** 75 * Get the service provider name of data provider. 76 * @return service provider name of data provider. 77 */ getDataSpn()78 public String getDataSpn() { 79 return mDataSpn; 80 } 81 82 /** 83 * Get the PLMN network name. 84 * @return PLMN network name. 85 */ getPlmn()86 public String getPlmn() { 87 return mPlmn; 88 } 89 90 /** 91 * Whether the spn should be displayed. 92 * @return 93 */ shouldShowSpn()94 public boolean shouldShowSpn() { 95 return mShowSpn; 96 } 97 98 /** 99 * Whether the PLMN should be displayed. 100 * @return 101 */ shouldShowPlmn()102 public boolean shouldShowPlmn() { 103 return mShowPlmn; 104 } 105 106 @Override toString()107 public String toString() { 108 return String.format("{ spn = %s, dataSpn = %s, showSpn = %b, plmn = %s, showPlmn = %b", 109 mSpn, mDataSpn, mShowSpn, mPlmn, mShowPlmn); 110 } 111 112 @Override describeContents()113 public int describeContents() { 114 return 0; 115 } 116 117 @Override writeToParcel(Parcel dest, int flags)118 public void writeToParcel(Parcel dest, int flags) { 119 dest.writeString(mSpn); 120 dest.writeString(mDataSpn); 121 dest.writeString(mPlmn); 122 dest.writeBoolean(mShowSpn); 123 dest.writeBoolean(mShowPlmn); 124 } 125 CarrierDisplayNameData(Parcel source)126 private CarrierDisplayNameData(Parcel source) { 127 mSpn = source.readString(); 128 mDataSpn = source.readString(); 129 mPlmn = source.readString(); 130 mShowSpn = source.readBoolean(); 131 mShowPlmn = source.readBoolean(); 132 } 133 134 public static final Parcelable.Creator<CarrierDisplayNameData> CREATOR = 135 new Creator<CarrierDisplayNameData>() { 136 @Override 137 public CarrierDisplayNameData createFromParcel(Parcel source) { 138 return new CarrierDisplayNameData(source); 139 } 140 141 @Override 142 public CarrierDisplayNameData[] newArray(int size) { 143 return new CarrierDisplayNameData[size]; 144 } 145 }; 146 147 @Override equals(Object o)148 public boolean equals(Object o) { 149 if (this == o) return true; 150 if (o == null || getClass() != o.getClass()) return false; 151 CarrierDisplayNameData that = (CarrierDisplayNameData) o; 152 return mShowSpn == that.mShowSpn 153 && mShowPlmn == that.mShowPlmn 154 && Objects.equals(mSpn, that.mSpn) 155 && Objects.equals(mDataSpn, that.mDataSpn) 156 && Objects.equals(mPlmn, that.mPlmn); 157 } 158 159 @Override hashCode()160 public int hashCode() { 161 return Objects.hash(mSpn, mDataSpn, mPlmn, mShowSpn, mShowPlmn); 162 } 163 164 /** Builder class for {@link com.android.internal.telephony.cdnr.CarrierDisplayNameData}. */ 165 public static final class Builder { 166 private String mSpn; 167 private String mDataSpn; 168 private String mPlmn; 169 private boolean mShowSpn; 170 private boolean mShowPlmn; 171 Builder()172 public Builder() { 173 mSpn = null; 174 mDataSpn = null; 175 mPlmn = null; 176 mShowPlmn = false; 177 mShowSpn = false; 178 } 179 180 /** Create a {@link com.android.internal.telephony.cdnr.CarrierDisplayNameData} instance. */ build()181 public CarrierDisplayNameData build() { 182 return new CarrierDisplayNameData(mSpn, mDataSpn, mShowSpn, mPlmn, mShowPlmn); 183 } 184 185 /** Set service provider name. */ setSpn(String spn)186 public Builder setSpn(String spn) { 187 mSpn = spn; 188 return this; 189 } 190 191 /** Set data service provider name. */ setDataSpn(String dataSpn)192 public Builder setDataSpn(String dataSpn) { 193 mDataSpn = dataSpn; 194 return this; 195 } 196 197 /** Set PLMN network name. */ setPlmn(String plmn)198 public Builder setPlmn(String plmn) { 199 mPlmn = plmn; 200 return this; 201 } 202 203 /** Set whether the service provider name should be displayed. */ setShowSpn(boolean showSpn)204 public Builder setShowSpn(boolean showSpn) { 205 mShowSpn = showSpn; 206 return this; 207 } 208 209 /** Set whether the PLMN network name should be displayed. */ setShowPlmn(boolean showPlmn)210 public Builder setShowPlmn(boolean showPlmn) { 211 mShowPlmn = showPlmn; 212 return this; 213 } 214 } 215 } 216