/* * Copyright (C) 2012 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.android.providers.contacts; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.provider.ContactsContract.CommonDataKinds.Identity; import com.android.providers.contacts.aggregation.AbstractContactAggregator; /** * Handler for Identity data rows. */ public class DataRowHandlerForIdentity extends DataRowHandler { public DataRowHandlerForIdentity(Context context, ContactsDatabaseHelper dbHelper, AbstractContactAggregator aggregator) { super(context, dbHelper, aggregator, Identity.CONTENT_ITEM_TYPE); } @Override public long insert(SQLiteDatabase db, TransactionContext txContext, long rawContactId, ContentValues values) { final long dataId = super.insert(db, txContext, rawContactId, values); // Identity affects aggregation. if (values.containsKey(Identity.IDENTITY) || values.containsKey(Identity.NAMESPACE)) { triggerAggregation(txContext, rawContactId); } return dataId; } @Override public boolean update(SQLiteDatabase db, TransactionContext txContext, ContentValues values, Cursor c, boolean callerIsSyncAdapter) { super.update(db, txContext, values, c, callerIsSyncAdapter); // Identity affects aggregation. final long rawContactId = c.getLong(DataUpdateQuery.RAW_CONTACT_ID); if (values.containsKey(Identity.IDENTITY) || values.containsKey(Identity.NAMESPACE)) { triggerAggregation(txContext, rawContactId); } return true; } @Override public int delete(SQLiteDatabase db, TransactionContext txContext, Cursor c) { final int count = super.delete(db, txContext, c); // Identity affects aggregation. final long rawContactId = c.getLong(DataUpdateQuery.RAW_CONTACT_ID); triggerAggregation(txContext, rawContactId); return count; } }