1 /* 2 * Copyright (C) 2022 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.settingslib.mobile.dataservice; 18 19 import static androidx.room.ForeignKey.CASCADE; 20 21 import android.text.TextUtils; 22 23 import java.util.Objects; 24 25 import androidx.annotation.NonNull; 26 import androidx.annotation.Nullable; 27 import androidx.room.ColumnInfo; 28 import androidx.room.Entity; 29 import androidx.room.ForeignKey; 30 import androidx.room.Index; 31 import androidx.room.PrimaryKey; 32 33 @Entity(tableName = DataServiceUtils.SubscriptionInfoData.TABLE_NAME) 34 public class SubscriptionInfoEntity { SubscriptionInfoEntity(@onNull String subId, int simSlotIndex, int carrierId, String displayName, String carrierName, int dataRoaming, String mcc, String mnc, String countryIso, boolean isEmbedded, int cardId, int portIndex, boolean isOpportunistic, @Nullable String groupUUID, int subscriptionType, String uniqueName, boolean isSubscriptionVisible, String formattedPhoneNumber, boolean isFirstRemovableSubscription, boolean isDefaultSubscriptionSelection, boolean isValidSubscription, boolean isUsableSubscription, boolean isActiveSubscriptionId, boolean isAvailableSubscription, boolean isActiveDataSubscriptionId)35 public SubscriptionInfoEntity(@NonNull String subId, int simSlotIndex, int carrierId, 36 String displayName, String carrierName, int dataRoaming, String mcc, String mnc, 37 String countryIso, boolean isEmbedded, int cardId, int portIndex, 38 boolean isOpportunistic, @Nullable String groupUUID, int subscriptionType, 39 String uniqueName, boolean isSubscriptionVisible, String formattedPhoneNumber, 40 boolean isFirstRemovableSubscription, boolean isDefaultSubscriptionSelection, 41 boolean isValidSubscription, boolean isUsableSubscription, 42 boolean isActiveSubscriptionId, boolean isAvailableSubscription, 43 boolean isActiveDataSubscriptionId) { 44 this.subId = subId; 45 this.simSlotIndex = simSlotIndex; 46 this.carrierId = carrierId; 47 this.displayName = displayName; 48 this.carrierName = carrierName; 49 this.dataRoaming = dataRoaming; 50 this.mcc = mcc; 51 this.mnc = mnc; 52 this.countryIso = countryIso; 53 this.isEmbedded = isEmbedded; 54 this.cardId = cardId; 55 this.portIndex = portIndex; 56 this.isOpportunistic = isOpportunistic; 57 this.groupUUID = groupUUID; 58 this.subscriptionType = subscriptionType; 59 this.uniqueName = uniqueName; 60 this.isSubscriptionVisible = isSubscriptionVisible; 61 this.formattedPhoneNumber = formattedPhoneNumber; 62 this.isFirstRemovableSubscription = isFirstRemovableSubscription; 63 this.isDefaultSubscriptionSelection = isDefaultSubscriptionSelection; 64 this.isValidSubscription = isValidSubscription; 65 this.isUsableSubscription = isUsableSubscription; 66 this.isActiveSubscriptionId = isActiveSubscriptionId; 67 this.isAvailableSubscription = isAvailableSubscription; 68 this.isActiveDataSubscriptionId = isActiveDataSubscriptionId; 69 } 70 71 @PrimaryKey 72 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_ID, index = true) 73 @NonNull 74 public String subId; 75 76 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_SIM_SLOT_INDEX) 77 public int simSlotIndex; 78 79 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_CARRIER_ID) 80 public int carrierId; 81 82 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_DISPLAY_NAME) 83 public String displayName; 84 85 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_CARRIER_NAME) 86 public String carrierName; 87 88 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_DATA_ROAMING) 89 public int dataRoaming; 90 91 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_MCC) 92 public String mcc; 93 94 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_MNC) 95 public String mnc; 96 97 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_COUNTRY_ISO) 98 public String countryIso; 99 100 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_IS_EMBEDDED) 101 public boolean isEmbedded; 102 103 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_CARD_ID) 104 public int cardId; 105 106 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_PORT_INDEX) 107 public int portIndex; 108 109 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_IS_OPPORTUNISTIC) 110 public boolean isOpportunistic; 111 112 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_GROUP_UUID) 113 @Nullable 114 public String groupUUID; 115 116 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_SUBSCRIPTION_TYPE) 117 public int subscriptionType; 118 119 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_UNIQUE_NAME) 120 public String uniqueName; 121 122 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_IS_SUBSCRIPTION_VISIBLE) 123 public boolean isSubscriptionVisible; 124 125 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_FORMATTED_PHONE_NUMBER) 126 public String formattedPhoneNumber; 127 128 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_IS_FIRST_REMOVABLE_SUBSCRIPTION) 129 public boolean isFirstRemovableSubscription; 130 131 @ColumnInfo(name = 132 DataServiceUtils.SubscriptionInfoData.COLUMN_IS_DEFAULT_SUBSCRIPTION_SELECTION) 133 public boolean isDefaultSubscriptionSelection; 134 135 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_IS_VALID_SUBSCRIPTION) 136 public boolean isValidSubscription; 137 138 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_IS_USABLE_SUBSCRIPTION) 139 public boolean isUsableSubscription; 140 141 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_IS_ACTIVE_SUBSCRIPTION_ID) 142 public boolean isActiveSubscriptionId; 143 144 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_IS_AVAILABLE_SUBSCRIPTION) 145 public boolean isAvailableSubscription; 146 147 @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_IS_ACTIVE_DATA_SUBSCRIPTION) 148 public boolean isActiveDataSubscriptionId; 149 getSubId()150 public int getSubId() { 151 return Integer.valueOf(subId); 152 } 153 getUniqueDisplayName()154 public CharSequence getUniqueDisplayName() { 155 return uniqueName; 156 } 157 isActiveSubscription()158 public boolean isActiveSubscription() { 159 return isActiveSubscriptionId; 160 } 161 isSubscriptionVisible()162 public boolean isSubscriptionVisible() { 163 return isSubscriptionVisible; 164 } 165 166 @Override hashCode()167 public int hashCode() { 168 int result = 17; 169 result = 31 * result + subId.hashCode(); 170 result = 31 * result + simSlotIndex; 171 result = 31 * result + carrierId; 172 result = 31 * result + displayName.hashCode(); 173 result = 31 * result + carrierName.hashCode(); 174 result = 31 * result + dataRoaming; 175 result = 31 * result + mcc.hashCode(); 176 result = 31 * result + mnc.hashCode(); 177 result = 31 * result + countryIso.hashCode(); 178 result = 31 * result + Boolean.hashCode(isEmbedded); 179 result = 31 * result + cardId; 180 result = 31 * result + portIndex; 181 result = 31 * result + Boolean.hashCode(isOpportunistic); 182 result = 31 * result + groupUUID.hashCode(); 183 result = 31 * result + subscriptionType; 184 result = 31 * result + uniqueName.hashCode(); 185 result = 31 * result + Boolean.hashCode(isSubscriptionVisible); 186 result = 31 * result + formattedPhoneNumber.hashCode(); 187 result = 31 * result + Boolean.hashCode(isFirstRemovableSubscription); 188 result = 31 * result + Boolean.hashCode(isDefaultSubscriptionSelection); 189 result = 31 * result + Boolean.hashCode(isValidSubscription); 190 result = 31 * result + Boolean.hashCode(isUsableSubscription); 191 result = 31 * result + Boolean.hashCode(isActiveSubscriptionId); 192 result = 31 * result + Boolean.hashCode(isAvailableSubscription); 193 result = 31 * result + Boolean.hashCode(isActiveDataSubscriptionId); 194 return result; 195 } 196 197 @Override equals(Object obj)198 public boolean equals(Object obj) { 199 if (this == obj) { 200 return true; 201 } 202 if (!(obj instanceof SubscriptionInfoEntity)) { 203 return false; 204 } 205 206 SubscriptionInfoEntity info = (SubscriptionInfoEntity) obj; 207 return TextUtils.equals(subId, info.subId) 208 && simSlotIndex == info.simSlotIndex 209 && carrierId == info.carrierId 210 && TextUtils.equals(displayName, info.displayName) 211 && TextUtils.equals(carrierName, info.carrierName) 212 && dataRoaming == info.dataRoaming 213 && TextUtils.equals(mcc, info.mcc) 214 && TextUtils.equals(mnc, info.mnc) 215 && TextUtils.equals(countryIso, info.countryIso) 216 && isEmbedded == info.isEmbedded 217 && cardId == info.cardId 218 && portIndex == info.portIndex 219 && isOpportunistic == info.isOpportunistic 220 && TextUtils.equals(groupUUID, info.groupUUID) 221 && subscriptionType == info.subscriptionType 222 && TextUtils.equals(uniqueName, info.uniqueName) 223 && isSubscriptionVisible == info.isSubscriptionVisible 224 && TextUtils.equals(formattedPhoneNumber, info.formattedPhoneNumber) 225 && isFirstRemovableSubscription == info.isFirstRemovableSubscription 226 && isDefaultSubscriptionSelection == info.isDefaultSubscriptionSelection 227 && isValidSubscription == info.isValidSubscription 228 && isUsableSubscription == info.isUsableSubscription 229 && isActiveSubscriptionId == info.isActiveSubscriptionId 230 && isAvailableSubscription == info.isAvailableSubscription 231 && isActiveDataSubscriptionId == info.isActiveDataSubscriptionId; 232 } 233 toString()234 public String toString() { 235 StringBuilder builder = new StringBuilder(); 236 builder.append(" {SubscriptionInfoEntity(subId = ") 237 .append(subId) 238 .append(", simSlotIndex = ") 239 .append(simSlotIndex) 240 .append(", carrierId = ") 241 .append(carrierId) 242 .append(", displayName = ") 243 .append(displayName) 244 .append(", carrierName = ") 245 .append(carrierName) 246 .append(", dataRoaming = ") 247 .append(dataRoaming) 248 .append(", mcc = ") 249 .append(mcc) 250 .append(", mnc = ") 251 .append(mnc) 252 .append(", countryIso = ") 253 .append(countryIso) 254 .append(", isEmbedded = ") 255 .append(isEmbedded) 256 .append(", cardId = ") 257 .append(cardId) 258 .append(", portIndex = ") 259 .append(portIndex) 260 .append(", isOpportunistic = ") 261 .append(isOpportunistic) 262 .append(", groupUUID = ") 263 .append(groupUUID) 264 .append(", subscriptionType = ") 265 .append(subscriptionType) 266 .append(", uniqueName = ") 267 .append(uniqueName) 268 .append(", isSubscriptionVisible = ") 269 .append(isSubscriptionVisible) 270 .append(", formattedPhoneNumber = ") 271 .append(formattedPhoneNumber) 272 .append(", isFirstRemovableSubscription = ") 273 .append(isFirstRemovableSubscription) 274 .append(", isDefaultSubscriptionSelection = ") 275 .append(isDefaultSubscriptionSelection) 276 .append(", isValidSubscription = ") 277 .append(isValidSubscription) 278 .append(", isUsableSubscription = ") 279 .append(isUsableSubscription) 280 .append(", isActiveSubscriptionId = ") 281 .append(isActiveSubscriptionId) 282 .append(", isAvailableSubscription = ") 283 .append(isAvailableSubscription) 284 .append(", isActiveDataSubscriptionId = ") 285 .append(isActiveDataSubscriptionId) 286 .append(")}"); 287 return builder.toString(); 288 } 289 } 290