package io.pivotal.arca.dispatcher; import android.database.Cursor; import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; import io.pivotal.arca.utils.ArrayUtils; import io.pivotal.arca.utils.StringUtils; public class Query extends Request<Cursor> implements Parcelable { private String[] mProjection; private String mWhereClause; private String[] mWhereArgs; private String mSortOrder; private boolean mForceUpdate; public Query(final Uri uri) { super(uri); } public Query(final Uri uri, final int identifier) { super(uri, identifier); } public Query(final Parcel in) { super(in); mProjection = in.createStringArray(); mWhereClause = in.readString(); mWhereArgs = in.createStringArray(); mSortOrder = in.readString(); mForceUpdate = in.readInt() == 1; } @Override public void writeToParcel(final Parcel dest, final int flags) { super.writeToParcel(dest, flags); dest.writeStringArray(mProjection); dest.writeString(mWhereClause); dest.writeStringArray(mWhereArgs); dest.writeString(mSortOrder); dest.writeInt(mForceUpdate ? 1 : 0); } public void setProjection(final String[] projection) { mProjection = projection; } public void setWhere(final String whereClause, final String... whereArgs) { mWhereClause = whereClause; mWhereArgs = whereArgs; } public void addWhere(final String whereClause, final String... whereArgs) { mWhereClause = StringUtils.append(mWhereClause, whereClause, " AND "); mWhereArgs = ArrayUtils.append(mWhereArgs, whereArgs); } public void setSortOrder(final String sortOrder) { mSortOrder = sortOrder; } public void setForceUpdate(final boolean forceUpdate) { mForceUpdate = forceUpdate; } public boolean shouldForceUpdate() { return mForceUpdate; } public String[] getProjection() { return mProjection; } public String getWhereClause() { return mWhereClause; } public String[] getWhereArgs() { return mWhereArgs; } public String getSortOrder() { return mSortOrder; } public static final Creator<Query> CREATOR = new Creator<Query>() { @Override public Query createFromParcel(final Parcel in) { return new Query(in); } @Override public Query[] newArray(final int size) { return new Query[size]; } }; }