Merge change 21367 into eclair
* changes:
Simplified and fixed aggregation on structured name.
diff --git a/src/com/android/providers/contacts/ContactAggregator.java b/src/com/android/providers/contacts/ContactAggregator.java
index 1a0a0a0..a5a2aa9 100644
--- a/src/com/android/providers/contacts/ContactAggregator.java
+++ b/src/com/android/providers/contacts/ContactAggregator.java
@@ -569,39 +569,27 @@
return;
}
- addMatchCandidatesFamilyNameOnly(familyName, candidates);
+ addMatchCandidatesSingleName(familyName, candidates);
} else if (TextUtils.isEmpty(familyName)) {
- addMatchCandidatesGivenNameOnly(givenName, candidates);
+ addMatchCandidatesSingleName(givenName, candidates);
} else {
addMatchCandidatesFullName(givenName, familyName, mode, candidates);
}
}
- private void addMatchCandidatesGivenNameOnly(String givenName,
- MatchCandidateList candidates) {
- String givenNameN = NameNormalizer.normalize(givenName);
- candidates.add(givenNameN, NameLookupType.GIVEN_NAME_ONLY);
-
- String[] clusters = mOpenHelper.getCommonNicknameClusters(givenNameN);
- if (clusters != null) {
- for (int i = 0; i < clusters.length; i++) {
- candidates.add(clusters[i], NameLookupType.GIVEN_NAME_ONLY_AS_NICKNAME);
- }
- }
- }
-
- private void addMatchCandidatesFamilyNameOnly(String familyName,
- MatchCandidateList candidates) {
- String familyNameN = NameNormalizer.normalize(familyName);
- candidates.add(familyNameN, NameLookupType.FAMILY_NAME_ONLY);
+ private void addMatchCandidatesSingleName(String name, MatchCandidateList candidates) {
+ String nameN = NameNormalizer.normalize(name);
+ candidates.add(nameN, NameLookupType.NAME_EXACT);
// Take care of first and last names swapped
- String[] clusters = mOpenHelper.getCommonNicknameClusters(familyNameN);
+ String[] clusters = mOpenHelper.getCommonNicknameClusters(nameN);
if (clusters != null) {
for (int i = 0; i < clusters.length; i++) {
- candidates.add(clusters[i], NameLookupType.FAMILY_NAME_ONLY_AS_NICKNAME);
+ candidates.add(clusters[i], NameLookupType.NAME_VARIANT);
}
}
+
+ candidates.add(nameN, NameLookupType.NAME_COLLATION_KEY);
}
private void addMatchCandidatesFullName(String givenName, String familyName, int mode,
@@ -610,40 +598,22 @@
final String[] givenNameNicknames = mOpenHelper.getCommonNicknameClusters(givenNameN);
final String familyNameN = NameNormalizer.normalize(familyName);
final String[] familyNameNicknames = mOpenHelper.getCommonNicknameClusters(familyNameN);
- candidates.add(givenNameN + "." + familyNameN, NameLookupType.FULL_NAME);
+ candidates.add(givenNameN + "." + familyNameN, NameLookupType.NAME_EXACT);
if (givenNameNicknames != null) {
for (int i = 0; i < givenNameNicknames.length; i++) {
candidates.add(givenNameNicknames[i] + "." + familyNameN,
- NameLookupType.FULL_NAME_WITH_NICKNAME);
+ NameLookupType.NAME_VARIANT);
}
}
- candidates.add(familyNameN + "." + givenNameN, NameLookupType.FULL_NAME_REVERSE);
+ candidates.add(familyNameN + "." + givenNameN, NameLookupType.NAME_VARIANT);
if (familyNameNicknames != null) {
for (int i = 0; i < familyNameNicknames.length; i++) {
candidates.add(familyNameNicknames[i] + "." + givenNameN,
- NameLookupType.FULL_NAME_WITH_NICKNAME_REVERSE);
+ NameLookupType.NAME_VARIANT);
}
}
- candidates.add(givenNameN + familyNameN, NameLookupType.FULL_NAME_CONCATENATED);
- candidates.add(familyNameN + givenNameN, NameLookupType.FULL_NAME_REVERSE_CONCATENATED);
-
- if (mode == MODE_AGGREGATION || mode == MODE_SUGGESTIONS) {
- candidates.add(givenNameN, NameLookupType.GIVEN_NAME_ONLY);
- if (givenNameNicknames != null) {
- for (int i = 0; i < givenNameNicknames.length; i++) {
- candidates.add(givenNameNicknames[i],
- NameLookupType.GIVEN_NAME_ONLY_AS_NICKNAME);
- }
- }
-
- candidates.add(familyNameN, NameLookupType.FAMILY_NAME_ONLY);
- if (familyNameNicknames != null) {
- for (int i = 0; i < familyNameNicknames.length; i++) {
- candidates.add(familyNameNicknames[i],
- NameLookupType.FAMILY_NAME_ONLY_AS_NICKNAME);
- }
- }
- }
+ candidates.add(givenNameN + familyNameN, NameLookupType.NAME_COLLATION_KEY);
+ candidates.add(familyNameN + givenNameN, NameLookupType.NAME_COLLATION_KEY);
}
/**
diff --git a/src/com/android/providers/contacts/ContactMatcher.java b/src/com/android/providers/contacts/ContactMatcher.java
index 6ab98dd..15c5c43 100644
--- a/src/com/android/providers/contacts/ContactMatcher.java
+++ b/src/com/android/providers/contacts/ContactMatcher.java
@@ -91,90 +91,29 @@
* scores than direct matches.
*/
static {
- setScoreRange(NameLookupType.FULL_NAME,
- NameLookupType.FULL_NAME, 99, 99);
- setScoreRange(NameLookupType.FULL_NAME,
- NameLookupType.FULL_NAME_REVERSE, 90, 90);
+ setScoreRange(NameLookupType.NAME_EXACT,
+ NameLookupType.NAME_EXACT, 99, 99);
+ setScoreRange(NameLookupType.NAME_VARIANT,
+ NameLookupType.NAME_VARIANT, 90, 90);
+ setScoreRange(NameLookupType.NAME_COLLATION_KEY,
+ NameLookupType.NAME_COLLATION_KEY, 40, 80);
- setScoreRange(NameLookupType.FULL_NAME_REVERSE,
- NameLookupType.FULL_NAME, 90, 90);
- setScoreRange(NameLookupType.FULL_NAME_REVERSE,
- NameLookupType.FULL_NAME_REVERSE, 99, 99);
-
- setScoreRange(NameLookupType.FULL_NAME_CONCATENATED,
- NameLookupType.FULL_NAME_CONCATENATED, 40, 80);
- setScoreRange(NameLookupType.FULL_NAME_CONCATENATED,
- NameLookupType.FULL_NAME_REVERSE_CONCATENATED, 30, 70);
- setScoreRange(NameLookupType.FULL_NAME_CONCATENATED,
+ setScoreRange(NameLookupType.NAME_COLLATION_KEY,
NameLookupType.EMAIL_BASED_NICKNAME, 30, 60);
- setScoreRange(NameLookupType.FULL_NAME_CONCATENATED,
+ setScoreRange(NameLookupType.NAME_COLLATION_KEY,
NameLookupType.NICKNAME, 30, 60);
- setScoreRange(NameLookupType.FULL_NAME_REVERSE_CONCATENATED,
- NameLookupType.FULL_NAME_CONCATENATED, 30, 70);
- setScoreRange(NameLookupType.FULL_NAME_REVERSE_CONCATENATED,
- NameLookupType.FULL_NAME_REVERSE_CONCATENATED, 40, 80);
-
- setScoreRange(NameLookupType.FULL_NAME_WITH_NICKNAME,
- NameLookupType.FULL_NAME_WITH_NICKNAME, 75, 75);
- setScoreRange(NameLookupType.FULL_NAME_WITH_NICKNAME_REVERSE,
- NameLookupType.FULL_NAME_WITH_NICKNAME_REVERSE, 73, 73);
-
- setScoreRange(NameLookupType.FAMILY_NAME_ONLY,
- NameLookupType.FAMILY_NAME_ONLY, 45, 75);
- setScoreRange(NameLookupType.FAMILY_NAME_ONLY,
- NameLookupType.FULL_NAME_CONCATENATED, 32, 72);
- setScoreRange(NameLookupType.FAMILY_NAME_ONLY,
- NameLookupType.FULL_NAME_REVERSE_CONCATENATED, 30, 70);
- setScoreRange(NameLookupType.FAMILY_NAME_ONLY,
- NameLookupType.EMAIL_BASED_NICKNAME, 30, 60);
- setScoreRange(NameLookupType.FAMILY_NAME_ONLY,
- NameLookupType.NICKNAME, 30, 60);
-
- setScoreRange(NameLookupType.FAMILY_NAME_ONLY_AS_NICKNAME,
- NameLookupType.FAMILY_NAME_ONLY_AS_NICKNAME, 71, 71);
- setScoreRange(NameLookupType.FAMILY_NAME_ONLY_AS_NICKNAME,
- NameLookupType.GIVEN_NAME_ONLY_AS_NICKNAME, 70, 70);
-
- setScoreRange(NameLookupType.GIVEN_NAME_ONLY,
- NameLookupType.GIVEN_NAME_ONLY, 40, 70);
- setScoreRange(NameLookupType.GIVEN_NAME_ONLY,
- NameLookupType.FULL_NAME_CONCATENATED, 32, 72);
- setScoreRange(NameLookupType.GIVEN_NAME_ONLY,
- NameLookupType.FULL_NAME_REVERSE_CONCATENATED, 30, 70);
- setScoreRange(NameLookupType.GIVEN_NAME_ONLY,
- NameLookupType.EMAIL_BASED_NICKNAME, 30, 60);
- setScoreRange(NameLookupType.GIVEN_NAME_ONLY,
- NameLookupType.NICKNAME, 30, 60);
-
- setScoreRange(NameLookupType.GIVEN_NAME_ONLY_AS_NICKNAME,
- NameLookupType.GIVEN_NAME_ONLY_AS_NICKNAME, 73, 73);
- setScoreRange(NameLookupType.GIVEN_NAME_ONLY_AS_NICKNAME,
- NameLookupType.FAMILY_NAME_ONLY_AS_NICKNAME, 70, 70);
-
setScoreRange(NameLookupType.EMAIL_BASED_NICKNAME,
NameLookupType.EMAIL_BASED_NICKNAME, 30, 60);
setScoreRange(NameLookupType.EMAIL_BASED_NICKNAME,
- NameLookupType.GIVEN_NAME_ONLY, 30, 60);
- setScoreRange(NameLookupType.EMAIL_BASED_NICKNAME,
- NameLookupType.FAMILY_NAME_ONLY, 30, 60);
- setScoreRange(NameLookupType.EMAIL_BASED_NICKNAME,
- NameLookupType.FULL_NAME_CONCATENATED, 30, 60);
- setScoreRange(NameLookupType.EMAIL_BASED_NICKNAME,
- NameLookupType.FULL_NAME_REVERSE_CONCATENATED, 30, 60);
+ NameLookupType.NAME_COLLATION_KEY, 30, 60);
setScoreRange(NameLookupType.EMAIL_BASED_NICKNAME,
NameLookupType.NICKNAME, 30, 60);
setScoreRange(NameLookupType.NICKNAME,
NameLookupType.NICKNAME, 30, 60);
setScoreRange(NameLookupType.NICKNAME,
- NameLookupType.GIVEN_NAME_ONLY, 30, 60);
- setScoreRange(NameLookupType.NICKNAME,
- NameLookupType.FAMILY_NAME_ONLY, 30, 60);
- setScoreRange(NameLookupType.NICKNAME,
- NameLookupType.FULL_NAME_CONCATENATED, 30, 60);
- setScoreRange(NameLookupType.NICKNAME,
- NameLookupType.FULL_NAME_REVERSE_CONCATENATED, 30, 60);
+ NameLookupType.NAME_COLLATION_KEY, 30, 60);
setScoreRange(NameLookupType.NICKNAME,
NameLookupType.EMAIL_BASED_NICKNAME, 30, 60);
}
diff --git a/src/com/android/providers/contacts/OpenHelper.java b/src/com/android/providers/contacts/OpenHelper.java
index 05cf678..09935b1 100644
--- a/src/com/android/providers/contacts/OpenHelper.java
+++ b/src/com/android/providers/contacts/OpenHelper.java
@@ -59,7 +59,7 @@
/* package */ class OpenHelper extends SQLiteOpenHelper {
private static final String TAG = "OpenHelper";
- private static final int DATABASE_VERSION = 65;
+ private static final int DATABASE_VERSION = 66;
private static final String DATABASE_NAME = "contacts2.db";
private static final String DATABASE_PRESENCE = "presence_db";
@@ -342,25 +342,19 @@
}
public final static class NameLookupType {
- public static final int FULL_NAME = 0;
- public static final int FULL_NAME_CONCATENATED = 1;
- public static final int FULL_NAME_REVERSE = 2;
- public static final int FULL_NAME_REVERSE_CONCATENATED = 3;
- public static final int FULL_NAME_WITH_NICKNAME = 4;
- public static final int FULL_NAME_WITH_NICKNAME_REVERSE = 5;
- public static final int GIVEN_NAME_ONLY = 6;
- public static final int GIVEN_NAME_ONLY_AS_NICKNAME = 7;
- public static final int FAMILY_NAME_ONLY = 8;
- public static final int FAMILY_NAME_ONLY_AS_NICKNAME = 9;
- public static final int NICKNAME = 10;
- public static final int EMAIL_BASED_NICKNAME = 11;
+ public static final int NAME_EXACT = 0;
+ public static final int NAME_VARIANT = 1;
+ public static final int NAME_COLLATION_KEY = 2;
+ public static final int NICKNAME = 3;
+ public static final int EMAIL_BASED_NICKNAME = 4;
// This is the highest name lookup type code plus one
- public static final int TYPE_COUNT = 12;
+ public static final int TYPE_COUNT = 5;
public static boolean isBasedOnStructuredName(int nameLookupType) {
- return nameLookupType != NameLookupType.EMAIL_BASED_NICKNAME
- && nameLookupType != NameLookupType.NICKNAME;
+ return nameLookupType == NameLookupType.NAME_EXACT
+ || nameLookupType == NameLookupType.NAME_VARIANT
+ || nameLookupType == NameLookupType.NAME_COLLATION_KEY;
}
}