package io.pivotal.arca.dispatcher; import android.content.ContentResolver; import android.database.Cursor; public interface RequestExecutor { public QueryResult execute(Query request); public UpdateResult execute(Update request); public InsertResult execute(Insert request); public DeleteResult execute(Delete request); public static class DefaultRequestExecutor implements RequestExecutor { private final ContentResolver mResolver; public DefaultRequestExecutor(final ContentResolver resolver) { mResolver = resolver; } protected ContentResolver getContentResolver() { return mResolver; } @Override public QueryResult execute(final Query request) { final ContentResolver resolver = getContentResolver(); final Cursor cursor = resolver.query(request.getUri(), request.getProjection(), request.getWhereClause(), request.getWhereArgs(), request.getSortOrder()); if (cursor != null) cursor.getCount(); return new QueryResult(cursor); } @Override public UpdateResult execute(final Update request) { final ContentResolver resolver = getContentResolver(); final int count = resolver.update(request.getUri(), request.getContentValues(), request.getWhereClause(), request.getWhereArgs()); return new UpdateResult(count); } @Override public InsertResult execute(final Insert request) { final ContentResolver resolver = getContentResolver(); final int count = resolver.bulkInsert(request.getUri(), request.getContentValues()); return new InsertResult(count); } @Override public DeleteResult execute(final Delete request) { final ContentResolver resolver = getContentResolver(); final int count = resolver.delete(request.getUri(), request.getWhereClause(), request.getWhereArgs()); return new DeleteResult(count); } } }