Merge "Removed some UI provider code from EmailProvider"

This commit is contained in:
Paul Westbrook 2012-03-20 16:38:43 -07:00 committed by Android (Google) Code Review
commit 77cc6891ea
2 changed files with 0 additions and 153 deletions

View File

@ -27,8 +27,6 @@ unified_email_src_dir := ../UnifiedEmail/src
imported_unified_email_files := \
$(unified_email_src_dir)/com/android/mail/providers/UIProviderValidator.java \
$(unified_email_src_dir)/com/android/mail/providers/UIProvider.java \
$(unified_email_src_dir)/com/android/mail/providers/Attachment.java \
$(unified_email_src_dir)/com/android/mail/providers/Message.java
LOCAL_MODULE_TAGS := optional

View File

@ -974,10 +974,6 @@ public class EmailProvider extends ContentProvider {
try {
switch (match) {
case UI_SAVEDRAFT:
return uiSaveDraft(uri, values);
case UI_SENDMAIL:
return uiSendMail(uri, values);
// NOTE: It is NOT legal for production code to insert directly into UPDATED_MESSAGE
// or DELETED_MESSAGE; see the comment below for details
case UPDATED_MESSAGE:
@ -1552,10 +1548,6 @@ outer:
switch (match) {
case UI_ATTACHMENT:
return uiUpdateAttachment(uri, values);
case UI_UPDATEDRAFT:
return uiUpdateDraft(uri, values);
case UI_SENDDRAFT:
return uiSendDraft(uri, values);
case UI_MESSAGE:
return uiUpdateMessage(uri, values);
case MAILBOX_ID_ADD_TO_FIELD:
@ -2437,22 +2429,6 @@ outer:
return c;
}
/**
* Convert a UIProvider attachment to an EmailProvider attachment (for sending); we only need
* a few of the fields
* @param uiAtt the UIProvider attachment to convert
* @return the EmailProvider attachment
*/
private Attachment convertUiAttachmentToAttachment(
com.android.mail.providers.Attachment uiAtt) {
Attachment att = new Attachment();
att.mContentUri = uiAtt.contentUri.toString();
att.mFileName = uiAtt.name;
att.mMimeType = uiAtt.contentType;
att.mSize = uiAtt.size;
return att;
}
/**
* Create a mailbox given the account and mailboxType.
*/
@ -2522,133 +2498,6 @@ outer:
}
return msg;
}
/**
* Given a mailbox and the content values for a message, create/save the message in the mailbox
* @param mailbox the mailbox to use
* @param values the content values that represent message fields
* @return the uri of the newly created message
*/
private Uri uiSaveMessage(Message msg, Mailbox mailbox, ContentValues values) {
Context context = getContext();
// Fill in the message
Account account = Account.restoreAccountWithId(context, mailbox.mAccountKey);
if (account == null) return null;
msg.mFrom = account.mEmailAddress;
msg.mTimeStamp = System.currentTimeMillis();
msg.mTo = values.getAsString(UIProvider.MessageColumns.TO);
msg.mCc = values.getAsString(UIProvider.MessageColumns.CC);
msg.mBcc = values.getAsString(UIProvider.MessageColumns.BCC);
msg.mSubject = values.getAsString(UIProvider.MessageColumns.SUBJECT);
msg.mText = values.getAsString(UIProvider.MessageColumns.BODY_TEXT);
msg.mHtml = values.getAsString(UIProvider.MessageColumns.BODY_HTML);
msg.mMailboxKey = mailbox.mId;
msg.mAccountKey = mailbox.mAccountKey;
msg.mDisplayName = msg.mTo;
msg.mFlagLoaded = Message.FLAG_LOADED_COMPLETE;
// Get attachments from the ContentValues
ArrayList<com.android.mail.providers.Attachment> uiAtts =
com.android.mail.providers.Attachment.getAttachmentsFromJoinedAttachmentInfo(
values.getAsString(UIProvider.MessageColumns.JOINED_ATTACHMENT_INFOS));
ArrayList<Attachment> atts = new ArrayList<Attachment>();
for (com.android.mail.providers.Attachment uiAtt: uiAtts) {
// Convert to our attachments and add to the list; everything else should "just work"
atts.add(convertUiAttachmentToAttachment(uiAtt));
}
if (!atts.isEmpty()) {
msg.mAttachments = atts;
}
// Save it or update it...
if (!msg.isSaved()) {
msg.save(context);
} else {
// This is tricky due to how messages/attachments are saved; rather than putz with
// what's changed, we'll delete/re-add them
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
// Delete all existing attachments
ops.add(ContentProviderOperation.newDelete(
ContentUris.withAppendedId(Attachment.MESSAGE_ID_URI, msg.mId))
.build());
// Delete the body
ops.add(ContentProviderOperation.newDelete(Body.CONTENT_URI)
.withSelection(Body.MESSAGE_KEY + "=?", new String[] {Long.toString(msg.mId)})
.build());
// Add the ops for the message, atts, and body
msg.addSaveOps(ops);
// Do it!
try {
applyBatch(ops);
} catch (OperationApplicationException e) {
}
}
if (mailbox.mType == Mailbox.TYPE_OUTBOX) {
EmailServiceProxy service = EmailServiceUtils.getServiceForAccount(context,
mServiceCallback, mailbox.mAccountKey);
try {
service.startSync(mailbox.mId, true);
} catch (RemoteException e) {
}
}
return uiUri("uimessage", msg.mId);
}
/**
* Create and send the message via the account indicated in the uri
* @param uri the incoming uri
* @param values the content values that represent message fields
* @return the uri of the created message
*/
private Uri uiSendMail(Uri uri, ContentValues values) {
List<String> pathSegments = uri.getPathSegments();
Mailbox mailbox = getMailboxByAccountIdAndType(pathSegments.get(1), Mailbox.TYPE_OUTBOX);
if (mailbox == null) return null;
Message msg = getMessageFromPathSegments(pathSegments);
try {
return uiSaveMessage(msg, mailbox, values);
} finally {
// Kick observers
getContext().getContentResolver().notifyChange(Mailbox.CONTENT_URI, null);
}
}
/**
* Create a message and save it to the drafts folder of the account indicated in the uri
* @param uri the incoming uri
* @param values the content values that represent message fields
* @return the uri of the created message
*/
private Uri uiSaveDraft(Uri uri, ContentValues values) {
List<String> pathSegments = uri.getPathSegments();
Mailbox mailbox = getMailboxByAccountIdAndType(pathSegments.get(1), Mailbox.TYPE_DRAFTS);
if (mailbox == null) return null;
Message msg = getMessageFromPathSegments(pathSegments);
return uiSaveMessage(msg, mailbox, values);
}
private int uiUpdateDraft(Uri uri, ContentValues values) {
Context context = getContext();
Message msg = Message.restoreMessageWithId(context,
Long.parseLong(uri.getPathSegments().get(1)));
if (msg == null) return 0;
Mailbox mailbox = Mailbox.restoreMailboxWithId(context, msg.mMailboxKey);
if (mailbox == null) return 0;
uiSaveMessage(msg, mailbox, values);
return 1;
}
private int uiSendDraft(Uri uri, ContentValues values) {
Context context = getContext();
Message msg = Message.restoreMessageWithId(context,
Long.parseLong(uri.getPathSegments().get(1)));
if (msg == null) return 0;
long mailboxId = Mailbox.findMailboxOfType(context, msg.mAccountKey, Mailbox.TYPE_OUTBOX);
if (mailboxId == Mailbox.NO_MAILBOX) return 0;
Mailbox mailbox = Mailbox.restoreMailboxWithId(context, mailboxId);
if (mailbox == null) return 0;
uiSaveMessage(msg, mailbox, values);
// Kick observers
context.getContentResolver().notifyChange(Mailbox.CONTENT_URI, null);
return 1;
}
private void putIntegerLongOrBoolean(ContentValues values, String columnName, Object value) {
if (value instanceof Integer) {