package com.getbase.android.db.provider; import com.google.common.base.Joiner; import com.google.common.collect.Collections2; import android.content.ContentProviderOperation; import android.content.ContentProviderOperation.Builder; import android.net.Uri; import android.os.RemoteException; import java.util.Collection; public class Delete extends ProviderAction<Integer> implements ConvertibleToOperation { private final Selection selection = new Selection(); Delete(Uri uri) { super(uri); } @SafeVarargs public final <T> Delete where(String selection, T... selectionArgs) { this.selection.append(selection, selectionArgs); return this; } public <T> Delete whereIn(String column, Collection<T> collection) { this.selection.append(column + " IN (" + Joiner.on(",").join(Collections2.transform(collection, Utils.toEscapedSqlFunction())) + ")"); return this; } @Override public Integer perform(CrudHandler crudHandler) throws RemoteException { return crudHandler.delete(getUri(), selection.getSelection(), selection.getSelectionArgs()); } @Override public ContentProviderOperation toContentProviderOperation(UriDecorator uriDecorator) { return toContentProviderOperationBuilder(uriDecorator).build(); } @Override public Builder toContentProviderOperationBuilder(UriDecorator uriDecorator) { return ContentProviderOperation.newDelete(uriDecorator.decorate(getUri())) .withSelection(selection.getSelection(), selection.getSelectionArgs()); } }