package novoda.android.typewriter.content;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import java.util.List;
import novoda.android.typewriter.cursor.CursorList;
public class TypedResolver {
private final ContentResolver resolver;
public TypedResolver(ContentResolver resolver) {
this.resolver = resolver;
}
public <T> T get(Uri uri, Class<T> type) {
return get(uri, null, null, null, type);
}
public <T> T get(Uri uri, String[] projection, Class<T> type) {
return get(uri, projection, null, null, type);
}
public <T> T get(Uri uri, String selection, String[] selectionArgs, Class<T> type) {
return get(uri, null, selection, selectionArgs, type);
}
public <T> T get(Uri uri, String[] projection, String selection, String[] selectionArgs, Class<T> type) {
final Cursor cursor = resolver.query(uri, projection, selection, selectionArgs, null);
return new CursorList<T>(cursor, type).get(0);
}
public <T> List<T> query(Uri uri, Class<T> type) {
return query(uri, null, null, type);
}
public <T> List<T> query(Uri uri, String selection, String[] selectionArgs, Class<T> type) {
return query(uri, null, selection, selectionArgs, null, type);
}
public <T> List<T> query(Uri uri, String[] projection, String selection, String[] selectionArgs, Class<T> type) {
return query(uri, projection, selection, selectionArgs, null, type);
}
public <T> List<T> query(Uri uri, String selection, String[] selectionArgs, String sortOrder, Class<T> type) {
return query(uri, null, selection, selectionArgs, sortOrder, type);
}
public <T> List<T> query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder, Class<T> type) {
final Cursor cursor = resolver.query(uri, projection, selection, selectionArgs, sortOrder);
return new CursorList<T>(cursor, type);
}
}