Merge "Added the bulkInsert for CardContentProvider"
diff --git a/src/com/android/settings/homepage/CardContentProvider.java b/src/com/android/settings/homepage/CardContentProvider.java
index 640a00b..7b08756 100644
--- a/src/com/android/settings/homepage/CardContentProvider.java
+++ b/src/com/android/settings/homepage/CardContentProvider.java
@@ -61,23 +61,38 @@
@Override
public Uri insert(Uri uri, ContentValues values) {
+ final ContentValues[] cvs = {values};
+ bulkInsert(uri, cvs);
+ return uri;
+ }
+
+ @Override
+ public int bulkInsert(Uri uri, ContentValues[] values) {
final StrictMode.ThreadPolicy oldPolicy = StrictMode.getThreadPolicy();
+ int numInserted = 0;
+ final SQLiteDatabase database = mDBHelper.getWritableDatabase();
+
try {
maybeEnableStrictMode();
- final SQLiteDatabase database = mDBHelper.getWritableDatabase();
final String table = getTableFromMatch(uri);
- final long ret = database.insert(table, null, values);
- if (ret != -1) {
- getContext().getContentResolver().notifyChange(uri, null);
- } else {
- Log.e(TAG, "The CardContentProvider insertion failed! Plase check SQLiteDatabase's "
- + "message.");
+ database.beginTransaction();
+ for (ContentValues value : values) {
+ long ret = database.insert(table, null, value);
+ if (ret != -1L) {
+ numInserted++;
+ } else {
+ Log.e(TAG, "The row " + value.getAsString(CardDatabaseHelper.CardColumns.NAME)
+ + " insertion failed! Please check your data.");
+ }
}
+ database.setTransactionSuccessful();
+ getContext().getContentResolver().notifyChange(uri, null);
} finally {
+ database.endTransaction();
StrictMode.setThreadPolicy(oldPolicy);
}
- return uri;
+ return numInserted;
}
@Override
diff --git a/tests/robotests/src/com/android/settings/homepage/CardContentProviderTest.java b/tests/robotests/src/com/android/settings/homepage/CardContentProviderTest.java
index eec87b0..84955e2 100644
--- a/tests/robotests/src/com/android/settings/homepage/CardContentProviderTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/CardContentProviderTest.java
@@ -72,16 +72,25 @@
@Test
public void cardData_insert() {
- final int cnt_before_instert = getRowCount();
- mResolver.insert(mUri, insertOneRow());
- final int cnt_after_instert = getRowCount();
+ final int rowsBeforeInsert = getRowCount();
+ mResolver.insert(mUri, generateOneRow());
+ final int rowsAfterInsert = getRowCount();
- assertThat(cnt_after_instert - cnt_before_instert).isEqualTo(1);
+ assertThat(rowsAfterInsert - rowsBeforeInsert).isEqualTo(1);
+ }
+
+ @Test
+ public void cardData_bulkInsert_twoRows() {
+ final int rowsBeforeInsert = getRowCount();
+ mResolver.bulkInsert(mUri, generateTwoRows());
+ final int rowsAfterInsert = getRowCount();
+
+ assertThat(rowsAfterInsert - rowsBeforeInsert).isEqualTo(2);
}
@Test
public void cardData_query() {
- mResolver.insert(mUri, insertOneRow());
+ mResolver.insert(mUri, generateOneRow());
final int count = getRowCount();
assertThat(count).isGreaterThan(0);
@@ -89,24 +98,24 @@
@Test
public void cardData_delete() {
- mResolver.insert(mUri, insertOneRow());
- final int del_count = mResolver.delete(mUri, null, null);
+ mResolver.insert(mUri, generateOneRow());
+ final int delCount = mResolver.delete(mUri, null, null);
- assertThat(del_count).isGreaterThan(0);
+ assertThat(delCount).isGreaterThan(0);
}
@Test
public void cardData_update() {
- mResolver.insert(mUri, insertOneRow());
+ mResolver.insert(mUri, generateOneRow());
final double updatingScore = 0.87;
final ContentValues values = new ContentValues();
values.put(CardDatabaseHelper.CardColumns.SCORE, updatingScore);
final String strWhere = CardDatabaseHelper.CardColumns.NAME + "=?";
final String[] selectionArgs = {"auto_rotate"};
- final int update_count = mResolver.update(mUri, values, strWhere, selectionArgs);
+ final int updateCount = mResolver.update(mUri, values, strWhere, selectionArgs);
- assertThat(update_count).isGreaterThan(0);
+ assertThat(updateCount).isGreaterThan(0);
final String[] columns = {CardDatabaseHelper.CardColumns.SCORE};
final Cursor cr = mResolver.query(mUri, columns, strWhere, selectionArgs, null);
@@ -122,7 +131,7 @@
ShadowThreadUtils.setIsMainThread(true);
ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", true);
- mProvider.insert(mUri, insertOneRow());
+ mProvider.insert(mUri, generateOneRow());
verify(mProvider).enableStrictMode();
}
@@ -164,7 +173,7 @@
ShadowThreadUtils.setIsMainThread(false);
ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", true);
- mProvider.insert(mUri, insertOneRow());
+ mProvider.insert(mUri, generateOneRow());
verify(mProvider, never()).enableStrictMode();
}
@@ -217,10 +226,10 @@
mProvider.getTableFromMatch(invalid_Uri);
}
- private ContentValues insertOneRow() {
+ private ContentValues generateOneRow() {
final ContentValues values = new ContentValues();
values.put(CardDatabaseHelper.CardColumns.NAME, "auto_rotate");
- values.put(CardDatabaseHelper.CardColumns.TYPE, 0);
+ values.put(CardDatabaseHelper.CardColumns.TYPE, 1);
values.put(CardDatabaseHelper.CardColumns.SCORE, 0.9);
values.put(CardDatabaseHelper.CardColumns.SLICE_URI,
"content://com.android.settings.slices/action/auto_rotate");
@@ -231,6 +240,24 @@
return values;
}
+ private ContentValues[] generateTwoRows() {
+ final ContentValues[] twoRows = new ContentValues[2];
+ twoRows[0] = generateOneRow();
+
+ final ContentValues values = new ContentValues();
+ values.put(CardDatabaseHelper.CardColumns.NAME, "toggle_airplane");
+ values.put(CardDatabaseHelper.CardColumns.TYPE, 1);
+ values.put(CardDatabaseHelper.CardColumns.SCORE, 0.95);
+ values.put(CardDatabaseHelper.CardColumns.SLICE_URI,
+ "content://com.android.settings.slices/action/toggle_airplane");
+ values.put(CardDatabaseHelper.CardColumns.CATEGORY, 2);
+ values.put(CardDatabaseHelper.CardColumns.PACKAGE_NAME, "com.android.settings");
+ values.put(CardDatabaseHelper.CardColumns.APP_VERSION, "1.0.0");
+ twoRows[1] = values;
+
+ return twoRows;
+ }
+
private int getRowCount() {
final Cursor cr = mResolver.query(mUri, null, null, null);
final int count = cr.getCount();