aboutsummaryrefslogtreecommitdiff
path: root/src/java/com/android/ims/rcs/uce/eab/EabProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/com/android/ims/rcs/uce/eab/EabProvider.java')
-rw-r--r--src/java/com/android/ims/rcs/uce/eab/EabProvider.java47
1 files changed, 42 insertions, 5 deletions
diff --git a/src/java/com/android/ims/rcs/uce/eab/EabProvider.java b/src/java/com/android/ims/rcs/uce/eab/EabProvider.java
index 60283c22..da70349a 100644
--- a/src/java/com/android/ims/rcs/uce/eab/EabProvider.java
+++ b/src/java/com/android/ims/rcs/uce/eab/EabProvider.java
@@ -81,7 +81,7 @@ public class EabProvider extends ContentProvider {
public static final String AUTHORITY = "eab";
private static final String TAG = "EabProvider";
- private static final int DATABASE_VERSION = 2;
+ private static final int DATABASE_VERSION = 3;
public static final String EAB_CONTACT_TABLE_NAME = "eab_contact";
public static final String EAB_COMMON_TABLE_NAME = "eab_common";
@@ -332,8 +332,6 @@ public class EabProvider extends ContentProvider {
static {
CONTACT_UNIQUE_FIELDS.add(ContactColumns.PHONE_NUMBER);
-
- COMMON_UNIQUE_FIELDS.add(EabCommonColumns.EAB_CONTACT_ID);
}
@VisibleForTesting
@@ -356,8 +354,7 @@ public class EabProvider extends ContentProvider {
+ EabCommonColumns.EAB_CONTACT_ID + " INTEGER DEFAULT -1, "
+ EabCommonColumns.MECHANISM + " INTEGER DEFAULT NULL, "
+ EabCommonColumns.REQUEST_RESULT + " INTEGER DEFAULT -1, "
- + EabCommonColumns.SUBSCRIPTION_ID + " INTEGER DEFAULT -1, "
- + "UNIQUE (" + TextUtils.join(", ", COMMON_UNIQUE_FIELDS) + ")"
+ + EabCommonColumns.SUBSCRIPTION_ID + " INTEGER DEFAULT -1 "
+ ");";
@VisibleForTesting
@@ -410,6 +407,46 @@ public class EabProvider extends ContentProvider {
+ ContactColumns.CONTACT_ID + " INTEGER DEFAULT -1;");
oldVersion = 2;
}
+
+ if (oldVersion < 3) {
+ // Drop UNIQUE constraint in EAB_COMMON_TABLE, SQLite didn't support DROP
+ // constraint, so drop the old one and migrate data to new one
+
+ // Create temp table
+ final String createTempTableCommand = "CREATE TABLE temp"
+ + " ("
+ + EabCommonColumns._ID + " INTEGER PRIMARY KEY, "
+ + EabCommonColumns.EAB_CONTACT_ID + " INTEGER DEFAULT -1, "
+ + EabCommonColumns.MECHANISM + " INTEGER DEFAULT NULL, "
+ + EabCommonColumns.REQUEST_RESULT + " INTEGER DEFAULT -1, "
+ + EabCommonColumns.SUBSCRIPTION_ID + " INTEGER DEFAULT -1 "
+ + ");";
+ sqLiteDatabase.execSQL(createTempTableCommand);
+
+ // Migrate data to temp table
+ sqLiteDatabase.execSQL("INSERT INTO temp ("
+ + EabCommonColumns._ID + ", "
+ + EabCommonColumns.EAB_CONTACT_ID + ", "
+ + EabCommonColumns.MECHANISM + ", "
+ + EabCommonColumns.REQUEST_RESULT + ", "
+ + EabCommonColumns.SUBSCRIPTION_ID + ") "
+ + " SELECT "
+ + EabCommonColumns._ID + ", "
+ + EabCommonColumns.EAB_CONTACT_ID + ", "
+ + EabCommonColumns.MECHANISM + ", "
+ + EabCommonColumns.REQUEST_RESULT + ", "
+ + EabCommonColumns.SUBSCRIPTION_ID + " "
+ + " FROM "
+ + EAB_COMMON_TABLE_NAME
+ +";");
+
+ // Drop old one
+ sqLiteDatabase.execSQL("DROP TABLE " + EAB_COMMON_TABLE_NAME + ";");
+
+ // Rename temp to eab_common
+ sqLiteDatabase.execSQL("ALTER TABLE temp RENAME TO " + EAB_COMMON_TABLE_NAME + ";");
+ oldVersion = 3;
+ }
}
}