diff --git a/ProviGen/src/com/tjeannin/provigen/ProviGenProvider.java b/ProviGen/src/com/tjeannin/provigen/ProviGenProvider.java index a997de3..6c39a9a 100644 --- a/ProviGen/src/com/tjeannin/provigen/ProviGenProvider.java +++ b/ProviGen/src/com/tjeannin/provigen/ProviGenProvider.java @@ -1,9 +1,14 @@ package com.tjeannin.provigen; +import java.util.ArrayList; + import android.annotation.SuppressLint; import android.content.ContentProvider; +import android.content.ContentProviderOperation; +import android.content.ContentProviderResult; import android.content.ContentUris; import android.content.ContentValues; +import android.content.OperationApplicationException; import android.content.UriMatcher; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; @@ -308,4 +313,28 @@ private static String[] appendToStringArray(String[] array, String element) { } } + /** + * Apply a batch of uri's within a database transaction + * @param operations + * @return + */ + @Override + public ContentProviderResult[] applyBatch(ArrayList operations) + throws OperationApplicationException { + SQLiteDatabase db = openHelper.getWritableDatabase(); + db.beginTransaction(); + try { + int numOperations = operations.size(); + ContentProviderResult[] results = new ContentProviderResult[numOperations]; + for (int i = 0; i < numOperations; i++) { + results[i] = operations.get(i).apply(this, results, i); + //db.yieldIfContendedSafely(); + } + db.setTransactionSuccessful(); + return results; + } finally { + db.endTransaction(); + } + } + }