summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWei Huang <weih@google.com>2009-05-21 17:59:27 -0700
committerWei Huang <weih@google.com>2009-05-21 17:59:27 -0700
commit5a7a84ffb09e24cc18d12cb5f6045a2d4304fcf2 (patch)
treec29a9e7c9e6a3fd4a002b2236222783b4726a210
parent352043d73d53982053a96fe498c781f2bf3c8847 (diff)
downloadImProvider-5a7a84ffb09e24cc18d12cb5f6045a2d4304fcf2.tar.gz
Fix and refactor sqlite statements for IM database.
-rw-r--r--src/com/android/providers/im/ImProvider.java65
1 files changed, 22 insertions, 43 deletions
diff --git a/src/com/android/providers/im/ImProvider.java b/src/com/android/providers/im/ImProvider.java
index 6082ef7..4eebe71 100644
--- a/src/com/android/providers/im/ImProvider.java
+++ b/src/com/android/providers/im/ImProvider.java
@@ -2419,17 +2419,17 @@ public class ImProvider extends ContentProvider {
if (DBG) log("deleteWithSelection: deleted " + count + " rows");
}
- private String buildThreadIdSelection(String contactSelection) {
+ private String buildContactIdSelection(String columnName, String contactSelection) {
StringBuilder buf = new StringBuilder();
- buf.append(Im.Messages.THREAD_ID);
+ buf.append(columnName);
buf.append(" in (select ");
buf.append(Im.Contacts._ID);
buf.append(" from ");
buf.append(TABLE_CONTACTS);
buf.append(" where ");
buf.append(contactSelection);
- buf.append("')");
+ buf.append(")");
return buf.toString();
}
@@ -2581,8 +2581,8 @@ public class ImProvider extends ContentProvider {
tableToChange = TABLE_MESSAGES;
provider = decodeURLSegment(url.getPathSegments().get(1));
- appendWhere(whereClause, buildThreadIdSelection(
- Im.Contacts.PROVIDER + '=' + provider));
+ appendWhere(whereClause, buildContactIdSelection(Im.Messages.THREAD_ID,
+ Im.Contacts.PROVIDER + "='" + provider + "'"));
notifyMessagesContentUri = true;
break;
@@ -2591,8 +2591,8 @@ public class ImProvider extends ContentProvider {
tableToChange = TABLE_MESSAGES;
accountStr = decodeURLSegment(url.getPathSegments().get(1));
- appendWhere(whereClause, buildThreadIdSelection(
- Im.Contacts.ACCOUNT + '=' + accountStr));
+ appendWhere(whereClause, buildContactIdSelection(Im.Messages.THREAD_ID,
+ Im.Contacts.ACCOUNT + "='" + accountStr + "'"));
notifyMessagesContentUri = true;
break;
@@ -2642,9 +2642,10 @@ public class ImProvider extends ContentProvider {
tableToChange = TABLE_IN_MEMORY_MESSAGES;
provider = decodeURLSegment(url.getPathSegments().get(1));
- appendWhere(whereClause, buildThreadIdSelection(
- Im.Contacts.PROVIDER + '=' + provider));
+ appendWhere(whereClause, buildContactIdSelection(Im.Messages.THREAD_ID,
+ Im.Contacts.PROVIDER + "='" + provider + "'"));
+ if (DBG) log("delete (MATCH_OTR_MESSAGES_BY_PROVIDER) sel => " + whereClause);
notifyMessagesContentUri = true;
break;
@@ -2652,9 +2653,10 @@ public class ImProvider extends ContentProvider {
tableToChange = TABLE_IN_MEMORY_MESSAGES;
accountStr = decodeURLSegment(url.getPathSegments().get(1));
- appendWhere(whereClause, buildThreadIdSelection(
- Im.Contacts.ACCOUNT + '=' + accountStr));
+ appendWhere(whereClause, buildContactIdSelection(Im.Messages.THREAD_ID,
+ Im.Contacts.ACCOUNT + "='" + accountStr + "'"));
+ if (DBG) log("delete (MATCH_OTR_MESSAGES_BY_ACCOUNT) sel => " + whereClause);
notifyMessagesContentUri = true;
break;
@@ -2705,23 +2707,12 @@ public class ImProvider extends ContentProvider {
case MATCH_CHATS_BY_ACCOUNT:
tableToChange = TABLE_CHATS;
- if (whereClause.length() > 0) {
- whereClause.append(" AND ");
- }
- whereClause.append(Im.Chats.CONTACT_ID);
- whereClause.append(" in (select ");
- whereClause.append(Im.Contacts._ID);
- whereClause.append(" from ");
- whereClause.append(TABLE_CONTACTS);
- whereClause.append(" where ");
- whereClause.append(Im.Contacts.ACCOUNT);
- whereClause.append("='");
- whereClause.append(url.getLastPathSegment());
- whereClause.append("')");
-
- if (DBG) log("deleteInternal (MATCH_CHATS_BY_ACCOUNT): sel => " +
- whereClause.toString());
+ accountStr = decodeURLSegment(url.getLastPathSegment());
+ appendWhere(whereClause, buildContactIdSelection(Im.Chats.CONTACT_ID,
+ Im.Contacts.ACCOUNT + "='" + accountStr + "'"));
+ if (DBG) log("delete (MATCH_CHATS_BY_ACCOUNT) sel => " + whereClause);
+
changedItemId = null;
break;
@@ -2744,23 +2735,11 @@ public class ImProvider extends ContentProvider {
case MATCH_PRESENCE_BY_ACCOUNT:
tableToChange = TABLE_PRESENCE;
- if (whereClause.length() > 0) {
- whereClause.append(" AND ");
- }
- whereClause.append(Im.Presence.CONTACT_ID);
- whereClause.append(" in (select ");
- whereClause.append(Im.Contacts._ID);
- whereClause.append(" from ");
- whereClause.append(TABLE_CONTACTS);
- whereClause.append(" where ");
- whereClause.append(Im.Contacts.ACCOUNT);
- whereClause.append("='");
- whereClause.append(url.getLastPathSegment());
- whereClause.append("')");
-
- if (DBG) log("deleteInternal (MATCH_PRESENCE_BY_ACCOUNT): sel => " +
- whereClause.toString());
+ accountStr = decodeURLSegment(url.getLastPathSegment());
+ appendWhere(whereClause, buildContactIdSelection(Im.Presence.CONTACT_ID,
+ Im.Contacts.ACCOUNT + "='" + accountStr + "'"));
+ if (DBG) log("delete (MATCH_PRESENCE_BY_ACCOUNT): sel => " + whereClause);
changedItemId = null;
break;