package uk.co.imallan.tuchongdaily.provider;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import uk.co.imallan.tuchongdaily.db.DBHelper;
/**
* Created by allan on 15/2/20.
*/
public abstract class AbstractProvider extends ContentProvider {
protected static final String CONTENT_URI_BASE = "content://";
protected static final String TYPE_LIST_BASE = "vnd.android.cursor.dir/vnd.tuchongdaily.";
protected static final String TYPE_ITEM_BASE = "vnd.android.cursor.item/vnd.tuchongdaily.";
protected static final String URI_ID = "id";
protected UriMatcher uriMatcher;
private DBHelper dbHelper;
private SQLiteDatabase dbRead;
private SQLiteDatabase dbWrite;
private static UriMatcher buildUriMatcher() {
return new UriMatcher(UriMatcher.NO_MATCH);
}
public static String getAuthority(Class objectClass) {
return objectClass.getCanonicalName();
}
@Override
public boolean onCreate() {
dbHelper = DBHelper.instance(getContext());
uriMatcher = buildUriMatcher();
return true;
}
protected SQLiteDatabase getReadableDatabase() {
if (dbRead == null || !dbRead.isOpen()) {
dbRead = dbHelper.getReadableDatabase();
}
return dbRead;
}
protected SQLiteDatabase getWritableDatabase() {
if (dbWrite == null || !dbWrite.isOpen()) {
dbWrite = dbHelper.getWritableDatabase();
}
return dbWrite;
}
@Override
public int bulkInsert(Uri uri, @SuppressWarnings("NullableProblems") ContentValues[] values) {
SQLiteDatabase db = getWritableDatabase();
db.beginTransaction();
int insertedOrUpdated = super.bulkInsert(uri, values);
db.setTransactionSuccessful();
db.endTransaction();
return insertedOrUpdated;
}
}