summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/providers/contacts/ContactsDatabaseHelper.java114
-rw-r--r--src/com/android/providers/contacts/ContactsProvider2.java2
-rw-r--r--src/com/android/providers/contacts/DataRowHandlerForOrganization.java3
-rw-r--r--src/com/android/providers/contacts/SearchIndexManager.java28
4 files changed, 37 insertions, 110 deletions
diff --git a/src/com/android/providers/contacts/ContactsDatabaseHelper.java b/src/com/android/providers/contacts/ContactsDatabaseHelper.java
index 73c43ae..51829ec 100644
--- a/src/com/android/providers/contacts/ContactsDatabaseHelper.java
+++ b/src/com/android/providers/contacts/ContactsDatabaseHelper.java
@@ -92,7 +92,7 @@ import java.util.Locale;
* 500-599 Honeycomb-MR1
* </pre>
*/
- static final int DATABASE_VERSION = 500;
+ static final int DATABASE_VERSION = 501;
private static final String DATABASE_NAME = "contacts2.db";
private static final String DATABASE_PRESENCE = "presence_db";
@@ -392,7 +392,6 @@ import java.util.Locale;
public static final int NAME_COLLATION_KEY = 2;
public static final int NICKNAME = 3;
public static final int EMAIL_BASED_NICKNAME = 4;
- public static final int ORGANIZATION = 5;
public static final int NAME_SHORTHAND = 6;
public static final int NAME_CONSONANTS = 7;
@@ -1775,6 +1774,11 @@ import java.util.Locale;
oldVersion = 500;
}
+ if (oldVersion < 501) {
+ upgradeToVersion501(db);
+ oldVersion = 501;
+ }
+
if (upgradeViewsAndTriggers) {
createContactsViews(db);
createGroupsView(db);
@@ -2170,71 +2174,12 @@ import java.util.Locale;
+ " ADD " + RawContacts.NAME_VERIFIED + " INTEGER NOT NULL DEFAULT 0;");
}
- private interface Organization300Query {
- String TABLE = Tables.DATA;
-
- String SELECTION = DataColumns.MIMETYPE_ID + "=?";
-
- String COLUMNS[] = {
- Organization._ID,
- Organization.RAW_CONTACT_ID,
- Organization.COMPANY,
- Organization.TITLE
- };
-
- int ID = 0;
- int RAW_CONTACT_ID = 1;
- int COMPANY = 2;
- int TITLE = 3;
- }
-
/**
* Fix for the bug where name lookup records for organizations would get removed by
* unrelated updates of the data rows.
*/
private void upgradeToVersion300(SQLiteDatabase db) {
- final long mimeType = lookupMimeTypeId(db, Organization.CONTENT_ITEM_TYPE);
- if (mimeType == -1) {
- return;
- }
-
- ContentValues values = new ContentValues();
-
- // Find all data rows with the mime type "organization"
- Cursor cursor = db.query(Organization300Query.TABLE, Organization300Query.COLUMNS,
- Organization300Query.SELECTION, new String[] {String.valueOf(mimeType)},
- null, null, null);
- try {
- while (cursor.moveToNext()) {
- long dataId = cursor.getLong(Organization300Query.ID);
- long rawContactId = cursor.getLong(Organization300Query.RAW_CONTACT_ID);
- String company = cursor.getString(Organization300Query.COMPANY);
- String title = cursor.getString(Organization300Query.TITLE);
-
- // First delete name lookup if there is any (chances are there won't be)
- db.delete(Tables.NAME_LOOKUP, NameLookupColumns.DATA_ID + "=?",
- new String[]{String.valueOf(dataId)});
-
- // Now insert two name lookup records: one for company name, one for title
- values.put(NameLookupColumns.DATA_ID, dataId);
- values.put(NameLookupColumns.RAW_CONTACT_ID, rawContactId);
- values.put(NameLookupColumns.NAME_TYPE, NameLookupType.ORGANIZATION);
-
- if (!TextUtils.isEmpty(company)) {
- values.put(NameLookupColumns.NORMALIZED_NAME,
- NameNormalizer.normalize(company));
- db.insert(Tables.NAME_LOOKUP, null, values);
- }
-
- if (!TextUtils.isEmpty(title)) {
- values.put(NameLookupColumns.NORMALIZED_NAME,
- NameNormalizer.normalize(title));
- db.insert(Tables.NAME_LOOKUP, null, values);
- }
- }
- } finally {
- cursor.close();
- }
+ // No longer needed
}
private static final class Upgrade303Query {
@@ -2475,7 +2420,6 @@ import java.util.Locale;
try {
insertStructuredNameLookup(db, nameLookupInsert);
- insertOrganizationLookup(db, nameLookupInsert);
insertEmailLookup(db, nameLookupInsert);
insertNicknameLookup(db, nameLookupInsert);
} finally {
@@ -2571,30 +2515,6 @@ import java.util.Locale;
public static final int TITLE = 3;
}
- /**
- * Inserts name lookup rows for all organizations in the database.
- */
- private void insertOrganizationLookup(SQLiteDatabase db, SQLiteStatement nameLookupInsert) {
- final long mimeTypeId = lookupMimeTypeId(db, Organization.CONTENT_ITEM_TYPE);
- Cursor cursor = db.query(OrganizationQuery.TABLE, OrganizationQuery.COLUMNS,
- OrganizationQuery.SELECTION, new String[] {String.valueOf(mimeTypeId)},
- null, null, null);
- try {
- while (cursor.moveToNext()) {
- long dataId = cursor.getLong(OrganizationQuery.ID);
- long rawContactId = cursor.getLong(OrganizationQuery.RAW_CONTACT_ID);
- String organization = cursor.getString(OrganizationQuery.COMPANY);
- String title = cursor.getString(OrganizationQuery.TITLE);
- insertNameLookup(nameLookupInsert, rawContactId, dataId,
- NameLookupType.ORGANIZATION, organization);
- insertNameLookup(nameLookupInsert, rawContactId, dataId,
- NameLookupType.ORGANIZATION, title);
- }
- } finally {
- cursor.close();
- }
- }
-
private static final class EmailQuery {
public static final String TABLE = Tables.DATA;
@@ -2876,7 +2796,13 @@ import java.util.Locale;
}
private void upgradeToVersion500(SQLiteDatabase db) {
- createSearchIndexTable(db);
+ setProperty(db, SearchIndexManager.PROPERTY_SEARCH_INDEX_VERSION, "0");
+ }
+
+ private void upgradeToVersion501(SQLiteDatabase db) {
+ // Remove organization rows from the name lookup, we now use search index for that
+ db.execSQL("DELETE FROM name_lookup WHERE name_type=5");
+ setProperty(db, SearchIndexManager.PROPERTY_SEARCH_INDEX_VERSION, "0");
}
public String extractHandleFromEmailAddress(String email) {
@@ -3949,18 +3875,6 @@ import java.util.Locale;
mNameLookupDelete.execute();
}
- public void insertNameLookupForOrganization(long rawContactId, long dataId, String company,
- String title) {
- if (!TextUtils.isEmpty(company)) {
- insertNameLookup(rawContactId, dataId,
- NameLookupType.ORGANIZATION, NameNormalizer.normalize(company));
- }
- if (!TextUtils.isEmpty(title)) {
- insertNameLookup(rawContactId, dataId,
- NameLookupType.ORGANIZATION, NameNormalizer.normalize(title));
- }
- }
-
public String insertNameLookupForEmail(long rawContactId, long dataId, String email) {
if (TextUtils.isEmpty(email)) {
return null;
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index 1e433ae..e281ba7 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -419,7 +419,6 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
NameLookupType.EMAIL_BASED_NICKNAME + "," +
NameLookupType.NICKNAME + "," +
NameLookupType.NAME_SHORTHAND + "," +
- NameLookupType.ORGANIZATION + "," +
NameLookupType.NAME_CONSONANTS;
/**
@@ -5051,7 +5050,6 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
+ NameLookupType.NAME_COLLATION_KEY + ","
+ NameLookupType.NICKNAME + ","
+ NameLookupType.NAME_SHORTHAND + ","
- + NameLookupType.ORGANIZATION + ","
+ NameLookupType.NAME_CONSONANTS);
if (allowEmailMatch) {
sb.append("," + NameLookupType.EMAIL_BASED_NICKNAME);
diff --git a/src/com/android/providers/contacts/DataRowHandlerForOrganization.java b/src/com/android/providers/contacts/DataRowHandlerForOrganization.java
index 9d2bce9..0280c3b 100644
--- a/src/com/android/providers/contacts/DataRowHandlerForOrganization.java
+++ b/src/com/android/providers/contacts/DataRowHandlerForOrganization.java
@@ -46,7 +46,6 @@ public class DataRowHandlerForOrganization extends DataRowHandlerForCommonDataKi
long dataId = super.insert(db, txContext, rawContactId, values);
fixRawContactDisplayName(db, txContext, rawContactId);
- mDbHelper.insertNameLookupForOrganization(rawContactId, dataId, company, title);
return dataId;
}
@@ -87,8 +86,6 @@ public class DataRowHandlerForOrganization extends DataRowHandlerForCommonDataKi
}
mDbHelper.deleteNameLookup(dataId);
- mDbHelper.insertNameLookupForOrganization(rawContactId, dataId, company, title);
-
fixRawContactDisplayName(db, txContext, rawContactId);
}
return true;
diff --git a/src/com/android/providers/contacts/SearchIndexManager.java b/src/com/android/providers/contacts/SearchIndexManager.java
index b36963a..503e66b 100644
--- a/src/com/android/providers/contacts/SearchIndexManager.java
+++ b/src/com/android/providers/contacts/SearchIndexManager.java
@@ -24,6 +24,10 @@ import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.SystemClock;
+import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Nickname;
+import android.provider.ContactsContract.CommonDataKinds.Organization;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.ProviderStatus;
@@ -40,7 +44,7 @@ import java.util.Set;
public class SearchIndexManager {
private static final String TAG = "ContactsFTS";
- private static final String PROPERTY_SEARCH_INDEX_VERSION = "search_index";
+ public static final String PROPERTY_SEARCH_INDEX_VERSION = "search_index";
private static final int SEARCH_INDEX_VERSION = 1;
private static final class ContactIndexQuery {
@@ -250,11 +254,25 @@ public class SearchIndexManager {
}
private int buildIndex(SQLiteDatabase db, String selection, boolean replace) {
+ mSb.setLength(0);
+ mSb.append(Data.CONTACT_ID + ", ");
+ mSb.append("(CASE WHEN " + DataColumns.MIMETYPE_ID + "=");
+ mSb.append(mDbHelper.getMimeTypeId(Nickname.CONTENT_ITEM_TYPE));
+ mSb.append(" THEN -4 ");
+ mSb.append(" WHEN " + DataColumns.MIMETYPE_ID + "=");
+ mSb.append(mDbHelper.getMimeTypeId(Organization.CONTENT_ITEM_TYPE));
+ mSb.append(" THEN -3 ");
+ mSb.append(" WHEN " + DataColumns.MIMETYPE_ID + "=");
+ mSb.append(mDbHelper.getMimeTypeId(StructuredPostal.CONTENT_ITEM_TYPE));
+ mSb.append(" THEN -2");
+ mSb.append(" WHEN " + DataColumns.MIMETYPE_ID + "=");
+ mSb.append(mDbHelper.getMimeTypeId(Email.CONTENT_ITEM_TYPE));
+ mSb.append(" THEN -1");
+ mSb.append(" END), " + Data.IS_SUPER_PRIMARY + ", " + DataColumns.CONCRETE_ID);
+
int count = 0;
- Cursor cursor = db.query(Tables.DATA_JOIN_MIMETYPE_RAW_CONTACTS,
- ContactIndexQuery.COLUMNS, selection, null, null, null,
- Data.CONTACT_ID + ", " + DataColumns.MIMETYPE_ID + ", " + Data.IS_SUPER_PRIMARY
- + ", " + DataColumns.CONCRETE_ID);
+ Cursor cursor = db.query(Tables.DATA_JOIN_MIMETYPE_RAW_CONTACTS, ContactIndexQuery.COLUMNS,
+ selection, null, null, null, mSb.toString());
mIndexBuilder.setCursor(cursor);
mIndexBuilder.reset();
try {