package co.mwater.clientapp.dbsync;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.net.Uri;
public abstract class SyncContentProvider extends ContentProvider {
protected SyncDatabaseHelper helper;
UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
List<UriHandler> uriHandlers;
public SyncContentProvider() {
uriHandlers = new ArrayList<UriHandler>();
}
@Override
public abstract boolean onCreate();
protected abstract String getAuthority();
// protected abstract SyncDatabaseHelper createHelper(Context context);
protected void addUriHandler(String path, UriHandler uriHandler) {
uriMatcher.addURI(getAuthority(), path, uriHandlers.size());
uriHandlers.add(uriHandler);
}
@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
int match = uriMatcher.match(uri);
if (match >= 0 && match < uriHandlers.size())
return uriHandlers.get(match).query(uri, projection, selection, selectionArgs, sortOrder);
throw new IllegalArgumentException("Unknown URI: " + uri);
}
@Override
public Uri insert(Uri uri, ContentValues values) {
int match = uriMatcher.match(uri);
if (match >= 0 && match < uriHandlers.size())
return uriHandlers.get(match).insert(uri, values);
throw new IllegalArgumentException("Unknown URI: " + uri);
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
int match = uriMatcher.match(uri);
if (match >= 0 && match < uriHandlers.size())
return uriHandlers.get(match).update(uri, values, selection, selectionArgs);
throw new IllegalArgumentException("Unknown URI: " + uri);
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int match = uriMatcher.match(uri);
if (match >= 0 && match < uriHandlers.size())
return uriHandlers.get(match).delete(uri, selection, selectionArgs);
throw new IllegalArgumentException("Unknown URI: " + uri);
}
}