/*
*
* * Copyright 2015. Appsi Mobile
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package com.appsimobile.appsii.module.home;
import android.content.ContentProviderOperation;
import android.content.ContentUris;
import android.content.ContentValues;
import android.net.Uri;
import android.support.v4.util.SimpleArrayMap;
import com.appsimobile.appsii.module.home.HomeAdapter.Operation;
import java.util.ArrayList;
/**
* Created by nick on 11/03/15.
*/
public class TestOpsBuilder implements HomeAdapter.OpsBuilder {
final ArrayList<OperationWrapper> mOperationWrappers = new ArrayList<>();
void reset() {
mOperationWrappers.clear();
}
@Override
public Operation newInsert(Uri uri) {
OperationWrapper operation = OperationWrapper.newInsert(uri);
mOperationWrappers.add(operation);
return operation;
}
@Override
public Operation newDelete(Uri uri) {
OperationWrapper operation = OperationWrapper.newDelete(uri);
mOperationWrappers.add(operation);
return operation;
}
@Override
public Operation newUpdate(Uri uri) {
OperationWrapper operation = OperationWrapper.newUpdate(uri);
mOperationWrappers.add(operation);
return operation;
}
static class OperationWrapper implements Operation {
static final int TYPE_INSERT = 0;
static final int TYPE_UPDATE = 1;
static final int TYPE_DELETE = 2;
final Uri mUri;
final int mType;
final ContentProviderOperation.Builder mBuilder;
final ContentValues mContentValues = new ContentValues();
final SimpleArrayMap<String, Integer> mBackReferences = new SimpleArrayMap<>();
public OperationWrapper(ContentProviderOperation.Builder builder, int type, Uri uri) {
mBuilder = builder;
mType = type;
mUri = uri;
}
static OperationWrapper newInsert(Uri uri) {
return new OperationWrapper(ContentProviderOperation.newInsert(uri), TYPE_INSERT, uri);
}
static OperationWrapper newDelete(Uri uri) {
return new OperationWrapper(ContentProviderOperation.newDelete(uri), TYPE_DELETE, uri);
}
static OperationWrapper newUpdate(Uri uri) {
return new OperationWrapper(ContentProviderOperation.newUpdate(uri), TYPE_UPDATE, uri);
}
long uriId() {
return ContentUris.parseId(mUri);
}
@Override
public Operation withValue(String position, int value) {
mContentValues.put(position, value);
mBuilder.withValue(position, value);
return this;
}
@Override
public Operation withValue(String position, long value) {
mContentValues.put(position, value);
mBuilder.withValue(position, value);
return this;
}
@Override
public Operation withValueBackReference(String columnName, int resultIdx) {
mBackReferences.put(columnName, resultIdx);
mBuilder.withValueBackReference(columnName, resultIdx);
return this;
}
@Override
public Operation withSelection(String selection, String[] selectionArgs) {
mBuilder.withSelection(selection, selectionArgs);
return this;
}
@Override
public ContentProviderOperation build() {
return mBuilder.build();
}
}
}