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