package ninja.ugly.prevail.chunk; import android.content.ContentValues; import android.content.Entity; import android.database.Cursor; import android.database.DatabaseUtils; import android.os.RemoteException; import com.google.common.base.Function; import com.google.common.collect.Iterators; import java.io.IOException; import java.util.Iterator; public class CursorQueryResult implements QueryResult { private final Cursor mCursor; public CursorQueryResult(Cursor cursor) { mCursor = cursor; } @Override public boolean isClosed() { return mCursor.isClosed(); } @Override public void close() throws IOException { mCursor.close(); } @Override public Iterator<ContentValues> iterator() { Function<Entity, ContentValues> function = new Function<Entity, ContentValues>() { @Override public ContentValues apply(Entity input) { return input.getEntityValues(); } }; CursorEntityIterator iterator = new CursorEntityIterator(mCursor) { @Override public Entity getEntityAndIncrementCursor(Cursor cursor) throws RemoteException { ContentValues values = new ContentValues(); DatabaseUtils.cursorRowToContentValues(cursor, values); return new Entity(values); } }; return Iterators.transform(iterator, function); } }