From 33e176f4919569a9444d641e94034785c10c5562 Mon Sep 17 00:00:00 2001 From: Marc Blank Date: Sun, 21 Jun 2009 16:37:35 -0500 Subject: [PATCH] Remove the bodyId column in the message base for consistency Foreign keys belong in the child, not the parent, as is done with other EmailContent classes. Therefore, Body has a messageKey, and Message has no bodyKey. Updated MessageView to use the proper query for retrieving a message body. --- .../android/email/activity/MessageView.java | 12 +++---- .../android/email/provider/EmailContent.java | 36 ++++++++----------- .../android/email/provider/EmailProvider.java | 8 +++-- 3 files changed, 26 insertions(+), 30 deletions(-) diff --git a/src/com/android/email/activity/MessageView.java b/src/com/android/email/activity/MessageView.java index 8bf4885a8..722c564f8 100644 --- a/src/com/android/email/activity/MessageView.java +++ b/src/com/android/email/activity/MessageView.java @@ -985,13 +985,13 @@ public class MessageView extends Activity */ private class LoadBodyTask extends AsyncTask { - private long mBodyId; + private long mMessageId; /** * Special constructor to cache some local info */ - public LoadBodyTask(long bodyId) { - mBodyId = bodyId; + public LoadBodyTask(long messageId) { + mMessageId = messageId; } @Override @@ -999,9 +999,9 @@ public class MessageView extends Activity return MessageView.this.managedQuery( EmailContent.Body.CONTENT_URI, BODY_CONTENT_PROJECTION, - EmailContent.RECORD_ID + "=?", + EmailContent.Body.MESSAGE_KEY + "=?", new String[] { - String.valueOf(mBodyId) + String.valueOf(mMessageId) }, null); } @@ -1042,7 +1042,7 @@ public class MessageView extends Activity mAttachmentIcon.setVisibility(message.mAttachments != null ? View.VISIBLE : View.GONE); // Ask for body - mLoadBodyTask = new LoadBodyTask(message.mBodyKey); + mLoadBodyTask = new LoadBodyTask(message.mId); mLoadBodyTask.execute(); } diff --git a/src/com/android/email/provider/EmailContent.java b/src/com/android/email/provider/EmailContent.java index 4ec045308..49c871d0b 100644 --- a/src/com/android/email/provider/EmailContent.java +++ b/src/com/android/email/provider/EmailContent.java @@ -327,8 +327,6 @@ public abstract class EmailContent { public static final String TEXT_INFO = "textInfo"; // Information about the html part (if any) in form ;;; public static final String HTML_INFO = "htmlInfo"; - // Foreign key to the Body content of this message (text and/or html) - public static final String BODY_ID = "bodyId"; // Sync related identifiers // Any client-required identifier @@ -371,27 +369,26 @@ public abstract class EmailContent { public static final int CONTENT_FLAGS_COLUMN = 9; public static final int CONTENT_TEXT_INFO_COLUMN = 10; public static final int CONTENT_HTML_INFO_COLUMN = 11; - public static final int CONTENT_BODY_ID_COLUMN = 12; - public static final int CONTENT_SERVER_ID_COLUMN = 13; - public static final int CONTENT_CLIENT_ID_COLUMN = 14; - public static final int CONTENT_MESSAGE_ID_COLUMN = 15; - public static final int CONTENT_THREAD_ID_COLUMN = 16; - public static final int CONTENT_MAILBOX_KEY_COLUMN = 17; - public static final int CONTENT_ACCOUNT_KEY_COLUMN = 18; - public static final int CONTENT_REFERENCE_KEY_COLUMN = 19; - public static final int CONTENT_SENDER_LIST_COLUMN = 20; - public static final int CONTENT_FROM_LIST_COLUMN = 21; - public static final int CONTENT_TO_LIST_COLUMN = 22; - public static final int CONTENT_CC_LIST_COLUMN = 23; - public static final int CONTENT_BCC_LIST_COLUMN = 24; - public static final int CONTENT_REPLY_TO_COLUMN = 25; - public static final int CONTENT_SERVER_VERSION_COLUMN = 26; + public static final int CONTENT_SERVER_ID_COLUMN = 12; + public static final int CONTENT_CLIENT_ID_COLUMN = 13; + public static final int CONTENT_MESSAGE_ID_COLUMN = 14; + public static final int CONTENT_THREAD_ID_COLUMN = 15; + public static final int CONTENT_MAILBOX_KEY_COLUMN = 16; + public static final int CONTENT_ACCOUNT_KEY_COLUMN = 17; + public static final int CONTENT_REFERENCE_KEY_COLUMN = 18; + public static final int CONTENT_SENDER_LIST_COLUMN = 19; + public static final int CONTENT_FROM_LIST_COLUMN = 20; + public static final int CONTENT_TO_LIST_COLUMN = 21; + public static final int CONTENT_CC_LIST_COLUMN = 22; + public static final int CONTENT_BCC_LIST_COLUMN = 23; + public static final int CONTENT_REPLY_TO_COLUMN = 24; + public static final int CONTENT_SERVER_VERSION_COLUMN = 25; public static final String[] CONTENT_PROJECTION = new String[] { RECORD_ID, MessageColumns.DISPLAY_NAME, MessageColumns.TIMESTAMP, MessageColumns.SUBJECT, MessageColumns.PREVIEW, MessageColumns.FLAG_READ, MessageColumns.FLAG_LOADED, MessageColumns.FLAG_FAVORITE, MessageColumns.FLAG_ATTACHMENT, MessageColumns.FLAGS, MessageColumns.TEXT_INFO, - MessageColumns.HTML_INFO, MessageColumns.BODY_ID, SyncColumns.SERVER_ID, + MessageColumns.HTML_INFO, SyncColumns.SERVER_ID, MessageColumns.CLIENT_ID, MessageColumns.MESSAGE_ID, MessageColumns.THREAD_ID, MessageColumns.MAILBOX_KEY, MessageColumns.ACCOUNT_KEY, MessageColumns.REFERENCE_KEY, MessageColumns.SENDER_LIST, MessageColumns.FROM_LIST, MessageColumns.TO_LIST, @@ -458,7 +455,6 @@ public abstract class EmailContent { public String mMessageId; public String mThreadId; - public long mBodyKey; public long mMailboxKey; public long mAccountKey; public long mReferenceKey; @@ -528,7 +524,6 @@ public abstract class EmailContent { values.put(MessageColumns.CLIENT_ID, mClientId); values.put(MessageColumns.MESSAGE_ID, mMessageId); - values.put(MessageColumns.BODY_ID, mBodyKey); values.put(MessageColumns.MAILBOX_KEY, mMailboxKey); values.put(MessageColumns.ACCOUNT_KEY, mAccountKey); values.put(MessageColumns.REFERENCE_KEY, mReferenceKey); @@ -581,7 +576,6 @@ public abstract class EmailContent { mClientId = c.getString(CONTENT_CLIENT_ID_COLUMN); mMessageId = c.getString(CONTENT_MESSAGE_ID_COLUMN); mThreadId = c.getString(CONTENT_THREAD_ID_COLUMN); - mBodyKey = c.getLong(CONTENT_BODY_ID_COLUMN); mMailboxKey = c.getLong(CONTENT_MAILBOX_KEY_COLUMN); mAccountKey = c.getLong(CONTENT_ACCOUNT_KEY_COLUMN); mReferenceKey = c.getLong(CONTENT_REFERENCE_KEY_COLUMN); diff --git a/src/com/android/email/provider/EmailProvider.java b/src/com/android/email/provider/EmailProvider.java index 9a9af13f2..d6c7a9d1f 100644 --- a/src/com/android/email/provider/EmailProvider.java +++ b/src/com/android/email/provider/EmailProvider.java @@ -64,7 +64,7 @@ public class EmailProvider extends ContentProvider { // In these early versions, updating the database version will cause all tables to be deleted // Obviously, we'll handle upgrades differently once things are a bit stable - public static final int DATABASE_VERSION = 12; + public static final int DATABASE_VERSION = 13; public static final int BODY_DATABASE_VERSION = 1; public static final String EMAIL_AUTHORITY = "com.android.email.provider"; @@ -103,7 +103,8 @@ public class EmailProvider extends ContentProvider { private static final int BODY_BASE = 0x6000; private static final int BODY = BODY_BASE; private static final int BODY_ID = BODY_BASE + 1; - private static final int BODY_HTML = BODY_BASE + 2; + private static final int BODY_MESSAGE_ID = BODY_BASE + 2; + private static final int BODY_HTML = BODY_BASE + 3; private static final int BODY_TEXT = BODY_BASE + 4; @@ -163,6 +164,8 @@ public class EmailProvider extends ContentProvider { matcher.addURI(EMAIL_AUTHORITY, "body", BODY); // A specific mail body matcher.addURI(EMAIL_AUTHORITY, "body/#", BODY_ID); + // The body for a specific message + matcher.addURI(EMAIL_AUTHORITY, "body/message/#", BODY_MESSAGE_ID); // The HTML part of a specific mail body matcher.addURI(EMAIL_AUTHORITY, "body/#/html", BODY_HTML); // The plain text part of a specific mail body @@ -196,7 +199,6 @@ public class EmailProvider extends ContentProvider { + MessageColumns.CLIENT_ID + " integer, " + MessageColumns.MESSAGE_ID + " text, " + MessageColumns.THREAD_ID + " text, " - + MessageColumns.BODY_ID + " integer, " + MessageColumns.MAILBOX_KEY + " integer, " + MessageColumns.ACCOUNT_KEY + " integer, " + MessageColumns.REFERENCE_KEY + " integer, "