// Copyright 2015 The Project Buendia Authors // // Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy // of the License at: http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software distrib- // uted under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES // OR CONDITIONS OF ANY KIND, either express or implied. See the License for // specific language governing permissions and limitations under the License. package org.projectbuendia.client.providers; import android.content.ContentProvider; import android.content.ContentResolver; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import net.sqlcipher.database.SQLiteOpenHelper; /** A {@link ContentProvider} that delegates responsibility to {@link ProviderDelegate}s. */ abstract class DelegatingProvider<T extends SQLiteOpenHelper> extends ContentProvider { private ProviderDelegateRegistry<T> mRegistry; protected ContentResolver mContentResolver; protected T mDatabaseHelper; @Override public boolean onCreate() { mRegistry = getRegistry(); mDatabaseHelper = getDatabaseHelper(); mContentResolver = getContext().getContentResolver(); return true; } protected abstract ProviderDelegateRegistry<T> getRegistry(); protected abstract T getDatabaseHelper(); @Override public String getType(Uri uri) { return mRegistry.getDelegate(uri).getType(); } @Override public Cursor query( Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { return mRegistry.getDelegate(uri) .query( mDatabaseHelper, mContentResolver, uri, projection, selection, selectionArgs, sortOrder); } @Override public Uri insert(Uri uri, ContentValues values) { return mRegistry.getDelegate(uri) .insert(mDatabaseHelper, mContentResolver, uri, values); } @Override public int bulkInsert(Uri uri, ContentValues[] values) { return mRegistry.getDelegate(uri) .bulkInsert(mDatabaseHelper, mContentResolver, uri, values); } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { return mRegistry.getDelegate(uri) .delete(mDatabaseHelper, mContentResolver, uri, selection, selectionArgs); } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { return mRegistry.getDelegate(uri) .update( mDatabaseHelper, mContentResolver, uri, values, selection, selectionArgs); } }