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