Merge "Added the bulkInsert for CardContentProvider"
This commit is contained in:
@@ -61,23 +61,38 @@ public class CardContentProvider extends ContentProvider {
|
||||
|
||||
@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
|
||||
|
@@ -72,16 +72,25 @@ public class CardContentProviderTest {
|
||||
|
||||
@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 @@ public class CardContentProviderTest {
|
||||
|
||||
@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 @@ public class CardContentProviderTest {
|
||||
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 @@ public class CardContentProviderTest {
|
||||
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 @@ public class CardContentProviderTest {
|
||||
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 @@ public class CardContentProviderTest {
|
||||
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();
|
||||
|
Reference in New Issue
Block a user