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; 23aa18c233fdec3359c5231d4a5f61188446bf5d6fZheng Fuimport com.android.providers.contacts.aggregation.AbstractContactAggregator; 2438210445730ee04c351c7cc1b3800cfe23e34325Makoto Onuki 250992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki/** 260992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki * Handler for Identity data rows. 270992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki */ 280992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onukipublic class DataRowHandlerForIdentity extends DataRowHandler { 29aa18c233fdec3359c5231d4a5f61188446bf5d6fZheng Fu public DataRowHandlerForIdentity(Context context, ContactsDatabaseHelper dbHelper, 30aa18c233fdec3359c5231d4a5f61188446bf5d6fZheng Fu AbstractContactAggregator aggregator) { 310992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki super(context, dbHelper, aggregator, Identity.CONTENT_ITEM_TYPE); 320992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki } 330992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 340992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki @Override 350992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki public long insert(SQLiteDatabase db, TransactionContext txContext, long rawContactId, 360992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki ContentValues values) { 370992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki final long dataId = super.insert(db, txContext, rawContactId, values); 380992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 390992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki // Identity affects aggregation. 400992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki if (values.containsKey(Identity.IDENTITY) || values.containsKey(Identity.NAMESPACE)) { 410992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki triggerAggregation(txContext, rawContactId); 420992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki } 430992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 440992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki return dataId; 450992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki } 460992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 470992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki @Override 480992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki public boolean update(SQLiteDatabase db, TransactionContext txContext, ContentValues values, 490992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki Cursor c, boolean callerIsSyncAdapter) { 500992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 510992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki super.update(db, txContext, values, c, callerIsSyncAdapter); 520992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 530992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki // Identity affects aggregation. 540992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki final long rawContactId = c.getLong(DataUpdateQuery.RAW_CONTACT_ID); 550992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki if (values.containsKey(Identity.IDENTITY) || values.containsKey(Identity.NAMESPACE)) { 560992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki triggerAggregation(txContext, rawContactId); 570992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki } 580992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 590992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki return true; 600992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki } 610992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 620992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki @Override 630992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki public int delete(SQLiteDatabase db, TransactionContext txContext, Cursor c) { 640992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki final int count = super.delete(db, txContext, c); 650992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 660992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki // Identity affects aggregation. 670992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki final long rawContactId = c.getLong(DataUpdateQuery.RAW_CONTACT_ID); 680992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki triggerAggregation(txContext, rawContactId); 690992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki 700992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki return count; 710992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki } 720992b9d4969ed0eee6e879db94292b635229e2b7Makoto Onuki} 73