package by.istin.android.xcore.processor; import android.content.ContentValues; import android.content.Context; import android.net.Uri; import by.istin.android.xcore.provider.ModelContract; import by.istin.android.xcore.source.DataSourceRequest; public abstract class AbstractDBProcessor<Result, DataSourceResult> implements IProcessor<Result, DataSourceResult> { public static void clearEntity(Context context, DataSourceRequest dataSourceRequest, Class<?> clazz) { clearEntity(context, dataSourceRequest, clazz, false); } public static void clearEntity(Context context, DataSourceRequest dataSourceRequest, Class<?> clazz, boolean withNotify) { clearEntity(context, dataSourceRequest, clazz, null, null, withNotify); } public static void clearEntity(Context context, DataSourceRequest dataSourceRequest, Class<?> clazz, String selection, String[] selectionArgs, boolean withNotify) { Uri deleteUrl = null; if (withNotify) { deleteUrl = ModelContract.getUri(clazz); } else { deleteUrl = new ModelContract.UriBuilder(clazz).notNotifyChanges().build(); } context.getContentResolver().delete(ModelContract.getUri(dataSourceRequest, deleteUrl), selection, selectionArgs); } public static void bulkInsert(Context context, DataSourceRequest dataSourceRequest, Class<?> clazz, ContentValues[] result) { bulkInsert(context, dataSourceRequest, clazz, result, true); } public static void bulkInsert(Context context, DataSourceRequest dataSourceRequest, Class<?> clazz, ContentValues[] result, boolean withNotify) { Uri uri = null; if (withNotify) { uri = ModelContract.getUri(dataSourceRequest, clazz); } else { uri = new ModelContract.UriBuilder(ModelContract.getUri(dataSourceRequest, clazz)).notNotifyChanges().build(); } int rows = context.getContentResolver().bulkInsert(uri, result); if (rows == 0) { context.getContentResolver().notifyChange(ModelContract.getUri(clazz), null); } } public static void notifyChange(Context context, Class<?> clazz) { context.getContentResolver().notifyChange(ModelContract.getUri(clazz), null); } }