summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorJeff Hamilton <jham@android.com>2009-09-28 16:56:38 -0700
committerJeff Hamilton <jham@android.com>2009-09-28 17:10:35 -0700
commitba965ceeb86dd9404d43f418daae357bc4afbdcd (patch)
tree3d2529284a4ebe15ac0bbafc04f32a86ce2919f5 /src/com/android
parentd237c80845d8e13164d34278d3c20e31f8d80b4d (diff)
downloadpackages_providers_ContactsProvider-ba965ceeb86dd9404d43f418daae357bc4afbdcd.zip
packages_providers_ContactsProvider-ba965ceeb86dd9404d43f418daae357bc4afbdcd.tar.gz
packages_providers_ContactsProvider-ba965ceeb86dd9404d43f418daae357bc4afbdcd.tar.bz2
Fix handling of times_contacted.
Change-Id: I1fc10736cf4848acdba657fdefabf00a711fd56b
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/providers/contacts/ContactsProvider2.java19
-rw-r--r--src/com/android/providers/contacts/LegacyApiSupport.java13
-rw-r--r--src/com/android/providers/contacts/OpenHelper.java19
3 files changed, 35 insertions, 16 deletions
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index d51f103..858d144 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -365,8 +365,8 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
private SQLiteStatement mSetPrimaryStatement;
/** Precompiled sql statement for setting a data record to the super primary. */
private SQLiteStatement mSetSuperPrimaryStatement;
- /** Precompiled sql statement for incrementing times contacted for an contact */
- private SQLiteStatement mLastTimeContactedUpdate;
+ /** Precompiled sql statement for incrementing times contacted for a contact */
+ private SQLiteStatement mContactsLastTimeContactedUpdate;
/** Precompiled sql statement for updating a contact display name */
private SQLiteStatement mRawContactDisplayNameUpdate;
/** Precompiled sql statement for marking a raw contact as dirty */
@@ -1548,9 +1548,10 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
" FROM " + Tables.RAW_CONTACTS +
" WHERE " + RawContacts._ID + "=?))");
- mLastTimeContactedUpdate = db.compileStatement("UPDATE " + Tables.RAW_CONTACTS + " SET "
- + RawContacts.TIMES_CONTACTED + "=" + RawContacts.TIMES_CONTACTED + "+1,"
- + RawContacts.LAST_TIME_CONTACTED + "=? WHERE " + RawContacts.CONTACT_ID + "=?");
+ mContactsLastTimeContactedUpdate = db.compileStatement(
+ "UPDATE " + Tables.CONTACTS +
+ " SET " + Contacts.LAST_TIME_CONTACTED + "=? " +
+ "WHERE " + Contacts._ID + "=?");
mRawContactDisplayNameUpdate = db.compileStatement(
"UPDATE " + Tables.RAW_CONTACTS +
@@ -2952,10 +2953,10 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
return mDb.update(Tables.CONTACTS, mValues, Contacts._ID + "=" + contactId, null);
}
- public void updateContactTime(long contactId, long lastTimeContacted) {
- mLastTimeContactedUpdate.bindLong(1, lastTimeContacted);
- mLastTimeContactedUpdate.bindLong(2, contactId);
- mLastTimeContactedUpdate.execute();
+ public void updateContactLastContactedTime(long contactId, long lastTimeContacted) {
+ mContactsLastTimeContactedUpdate.bindLong(1, lastTimeContacted);
+ mContactsLastTimeContactedUpdate.bindLong(2, contactId);
+ mContactsLastTimeContactedUpdate.execute();
}
private int updateAggregationException(SQLiteDatabase db, ContentValues values) {
diff --git a/src/com/android/providers/contacts/LegacyApiSupport.java b/src/com/android/providers/contacts/LegacyApiSupport.java
index 58a6a97..ec77309 100644
--- a/src/com/android/providers/contacts/LegacyApiSupport.java
+++ b/src/com/android/providers/contacts/LegacyApiSupport.java
@@ -490,8 +490,6 @@ public class LegacyApiSupport {
SQLiteDatabase db = mOpenHelper.getReadableDatabase();
mLastTimeContactedUpdate = db.compileStatement("UPDATE " + Tables.RAW_CONTACTS + " SET "
- + RawContacts.TIMES_CONTACTED + "="
- + RawContacts.TIMES_CONTACTED + "+1,"
+ RawContacts.LAST_TIME_CONTACTED + "=? WHERE "
+ RawContacts._ID + "=?");
@@ -1091,12 +1089,13 @@ public class LegacyApiSupport {
long rawContactId = Long.parseLong(uri.getPathSegments().get(1));
long contactId = mOpenHelper.getContactId(rawContactId);
if (contactId != 0) {
- mContactsProvider.updateContactTime(contactId, lastTimeContacted);
- } else {
- mLastTimeContactedUpdate.bindLong(1, lastTimeContacted);
- mLastTimeContactedUpdate.bindLong(2, rawContactId);
- mLastTimeContactedUpdate.execute();
+ mContactsProvider.updateContactLastContactedTime(contactId, lastTimeContacted);
}
+
+ mLastTimeContactedUpdate.bindLong(1, lastTimeContacted);
+ mLastTimeContactedUpdate.bindLong(2, rawContactId);
+ mLastTimeContactedUpdate.execute();
+
return 1;
}
diff --git a/src/com/android/providers/contacts/OpenHelper.java b/src/com/android/providers/contacts/OpenHelper.java
index f57f116..e8a4c4d 100644
--- a/src/com/android/providers/contacts/OpenHelper.java
+++ b/src/com/android/providers/contacts/OpenHelper.java
@@ -37,6 +37,7 @@ import android.os.Bundle;
import android.provider.BaseColumns;
import android.provider.ContactsContract;
import android.provider.CallLog.Calls;
+import android.provider.Contacts.People;
import android.provider.ContactsContract.AggregationExceptions;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
@@ -620,6 +621,15 @@ import java.util.HashMap;
ContactsColumns.SINGLE_IS_RESTRICTED + " INTEGER NOT NULL DEFAULT 0" +
");");
+ db.execSQL("CREATE TRIGGER contacts_times_contacted UPDATE OF " +
+ Contacts.LAST_TIME_CONTACTED + " ON " + Tables.CONTACTS + " " +
+ "BEGIN " +
+ "UPDATE " + Tables.CONTACTS + " SET "
+ + Contacts.TIMES_CONTACTED + " = " + "" +
+ "(new." + Contacts.TIMES_CONTACTED + " + 1)"
+ + " WHERE _id = new._id;" +
+ "END");
+
db.execSQL("CREATE INDEX contacts_visible_index ON " + Tables.CONTACTS + " (" +
Contacts.IN_VISIBLE_GROUP + "," +
Contacts.DISPLAY_NAME + " COLLATE LOCALIZED" +
@@ -661,6 +671,15 @@ import java.util.HashMap;
RawContacts.SYNC4 + " TEXT " +
");");
+ db.execSQL("CREATE TRIGGER raw_contacts_times_contacted UPDATE OF " +
+ RawContacts.LAST_TIME_CONTACTED + " ON " + Tables.RAW_CONTACTS + " " +
+ "BEGIN " +
+ "UPDATE " + Tables.RAW_CONTACTS + " SET "
+ + RawContacts.TIMES_CONTACTED + " = " + "" +
+ "(new." + RawContacts.TIMES_CONTACTED + " + 1)"
+ + " WHERE _id = new._id;" +
+ "END");
+
db.execSQL("CREATE INDEX raw_contacts_contact_id_index ON " + Tables.RAW_CONTACTS + " (" +
RawContacts.CONTACT_ID +
");");