From 0ba58de23658776b42d3fcd597facbfa0b638af4 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Mon, 18 May 2009 19:04:17 -0700 Subject: [PATCH] handle OTR messages by storing them in an in-memory table; remove groupchat message urls since we can get to messages by thread ids. --- core/java/android/provider/Im.java | 104 ++++++++++++++++++++++++----- 1 file changed, 86 insertions(+), 18 deletions(-) diff --git a/core/java/android/provider/Im.java b/core/java/android/provider/Im.java index 898c32119ce84..c36f5080d2a81 100644 --- a/core/java/android/provider/Im.java +++ b/core/java/android/provider/Im.java @@ -973,7 +973,7 @@ public class Im { /** * Gets the Uri to query messages by provider. * - * @param providerId the server provider id. + * @param providerId the service provider id. * @return the Uri */ public static final Uri getContentUriByProvider(long providerId) { @@ -983,21 +983,74 @@ public class Im { } /** - * Gets the Uri to query groupchat messages by thread id. + * Gets the Uri to query off the record messages by account. * - * @param threadId the thread id of the groupchat message. + * @param accountId the account id. * @return the Uri */ - public static final Uri getGroupChatContentUriByThreadId(long threadId) { - Uri.Builder builder = GROUP_CHAT_CONTENT_URI_MESSAGES_BY_THREAD_ID.buildUpon(); + public static final Uri getContentUriByAccount(long accountId) { + Uri.Builder builder = CONTENT_URI_BY_ACCOUNT.buildUpon(); + ContentUris.appendId(builder, accountId); + return builder.build(); + } + + /** + * Gets the Uri to query off the record messages by thread id. + * + * @param threadId the thread id of the message. + * @return the Uri + */ + public static final Uri getOtrMessagesContentUriByThreadId(long threadId) { + Uri.Builder builder = OTR_MESSAGES_CONTENT_URI_BY_THREAD_ID.buildUpon(); ContentUris.appendId(builder, threadId); return builder.build(); } + /** + * @deprecated + * + * Gets the Uri to query off the record messages by account and contact. + * + * @param accountId the account id of the contact. + * @param username the user name of the contact. + * @return the Uri + */ + public static final Uri getOtrMessagesContentUriByContact(long accountId, String username) { + Uri.Builder builder = OTR_MESSAGES_CONTENT_URI_BY_ACCOUNT_AND_CONTACT.buildUpon(); + ContentUris.appendId(builder, accountId); + builder.appendPath(username); + return builder.build(); + } + + /** + * Gets the Uri to query off the record messages by provider. + * + * @param providerId the service provider id. + * @return the Uri + */ + public static final Uri getOtrMessagesContentUriByProvider(long providerId) { + Uri.Builder builder = OTR_MESSAGES_CONTENT_URI_BY_PROVIDER.buildUpon(); + ContentUris.appendId(builder, providerId); + return builder.build(); + } + + /** + * Gets the Uri to query off the record messages by account. + * + * @param accountId the account id. + * @return the Uri + */ + public static final Uri getOtrMessagesContentUriByAccount(long accountId) { + Uri.Builder builder = OTR_MESSAGES_CONTENT_URI_BY_ACCOUNT.buildUpon(); + ContentUris.appendId(builder, accountId); + return builder.build(); + } + /** * The content:// style URL for this table */ - public static final Uri CONTENT_URI = Uri.parse("content://im/messages"); + public static final Uri CONTENT_URI = + Uri.parse("content://im/messages"); /** * The content:// style URL for messages by thread id @@ -1018,32 +1071,47 @@ public class Im { Uri.parse("content://im/messagesByProvider"); /** - * The content:// style URL for groupchat messages. + * The content:// style URL for messages by account */ - public static final Uri GROUP_CHAT_CONTENT_URI = Uri.parse("content://im/groupMessages"); + public static final Uri CONTENT_URI_BY_ACCOUNT = + Uri.parse("content://im/messagesByAccount"); /** - * The content:// style URL for groupchat messages by thread id + * The content:// style url for off the record messages */ - public static final Uri GROUP_CHAT_CONTENT_URI_MESSAGES_BY_THREAD_ID = - Uri.parse("content://im/groupMessagesByThreadId"); + public static final Uri OTR_MESSAGES_CONTENT_URI = + Uri.parse("content://im/otrMessages"); /** - * The MIME type of {@link #CONTENT_URI} providing a directory of groupchat messages. + * The content:// style url for off the record messages by thread id */ - public static final String GROUP_CHAT_CONTENT_TYPE = - "vnd.android.cursor.dir/im-groupMessages"; + public static final Uri OTR_MESSAGES_CONTENT_URI_BY_THREAD_ID = + Uri.parse("content://im/otrMessagesByThreadId"); /** - * The MIME type of a {@link #CONTENT_URI} subdirectory of a single groupchat message. + * The content:// style url for off the record messages by account and contact */ - public static final String GROUP_CHAT_CONTENT_ITEM_TYPE = - "vnd.android.cursor.item/im-groupMessages"; + public static final Uri OTR_MESSAGES_CONTENT_URI_BY_ACCOUNT_AND_CONTACT = + Uri.parse("content://im/otrMessagesByAcctAndContact"); + + /** + * The content:// style URL for off the record messages by provider + */ + public static final Uri OTR_MESSAGES_CONTENT_URI_BY_PROVIDER = + Uri.parse("content://im/otrMessagesByProvider"); + + /** + * The content:// style URL for off the record messages by account + */ + public static final Uri OTR_MESSAGES_CONTENT_URI_BY_ACCOUNT = + Uri.parse("content://im/otrMessagesByAccount"); + /** * The MIME type of {@link #CONTENT_URI} providing a directory of * people. */ - public static final String CONTENT_TYPE = "vnd.android.cursor.dir/im-messages"; + public static final String CONTENT_TYPE = + "vnd.android.cursor.dir/im-messages"; /** * The MIME type of a {@link #CONTENT_URI} subdirectory of a single