• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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