BatchOperation.java revision 15ef1a8091c1557f175575671a5af62420088944
100bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi/* 200bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi * Copyright (C) 2010 The Android Open Source Project 315ef1a8091c1557f175575671a5af62420088944John Evans * 400bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi * Licensed under the Apache License, Version 2.0 (the "License"); you may not 500bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi * use this file except in compliance with the License. You may obtain a copy of 600bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi * the License at 715ef1a8091c1557f175575671a5af62420088944John Evans * 800bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi * http://www.apache.org/licenses/LICENSE-2.0 915ef1a8091c1557f175575671a5af62420088944John Evans * 1000bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi * Unless required by applicable law or agreed to in writing, software 1100bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 1200bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 1300bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi * License for the specific language governing permissions and limitations under 1400bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi * the License. 1500bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi */ 1600bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshipackage com.example.android.samplesync.platform; 1700bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi 1800bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshiimport android.content.ContentProviderOperation; 1915ef1a8091c1557f175575671a5af62420088944John Evansimport android.content.ContentProviderResult; 2000bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshiimport android.content.ContentResolver; 2100bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshiimport android.content.Context; 2200bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshiimport android.content.OperationApplicationException; 2315ef1a8091c1557f175575671a5af62420088944John Evansimport android.net.Uri; 2400bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshiimport android.os.RemoteException; 2500bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshiimport android.provider.ContactsContract; 2600bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshiimport android.util.Log; 2700bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi 2800bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshiimport java.util.ArrayList; 2900bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi 3000bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi/** 3100bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi * This class handles execution of batch mOperations on Contacts provider. 3200bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi */ 33c51da235c20bab67ad1ef23884f36bb76740f3a0Megha Joshifinal public class BatchOperation { 34c51da235c20bab67ad1ef23884f36bb76740f3a0Megha Joshi 3500bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi private final String TAG = "BatchOperation"; 3600bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi 3700bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi private final ContentResolver mResolver; 38c51da235c20bab67ad1ef23884f36bb76740f3a0Megha Joshi 3900bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi // List for storing the batch mOperations 40c51da235c20bab67ad1ef23884f36bb76740f3a0Megha Joshi private final ArrayList<ContentProviderOperation> mOperations; 4100bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi 4200bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi public BatchOperation(Context context, ContentResolver resolver) { 4300bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi mResolver = resolver; 4400bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi mOperations = new ArrayList<ContentProviderOperation>(); 4500bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi } 4600bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi 4700bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi public int size() { 4800bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi return mOperations.size(); 4900bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi } 5000bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi 5100bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi public void add(ContentProviderOperation cpo) { 5200bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi mOperations.add(cpo); 5300bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi } 5400bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi 5515ef1a8091c1557f175575671a5af62420088944John Evans public Uri execute() { 5615ef1a8091c1557f175575671a5af62420088944John Evans Uri result = null; 57c51da235c20bab67ad1ef23884f36bb76740f3a0Megha Joshi 5800bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi if (mOperations.size() == 0) { 5915ef1a8091c1557f175575671a5af62420088944John Evans return result; 6000bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi } 6100bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi // Apply the mOperations to the content provider 6200bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi try { 6315ef1a8091c1557f175575671a5af62420088944John Evans ContentProviderResult[] results = mResolver.applyBatch(ContactsContract.AUTHORITY, 6415ef1a8091c1557f175575671a5af62420088944John Evans mOperations); 6515ef1a8091c1557f175575671a5af62420088944John Evans if ((results != null) && (results.length > 0)) 6615ef1a8091c1557f175575671a5af62420088944John Evans result = results[0].uri; 6700bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi } catch (final OperationApplicationException e1) { 6800bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi Log.e(TAG, "storing contact data failed", e1); 6900bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi } catch (final RemoteException e2) { 7000bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi Log.e(TAG, "storing contact data failed", e2); 7100bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi } 7200bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi mOperations.clear(); 7315ef1a8091c1557f175575671a5af62420088944John Evans return result; 7400bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi } 7500bf0f0296b6691a9ed93fa46eccf316f7b0222eMegha Joshi} 76