10992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki/* 20992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * Copyright (C) 2012 The Android Open Source Project 30992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * 40992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * Licensed under the Apache License, Version 2.0 (the "License"); you may not 50992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * use this file except in compliance with the License. You may obtain a copy of 60992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * the License at 70992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * 80992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * http://www.apache.org/licenses/LICENSE-2.0 90992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * 100992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * Unless required by applicable law or agreed to in writing, software 110992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 120992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 130992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * License for the specific language governing permissions and limitations under 140992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * the License 150992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki */ 160992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onukipackage com.android.providers.contacts; 170992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 180992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onukiimport android.content.ContentValues; 190992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onukiimport android.content.Context; 200992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onukiimport android.database.Cursor; 210992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onukiimport android.database.sqlite.SQLiteDatabase; 220992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onukiimport android.provider.ContactsContract.CommonDataKinds.Identity; 230992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 2438210445730ee04c351c7cc1b3800cfe23e34325Makoto Onukiimport com.android.providers.contacts.aggregation.ContactAggregator; 2538210445730ee04c351c7cc1b3800cfe23e34325Makoto Onuki 260992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki/** 270992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * Handler for Identity data rows. 280992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki */ 290992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onukipublic class DataRowHandlerForIdentity extends DataRowHandler { 300992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki public DataRowHandlerForIdentity( 310992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki Context context, ContactsDatabaseHelper dbHelper, ContactAggregator aggregator) { 320992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki super(context, dbHelper, aggregator, Identity.CONTENT_ITEM_TYPE); 330992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki } 340992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 350992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki @Override 360992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki public long insert(SQLiteDatabase db, TransactionContext txContext, long rawContactId, 370992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki ContentValues values) { 380992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki final long dataId = super.insert(db, txContext, rawContactId, values); 390992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 400992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki // Identity affects aggregation. 410992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki if (values.containsKey(Identity.IDENTITY) || values.containsKey(Identity.NAMESPACE)) { 420992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki triggerAggregation(txContext, rawContactId); 430992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki } 440992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 450992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki return dataId; 460992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki } 470992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 480992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki @Override 490992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki public boolean update(SQLiteDatabase db, TransactionContext txContext, ContentValues values, 500992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki Cursor c, boolean callerIsSyncAdapter) { 510992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 520992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki super.update(db, txContext, values, c, callerIsSyncAdapter); 530992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 540992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki // Identity affects aggregation. 550992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki final long rawContactId = c.getLong(DataUpdateQuery.RAW_CONTACT_ID); 560992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki if (values.containsKey(Identity.IDENTITY) || values.containsKey(Identity.NAMESPACE)) { 570992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki triggerAggregation(txContext, rawContactId); 580992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki } 590992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 600992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki return true; 610992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki } 620992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 630992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki @Override 640992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki public int delete(SQLiteDatabase db, TransactionContext txContext, Cursor c) { 650992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki final int count = super.delete(db, txContext, c); 660992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 670992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki // Identity affects aggregation. 680992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki final long rawContactId = c.getLong(DataUpdateQuery.RAW_CONTACT_ID); 690992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki triggerAggregation(txContext, rawContactId); 700992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 710992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki return count; 720992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki } 730992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki} 74