diff options
author | Dmitri Plotnikov <dplotnikov@google.com> | 2010-12-01 09:20:18 -0800 |
---|---|---|
committer | Dmitri Plotnikov <dplotnikov@google.com> | 2010-12-01 09:20:18 -0800 |
commit | f6d4922f664127d0455b45b1f7444c4553581282 (patch) | |
tree | 4c91d53413e74adad937b5b59d9f3c6541cfa8dc /src/com/android/providers/contacts/DataRowHandlerForEmail.java | |
parent | 5df7e46835c4f103b05407660b4769edd515760f (diff) | |
download | packages_providers_ContactsProvider-f6d4922f664127d0455b45b1f7444c4553581282.zip packages_providers_ContactsProvider-f6d4922f664127d0455b45b1f7444c4553581282.tar.gz packages_providers_ContactsProvider-f6d4922f664127d0455b45b1f7444c4553581282.tar.bz2 |
Extracting DataRowHandler classes to the top level
Change-Id: Ica84da28a01a9c1b3c19967ab8cb154d796812c2
Diffstat (limited to 'src/com/android/providers/contacts/DataRowHandlerForEmail.java')
-rw-r--r-- | src/com/android/providers/contacts/DataRowHandlerForEmail.java | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/com/android/providers/contacts/DataRowHandlerForEmail.java b/src/com/android/providers/contacts/DataRowHandlerForEmail.java new file mode 100644 index 0000000..334e7fa --- /dev/null +++ b/src/com/android/providers/contacts/DataRowHandlerForEmail.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License + */ +package com.android.providers.contacts; + +import android.content.ContentValues; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.provider.ContactsContract.CommonDataKinds.Email; + +/** + * Handler for email address data rows. + */ +public class DataRowHandlerForEmail extends DataRowHandlerForCommonDataKind { + + public DataRowHandlerForEmail(ContactsDatabaseHelper dbHelper, ContactAggregator aggregator) { + super(dbHelper, aggregator, Email.CONTENT_ITEM_TYPE, Email.TYPE, Email.LABEL); + } + + @Override + public long insert(SQLiteDatabase db, TransactionContext txContext, long rawContactId, + ContentValues values) { + String email = values.getAsString(Email.DATA); + + long dataId = super.insert(db, txContext, rawContactId, values); + + fixRawContactDisplayName(db, txContext, rawContactId); + String address = mDbHelper.insertNameLookupForEmail(rawContactId, dataId, email); + if (address != null) { + triggerAggregation(rawContactId); + } + return dataId; + } + + @Override + public boolean update(SQLiteDatabase db, TransactionContext txContext, ContentValues values, + Cursor c, boolean callerIsSyncAdapter) { + if (!super.update(db, txContext, values, c, callerIsSyncAdapter)) { + return false; + } + + if (values.containsKey(Email.DATA)) { + long dataId = c.getLong(DataUpdateQuery._ID); + long rawContactId = c.getLong(DataUpdateQuery.RAW_CONTACT_ID); + + String address = values.getAsString(Email.DATA); + mDbHelper.deleteNameLookup(dataId); + mDbHelper.insertNameLookupForEmail(rawContactId, dataId, address); + fixRawContactDisplayName(db, txContext, rawContactId); + triggerAggregation(rawContactId); + } + + return true; + } + + @Override + public int delete(SQLiteDatabase db, TransactionContext txContext, Cursor c) { + long dataId = c.getLong(DataDeleteQuery._ID); + long rawContactId = c.getLong(DataDeleteQuery.RAW_CONTACT_ID); + + int count = super.delete(db, txContext, c); + + mDbHelper.deleteNameLookup(dataId); + fixRawContactDisplayName(db, txContext, rawContactId); + triggerAggregation(rawContactId); + return count; + } + + @Override + protected int getTypeRank(int type) { + switch (type) { + case Email.TYPE_HOME: return 0; + case Email.TYPE_WORK: return 1; + case Email.TYPE_CUSTOM: return 2; + case Email.TYPE_OTHER: return 3; + default: return 1000; + } + } +} |