summaryrefslogtreecommitdiffstats
path: root/src/com/android/dialer/database/DialerDatabaseHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/dialer/database/DialerDatabaseHelper.java')
-rw-r--r--src/com/android/dialer/database/DialerDatabaseHelper.java45
1 files changed, 37 insertions, 8 deletions
diff --git a/src/com/android/dialer/database/DialerDatabaseHelper.java b/src/com/android/dialer/database/DialerDatabaseHelper.java
index 60179f6b9..aad9472a6 100644
--- a/src/com/android/dialer/database/DialerDatabaseHelper.java
+++ b/src/com/android/dialer/database/DialerDatabaseHelper.java
@@ -47,6 +47,7 @@ import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
@@ -67,6 +68,10 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
private static final AtomicBoolean sInUpdate = new AtomicBoolean(false);
private final Context mContext;
+ private Class mMultiMatchClass;
+ private Object mMultiMatchObject;
+ private Method mMultiMatchMethod;
+
/**
* SmartDial DB version ranges:
* <pre>
@@ -83,7 +88,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
private static final String LAST_UPDATED_MILLIS = "last_updated_millis";
private static final String DATABASE_VERSION_PROPERTY = "database_version";
- private static final int MAX_ENTRIES = 20;
+ private static final int MAX_ENTRIES = 40;
public interface Tables {
/** Saves the necessary smart dial information of all contacts. */
@@ -346,6 +351,33 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
mContext = Preconditions.checkNotNull(context, "Context must not be null");
}
+ private void initMultiLanguageSearch() {
+ try {
+ if (mMultiMatchClass == null) {
+ mMultiMatchClass = Class
+ .forName("com.qualcomm.qti.smartsearch.SmartMatch");
+ Log.d(TAG, "create multi match success");
+ }
+ if (mMultiMatchObject == null && mMultiMatchClass != null) {
+ mMultiMatchObject = mMultiMatchClass.newInstance();
+ }
+ if (mMultiMatchMethod == null && mMultiMatchClass != null) {
+ mMultiMatchMethod = mMultiMatchClass.getDeclaredMethod(
+ "getMatchStringIndex", String.class, String.class,
+ int.class);
+ }
+ } catch (Exception e) {
+ }
+ }
+
+ public Object getMultiMatchObject() {
+ return mMultiMatchObject;
+ }
+
+ public Method getMultiMatchMethod() {
+ return mMultiMatchMethod;
+ }
+
/**
* Creates tables in the database when database is created for the first time.
*
@@ -758,6 +790,8 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
* update.
*/
public void updateSmartDialDatabase() {
+ initMultiLanguageSearch();
+
final SQLiteDatabase db = getWritableDatabase();
synchronized(mLock) {
@@ -925,7 +959,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
final SQLiteDatabase db = getReadableDatabase();
/** Uses SQL query wildcard '%' to represent prefix matching.*/
- final String looseQuery = query + "%";
+ //final String looseQuery = query + "%";
final ArrayList<ContactNumber> result = Lists.newArrayList();
@@ -941,12 +975,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
SmartDialDbColumns.NUMBER + ", " +
SmartDialDbColumns.CONTACT_ID + ", " +
SmartDialDbColumns.LOOKUP_KEY +
- " FROM " + Tables.SMARTDIAL_TABLE + " WHERE " +
- SmartDialDbColumns.CONTACT_ID + " IN " +
- " (SELECT " + PrefixColumns.CONTACT_ID +
- " FROM " + Tables.PREFIX_TABLE +
- " WHERE " + Tables.PREFIX_TABLE + "." + PrefixColumns.PREFIX +
- " LIKE '" + looseQuery + "')" +
+ " FROM " + Tables.SMARTDIAL_TABLE +
" ORDER BY " + SmartDialSortingOrder.SORT_ORDER,
new String[] {currentTimeStamp});
if (cursor == null) {