DataRowHandlerForOrganization.java revision f6d4922f664127d0455b45b1f7444c4553581282
1f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov/* 2f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project 3f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov * 4f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov * use this file except in compliance with the License. You may obtain a copy of 6f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov * the License at 7f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov * 8f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov * http://www.apache.org/licenses/LICENSE-2.0 9f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov * 10f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov * Unless required by applicable law or agreed to in writing, software 11f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov * License for the specific language governing permissions and limitations under 14f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov * the License 15f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov */ 16f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikovpackage com.android.providers.contacts; 17f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 18f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikovimport com.android.providers.contacts.ContactsDatabaseHelper.Tables; 19f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 20f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikovimport android.content.ContentValues; 21f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikovimport android.database.Cursor; 22f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikovimport android.database.DatabaseUtils; 23f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikovimport android.database.sqlite.SQLiteDatabase; 24f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikovimport android.provider.ContactsContract.CommonDataKinds.Organization; 25f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikovimport android.provider.ContactsContract.Data; 26f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 27f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov/** 28f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov * Handler for organization data rows. 29f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov */ 30f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikovpublic class DataRowHandlerForOrganization extends DataRowHandlerForCommonDataKind { 31f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 32f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov public DataRowHandlerForOrganization(ContactsDatabaseHelper dbHelper, 33f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov ContactAggregator aggregator) { 34f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov super(dbHelper, aggregator, 35f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov Organization.CONTENT_ITEM_TYPE, Organization.TYPE, Organization.LABEL); 36f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov } 37f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 38f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov @Override 39f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov public long insert(SQLiteDatabase db, TransactionContext txContext, long rawContactId, 40f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov ContentValues values) { 41f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov String company = values.getAsString(Organization.COMPANY); 42f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov String title = values.getAsString(Organization.TITLE); 43f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 44f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov long dataId = super.insert(db, txContext, rawContactId, values); 45f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 46f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov fixRawContactDisplayName(db, txContext, rawContactId); 47f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov mDbHelper.insertNameLookupForOrganization(rawContactId, dataId, company, title); 48f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov return dataId; 49f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov } 50f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 51f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov @Override 52f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov public boolean update(SQLiteDatabase db, TransactionContext txContext, ContentValues values, 53f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov Cursor c, boolean callerIsSyncAdapter) { 54f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov if (!super.update(db, txContext, values, c, callerIsSyncAdapter)) { 55f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov return false; 56f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov } 57f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 58f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov boolean containsCompany = values.containsKey(Organization.COMPANY); 59f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov boolean containsTitle = values.containsKey(Organization.TITLE); 60f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov if (containsCompany || containsTitle) { 61f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov long dataId = c.getLong(DataUpdateQuery._ID); 62f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov long rawContactId = c.getLong(DataUpdateQuery.RAW_CONTACT_ID); 63f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 64f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov String company; 65f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 66f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov if (containsCompany) { 67f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov company = values.getAsString(Organization.COMPANY); 68f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov } else { 69f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov mSelectionArgs1[0] = String.valueOf(dataId); 70f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov company = DatabaseUtils.stringForQuery(db, 71f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov "SELECT " + Organization.COMPANY + 72f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov " FROM " + Tables.DATA + 73f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov " WHERE " + Data._ID + "=?", mSelectionArgs1); 74f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov } 75f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 76f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov String title; 77f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov if (containsTitle) { 78f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov title = values.getAsString(Organization.TITLE); 79f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov } else { 80f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov mSelectionArgs1[0] = String.valueOf(dataId); 81f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov title = DatabaseUtils.stringForQuery(db, 82f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov "SELECT " + Organization.TITLE + 83f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov " FROM " + Tables.DATA + 84f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov " WHERE " + Data._ID + "=?", mSelectionArgs1); 85f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov } 86f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 87f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov mDbHelper.deleteNameLookup(dataId); 88f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov mDbHelper.insertNameLookupForOrganization(rawContactId, dataId, company, title); 89f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 90f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov fixRawContactDisplayName(db, txContext, rawContactId); 91f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov } 92f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov return true; 93f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov } 94f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 95f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov @Override 96f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov public int delete(SQLiteDatabase db, TransactionContext txContext, Cursor c) { 97f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov long dataId = c.getLong(DataUpdateQuery._ID); 98f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov long rawContactId = c.getLong(DataDeleteQuery.RAW_CONTACT_ID); 99f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 100f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov int count = super.delete(db, txContext, c); 101f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov fixRawContactDisplayName(db, txContext, rawContactId); 102f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov mDbHelper.deleteNameLookup(dataId); 103f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov return count; 104f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov } 105f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov 106f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov @Override 107f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov protected int getTypeRank(int type) { 108f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov switch (type) { 109f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov case Organization.TYPE_WORK: return 0; 110f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov case Organization.TYPE_CUSTOM: return 1; 111f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov case Organization.TYPE_OTHER: return 2; 112f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov default: return 1000; 113f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov } 114f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov } 115f6d4922f664127d0455b45b1f7444c4553581282Dmitri Plotnikov} 116