summaryrefslogtreecommitdiffstats
path: root/src/com/android/providers/contacts/ContactsProvider2.java
diff options
context:
space:
mode:
authorDmitri Plotnikov <dplotnikov@google.com>2010-11-30 18:14:55 -0800
committerDmitri Plotnikov <dplotnikov@google.com>2010-11-30 18:14:55 -0800
commit7e2635fa663312adb2bc9d04f50a6bb54c6cc5f4 (patch)
treeb918632781af30847ff7406f947bb31fd7e1a2d7 /src/com/android/providers/contacts/ContactsProvider2.java
parentd364d74ce9cc677c10362b8686d7c33fafe78beb (diff)
downloadpackages_providers_ContactsProvider-7e2635fa663312adb2bc9d04f50a6bb54c6cc5f4.zip
packages_providers_ContactsProvider-7e2635fa663312adb2bc9d04f50a6bb54c6cc5f4.tar.gz
packages_providers_ContactsProvider-7e2635fa663312adb2bc9d04f50a6bb54c6cc5f4.tar.bz2
Moving a method from ContactsProvider to ContactAggregator
This is another step in preparation for turining DataRowHandlers into top-level classes. Change-Id: I74611a64e4601fdbbcc4fa99521026f0c95e3d2f
Diffstat (limited to 'src/com/android/providers/contacts/ContactsProvider2.java')
-rw-r--r--src/com/android/providers/contacts/ContactsProvider2.java195
1 files changed, 3 insertions, 192 deletions
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index 816a0e4..f3b8e15 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -62,7 +62,6 @@ import android.content.SharedPreferences;
import android.content.SyncAdapterType;
import android.content.UriMatcher;
import android.content.res.AssetFileDescriptor;
-import android.database.CharArrayBuffer;
import android.database.Cursor;
import android.database.CursorWrapper;
import android.database.DatabaseUtils;
@@ -98,12 +97,10 @@ import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Contacts.AggregationSuggestions;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.Directory;
-import android.provider.ContactsContract.DisplayNameSources;
import android.provider.ContactsContract.FullNameStyle;
import android.provider.ContactsContract.Groups;
import android.provider.ContactsContract.Intents;
import android.provider.ContactsContract.PhoneLookup;
-import android.provider.ContactsContract.PhoneticNameStyle;
import android.provider.ContactsContract.ProviderStatus;
import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.SearchSnippetColumns;
@@ -1145,7 +1142,7 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
protected void fixRawContactDisplayName(SQLiteDatabase db, TransactionContext txContext,
long rawContactId) {
if (!isNewRawContact(txContext, rawContactId)) {
- updateRawContactDisplayName(db, rawContactId);
+ mContactAggregator.updateRawContactDisplayName(db, rawContactId);
mContactAggregator.updateDisplayNameForRawContact(db, rawContactId);
}
}
@@ -1946,8 +1943,6 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
private CommonNicknameCache mCommonNicknameCache;
private ContentValues mValues = new ContentValues();
- private CharArrayBuffer mCharArrayBuffer = new CharArrayBuffer(128);
- private NameSplitter.Name mName = new NameSplitter.Name();
private HashMap<String, Boolean> mAccountWritability = Maps.newHashMap();
private int mProviderStatus = ProviderStatus.STATUS_NORMAL;
@@ -2358,7 +2353,7 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
}
for (long rawContactId : mTransactionContext.getInsertedRawContactIds()) {
- updateRawContactDisplayName(mDb, rawContactId);
+ mContactAggregator.updateRawContactDisplayName(mDb, rawContactId);
mContactAggregator.onRawContactInsert(mDb, rawContactId);
}
@@ -2821,192 +2816,8 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
return entry.groupId;
}
- private interface DisplayNameQuery {
- public static final String RAW_SQL =
- "SELECT "
- + DataColumns.MIMETYPE_ID + ","
- + Data.IS_PRIMARY + ","
- + Data.DATA1 + ","
- + Data.DATA2 + ","
- + Data.DATA3 + ","
- + Data.DATA4 + ","
- + Data.DATA5 + ","
- + Data.DATA6 + ","
- + Data.DATA7 + ","
- + Data.DATA8 + ","
- + Data.DATA9 + ","
- + Data.DATA10 + ","
- + Data.DATA11 +
- " FROM " + Tables.DATA +
- " WHERE " + Data.RAW_CONTACT_ID + "=?" +
- " AND (" + Data.DATA1 + " NOT NULL OR " +
- Organization.TITLE + " NOT NULL)";
-
- public static final int MIMETYPE = 0;
- public static final int IS_PRIMARY = 1;
- public static final int DATA1 = 2;
- public static final int GIVEN_NAME = 3; // data2
- public static final int FAMILY_NAME = 4; // data3
- public static final int PREFIX = 5; // data4
- public static final int TITLE = 5; // data4
- public static final int MIDDLE_NAME = 6; // data5
- public static final int SUFFIX = 7; // data6
- public static final int PHONETIC_GIVEN_NAME = 8; // data7
- public static final int PHONETIC_MIDDLE_NAME = 9; // data8
- public static final int ORGANIZATION_PHONETIC_NAME = 9; // data8
- public static final int PHONETIC_FAMILY_NAME = 10; // data9
- public static final int FULL_NAME_STYLE = 11; // data10
- public static final int ORGANIZATION_PHONETIC_NAME_STYLE = 11; // data10
- public static final int PHONETIC_NAME_STYLE = 12; // data11
- }
-
- /**
- * Updates a raw contact display name based on data rows, e.g. structured name,
- * organization, email etc.
- */
public void updateRawContactDisplayName(SQLiteDatabase db, long rawContactId) {
- int bestDisplayNameSource = DisplayNameSources.UNDEFINED;
- NameSplitter.Name bestName = null;
- String bestDisplayName = null;
- String bestPhoneticName = null;
- int bestPhoneticNameStyle = PhoneticNameStyle.UNDEFINED;
-
- mSelectionArgs1[0] = String.valueOf(rawContactId);
- Cursor c = db.rawQuery(DisplayNameQuery.RAW_SQL, mSelectionArgs1);
- try {
- while (c.moveToNext()) {
- int mimeType = c.getInt(DisplayNameQuery.MIMETYPE);
- int source = mDbHelper.getDisplayNameSourceForMimeTypeId(mimeType);
- if (source < bestDisplayNameSource || source == DisplayNameSources.UNDEFINED) {
- continue;
- }
-
- if (source == bestDisplayNameSource && c.getInt(DisplayNameQuery.IS_PRIMARY) == 0) {
- continue;
- }
-
- if (mimeType == mDbHelper.getMimeTypeIdForStructuredName()) {
- NameSplitter.Name name;
- if (bestName != null) {
- name = new NameSplitter.Name();
- } else {
- name = mName;
- name.clear();
- }
- name.prefix = c.getString(DisplayNameQuery.PREFIX);
- name.givenNames = c.getString(DisplayNameQuery.GIVEN_NAME);
- name.middleName = c.getString(DisplayNameQuery.MIDDLE_NAME);
- name.familyName = c.getString(DisplayNameQuery.FAMILY_NAME);
- name.suffix = c.getString(DisplayNameQuery.SUFFIX);
- name.fullNameStyle = c.isNull(DisplayNameQuery.FULL_NAME_STYLE)
- ? FullNameStyle.UNDEFINED
- : c.getInt(DisplayNameQuery.FULL_NAME_STYLE);
- name.phoneticFamilyName = c.getString(DisplayNameQuery.PHONETIC_FAMILY_NAME);
- name.phoneticMiddleName = c.getString(DisplayNameQuery.PHONETIC_MIDDLE_NAME);
- name.phoneticGivenName = c.getString(DisplayNameQuery.PHONETIC_GIVEN_NAME);
- name.phoneticNameStyle = c.isNull(DisplayNameQuery.PHONETIC_NAME_STYLE)
- ? PhoneticNameStyle.UNDEFINED
- : c.getInt(DisplayNameQuery.PHONETIC_NAME_STYLE);
- if (!name.isEmpty()) {
- bestDisplayNameSource = source;
- bestName = name;
- }
- } else if (mimeType == mDbHelper.getMimeTypeIdForOrganization()) {
- mCharArrayBuffer.sizeCopied = 0;
- c.copyStringToBuffer(DisplayNameQuery.DATA1, mCharArrayBuffer);
- if (mCharArrayBuffer.sizeCopied != 0) {
- bestDisplayNameSource = source;
- bestDisplayName = new String(mCharArrayBuffer.data, 0,
- mCharArrayBuffer.sizeCopied);
- bestPhoneticName = c.getString(DisplayNameQuery.ORGANIZATION_PHONETIC_NAME);
- bestPhoneticNameStyle =
- c.isNull(DisplayNameQuery.ORGANIZATION_PHONETIC_NAME_STYLE)
- ? PhoneticNameStyle.UNDEFINED
- : c.getInt(DisplayNameQuery.ORGANIZATION_PHONETIC_NAME_STYLE);
- } else {
- c.copyStringToBuffer(DisplayNameQuery.TITLE, mCharArrayBuffer);
- if (mCharArrayBuffer.sizeCopied != 0) {
- bestDisplayNameSource = source;
- bestDisplayName = new String(mCharArrayBuffer.data, 0,
- mCharArrayBuffer.sizeCopied);
- bestPhoneticName = null;
- bestPhoneticNameStyle = PhoneticNameStyle.UNDEFINED;
- }
- }
- } else {
- // Display name is at DATA1 in all other types.
- // This is ensured in the constructor.
-
- mCharArrayBuffer.sizeCopied = 0;
- c.copyStringToBuffer(DisplayNameQuery.DATA1, mCharArrayBuffer);
- if (mCharArrayBuffer.sizeCopied != 0) {
- bestDisplayNameSource = source;
- bestDisplayName = new String(mCharArrayBuffer.data, 0,
- mCharArrayBuffer.sizeCopied);
- bestPhoneticName = null;
- bestPhoneticNameStyle = PhoneticNameStyle.UNDEFINED;
- }
- }
- }
-
- } finally {
- c.close();
- }
-
- String displayNamePrimary;
- String displayNameAlternative;
- String sortKeyPrimary = null;
- String sortKeyAlternative = null;
- int displayNameStyle = FullNameStyle.UNDEFINED;
-
- if (bestDisplayNameSource == DisplayNameSources.STRUCTURED_NAME) {
- displayNameStyle = bestName.fullNameStyle;
- if (displayNameStyle == FullNameStyle.CJK
- || displayNameStyle == FullNameStyle.UNDEFINED) {
- displayNameStyle = mNameSplitter.getAdjustedFullNameStyle(displayNameStyle);
- bestName.fullNameStyle = displayNameStyle;
- }
-
- displayNamePrimary = mNameSplitter.join(bestName, true);
- displayNameAlternative = mNameSplitter.join(bestName, false);
-
- bestPhoneticName = mNameSplitter.joinPhoneticName(bestName);
- bestPhoneticNameStyle = bestName.phoneticNameStyle;
- } else {
- displayNamePrimary = displayNameAlternative = bestDisplayName;
- }
-
- if (bestPhoneticName != null) {
- sortKeyPrimary = sortKeyAlternative = bestPhoneticName;
- if (bestPhoneticNameStyle == PhoneticNameStyle.UNDEFINED) {
- bestPhoneticNameStyle = mNameSplitter.guessPhoneticNameStyle(bestPhoneticName);
- }
- } else {
- if (displayNameStyle == FullNameStyle.UNDEFINED) {
- displayNameStyle = mNameSplitter.guessFullNameStyle(bestDisplayName);
- if (displayNameStyle == FullNameStyle.UNDEFINED
- || displayNameStyle == FullNameStyle.CJK) {
- displayNameStyle = mNameSplitter.getAdjustedNameStyleBasedOnPhoneticNameStyle(
- displayNameStyle, bestPhoneticNameStyle);
- }
- displayNameStyle = mNameSplitter.getAdjustedFullNameStyle(displayNameStyle);
- }
- if (displayNameStyle == FullNameStyle.CHINESE ||
- displayNameStyle == FullNameStyle.CJK) {
- sortKeyPrimary = sortKeyAlternative =
- ContactLocaleUtils.getIntance().getSortKey(
- displayNamePrimary, displayNameStyle);
- }
- }
-
- if (sortKeyPrimary == null) {
- sortKeyPrimary = displayNamePrimary;
- sortKeyAlternative = displayNameAlternative;
- }
-
- mDbHelper.setDisplayName(rawContactId, bestDisplayNameSource, displayNamePrimary,
- displayNameAlternative, bestPhoneticName, bestPhoneticNameStyle,
- sortKeyPrimary, sortKeyAlternative);
+ mContactAggregator.updateRawContactDisplayName(db, rawContactId);
}
/**