Message.java revision cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36
13ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira/**
23ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * Copyright (c) 2012, Google Inc.
33ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira *
43ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * Licensed under the Apache License, Version 2.0 (the "License");
53ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * you may not use this file except in compliance with the License.
63ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * You may obtain a copy of the License at
73ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira *
83ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira *     http://www.apache.org/licenses/LICENSE-2.0
93ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira *
103ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * Unless required by applicable law or agreed to in writing, software
113ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * distributed under the License is distributed on an "AS IS" BASIS,
123ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * See the License for the specific language governing permissions and
143ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * limitations under the License.
153ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira */
163ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira
173ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereirapackage com.android.mail.providers;
183ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira
193ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereiraimport android.database.Cursor;
20cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereiraimport android.net.Uri;
213ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereiraimport android.os.Parcel;
223ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereiraimport android.os.Parcelable;
23cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereiraimport android.text.TextUtils;
243ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira
253ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira
263ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereirapublic class Message implements Parcelable {
273ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public long id;
283ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public long serverId;
29cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira    public Uri uri;
303ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public long conversationId;
313ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public String subject;
323ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public String snippet;
333ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public String from;
343ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public String to;
353ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public String cc;
363ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public String bcc;
373ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public String replyTo;
383ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public long dateReceivedMs;
393ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public String bodyHtml;
403ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public String bodyText;
413ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public boolean embedsExternalResources;
423ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public String refMessageId;
433ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public int draftType;
443ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public boolean appendRefMessageContent;
453ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public boolean hasAttachments;
46cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira    public Uri attachmentListUri;
473ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public long messageFlags;
48f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira    public String joinedAttachmentInfos;
497ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira    public String saveUri;
507ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira    public String sendUri;
513ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira
523ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    @Override
533ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public int describeContents() {
543ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        return 0;
553ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    }
563ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira
573ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    @Override
583ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public void writeToParcel(Parcel dest, int flags) {
593ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeLong(id);
603ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeLong(serverId);
61cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira        dest.writeParcelable(uri, 0);
623ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeLong(conversationId);
633ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeString(subject);
643ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeString(snippet);
653ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeString(from);
663ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeString(to);
673ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeString(cc);
683ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeString(bcc);
693ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeString(replyTo);
703ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeLong(dateReceivedMs);
713ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeString(bodyHtml);
723ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeString(bodyText);
733ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeInt(embedsExternalResources ? 1 : 0);
743ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeString(refMessageId);
753ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeInt(draftType);
763ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeInt(appendRefMessageContent ? 1 : 0);
773ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeInt(hasAttachments ? 1 : 0);
78cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira        dest.writeParcelable(attachmentListUri, 0);
793ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dest.writeLong(messageFlags);
80f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira        dest.writeString(joinedAttachmentInfos);
817ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira        dest.writeString(saveUri);
827ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira        dest.writeString(sendUri);
83f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira    }
84f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira
85f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira    public Message() {
863ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    }
873ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira
883ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    private Message(Parcel in) {
893ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        id = in.readLong();
903ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        serverId = in.readLong();
91cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira        uri = in.readParcelable(null);
923ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        conversationId = in.readLong();
933ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        subject = in.readString();
943ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        snippet = in.readString();
953ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        from = in.readString();
963ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        to = in.readString();
973ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        cc = in.readString();
983ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        bcc = in.readString();
993ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        replyTo = in.readString();
1003ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        dateReceivedMs = in.readLong();
1013ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        bodyHtml = in.readString();
1023ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        bodyText = in.readString();
1033ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        embedsExternalResources = in.readInt() != 0;
1043ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        refMessageId = in.readString();
1053ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        draftType = in.readInt();
1063ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        appendRefMessageContent = in.readInt() != 0;
1073ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        hasAttachments = in.readInt() != 0;
108cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira        attachmentListUri = in.readParcelable(null);
1093ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        messageFlags = in.readLong();
110f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira        joinedAttachmentInfos = in.readString();
1117ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira        saveUri = in.readString();
1127ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira        sendUri = in.readString();
1133ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    }
1143ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira
1153ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    @Override
1163ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public String toString() {
1173ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        return "[message id=" + id + "]";
1183ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    }
1193ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira
1203ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    public static final Creator<Message> CREATOR = new Creator<Message>() {
1213ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira
1223ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        @Override
1233ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        public Message createFromParcel(Parcel source) {
1243ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            return new Message(source);
1253ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        }
1263ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira
1273ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        @Override
1283ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        public Message[] newArray(int size) {
1293ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            return new Message[size];
1303ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        }
1313ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira
1323ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    };
1333ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira
134a831b2f1ba6d3c18d5e54563df8bae1f589c4257Mindy Pereira    public Message(Cursor cursor) {
1353ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        if (cursor != null) {
1363ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            id = cursor.getLong(UIProvider.MESSAGE_ID_COLUMN);
1373ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            serverId = cursor.getLong(UIProvider.MESSAGE_SERVER_ID_COLUMN);
138cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira            String message = cursor.getString(UIProvider.MESSAGE_URI_COLUMN);
139cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira            uri = !TextUtils.isEmpty(message) ? Uri.parse(message) : null;
1403ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            conversationId = cursor.getLong(UIProvider.MESSAGE_CONVERSATION_ID_COLUMN);
1413ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            subject = cursor.getString(UIProvider.MESSAGE_SUBJECT_COLUMN);
1423ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            snippet = cursor.getString(UIProvider.MESSAGE_SNIPPET_COLUMN);
1433ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            from = cursor.getString(UIProvider.MESSAGE_FROM_COLUMN);
1443ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            to = cursor.getString(UIProvider.MESSAGE_TO_COLUMN);
1453ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            cc = cursor.getString(UIProvider.MESSAGE_CC_COLUMN);
1463ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            bcc = cursor.getString(UIProvider.MESSAGE_BCC_COLUMN);
1473ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            replyTo = cursor.getString(UIProvider.MESSAGE_REPLY_TO_COLUMN);
1483ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            dateReceivedMs = cursor.getLong(UIProvider.MESSAGE_DATE_RECEIVED_MS_COLUMN);
1493ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            bodyHtml = cursor.getString(UIProvider.MESSAGE_BODY_HTML_COLUMN);
1503ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            bodyText = cursor.getString(UIProvider.MESSAGE_BODY_TEXT_COLUMN);
1513ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            embedsExternalResources = cursor
1523ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira                    .getInt(UIProvider.MESSAGE_EMBEDS_EXTERNAL_RESOURCES_COLUMN) != 0;
1533ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            refMessageId = cursor.getString(UIProvider.MESSAGE_REF_MESSAGE_ID_COLUMN);
1543ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            draftType = cursor.getInt(UIProvider.MESSAGE_DRAFT_TYPE_COLUMN);
1553ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            appendRefMessageContent = cursor
1563ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira                    .getInt(UIProvider.MESSAGE_APPEND_REF_MESSAGE_CONTENT_COLUMN) != 0;
1573ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            hasAttachments = cursor.getInt(UIProvider.MESSAGE_HAS_ATTACHMENTS_COLUMN) != 0;
158cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira            attachmentListUri = hasAttachments ? Uri.parse(cursor
159cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira                    .getString(UIProvider.MESSAGE_ATTACHMENT_LIST_URI_COLUMN)) : null;
1603ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira            messageFlags = cursor.getLong(UIProvider.MESSAGE_FLAGS_COLUMN);
161f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira            joinedAttachmentInfos = cursor
162f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira                    .getString(UIProvider.MESSAGE_JOINED_ATTACHMENT_INFOS_COLUMN);
1637ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira            saveUri = cursor
1647ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira                    .getString(UIProvider.MESSAGE_SAVE_URI_COLUMN);
1657ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira            sendUri = cursor
1667ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira                    .getString(UIProvider.MESSAGE_SEND_URI_COLUMN);
1673ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira        }
1683ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira    }
1693ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira}
170