diff options
author | Jeff Hamilton <jham@android.com> | 2009-09-28 16:56:38 -0700 |
---|---|---|
committer | Jeff Hamilton <jham@android.com> | 2009-09-28 17:10:35 -0700 |
commit | ba965ceeb86dd9404d43f418daae357bc4afbdcd (patch) | |
tree | 3d2529284a4ebe15ac0bbafc04f32a86ce2919f5 | |
parent | d237c80845d8e13164d34278d3c20e31f8d80b4d (diff) | |
download | packages_providers_ContactsProvider-ba965ceeb86dd9404d43f418daae357bc4afbdcd.zip packages_providers_ContactsProvider-ba965ceeb86dd9404d43f418daae357bc4afbdcd.tar.gz packages_providers_ContactsProvider-ba965ceeb86dd9404d43f418daae357bc4afbdcd.tar.bz2 |
Fix handling of times_contacted.
Change-Id: I1fc10736cf4848acdba657fdefabf00a711fd56b
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 + ");"); |