| /* |
| * Copyright (C) 2010 The Android Open Source Project |
| * |
| * 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.example.android.samplesync.platform; |
| |
| import android.content.ContentProviderOperation; |
| import android.content.ContentProviderResult; |
| import android.content.ContentResolver; |
| import android.content.Context; |
| import android.content.OperationApplicationException; |
| import android.net.Uri; |
| import android.os.RemoteException; |
| import android.provider.ContactsContract; |
| import android.util.Log; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| /** |
| * This class handles execution of batch mOperations on Contacts provider. |
| */ |
| final public class BatchOperation { |
| |
| private final String TAG = "BatchOperation"; |
| |
| private final ContentResolver mResolver; |
| |
| // List for storing the batch mOperations |
| private final ArrayList<ContentProviderOperation> mOperations; |
| |
| public BatchOperation(Context context, ContentResolver resolver) { |
| mResolver = resolver; |
| mOperations = new ArrayList<ContentProviderOperation>(); |
| } |
| |
| public int size() { |
| return mOperations.size(); |
| } |
| |
| public void add(ContentProviderOperation cpo) { |
| mOperations.add(cpo); |
| } |
| |
| public List<Uri> execute() { |
| List<Uri> resultUris = new ArrayList<Uri>(); |
| |
| if (mOperations.size() == 0) { |
| return resultUris; |
| } |
| // Apply the mOperations to the content provider |
| try { |
| ContentProviderResult[] results = mResolver.applyBatch(ContactsContract.AUTHORITY, |
| mOperations); |
| if ((results != null) && (results.length > 0)){ |
| for (int i = 0; i < results.length; i++){ |
| resultUris.add(results[i].uri); |
| } |
| } |
| } catch (final OperationApplicationException e1) { |
| Log.e(TAG, "storing contact data failed", e1); |
| } catch (final RemoteException e2) { |
| Log.e(TAG, "storing contact data failed", e2); |
| } |
| mOperations.clear(); |
| return resultUris; |
| } |
| } |