1fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie/*
2fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie* Copyright (C) 2013 Samsung System LSI
3fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie* Licensed under the Apache License, Version 2.0 (the "License");
4fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie* you may not use this file except in compliance with the License.
5fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie* You may obtain a copy of the License at
6fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie*
7fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie*      http://www.apache.org/licenses/LICENSE-2.0
8fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie*
9fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie* Unless required by applicable law or agreed to in writing, software
10fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie* distributed under the License is distributed on an "AS IS" BASIS,
11fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie* See the License for the specific language governing permissions and
13fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie* limitations under the License.
14fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie*/
15fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xiepackage com.android.bluetooth.map;
16fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
17fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xieimport java.io.IOException;
18fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xieimport java.io.StringWriter;
19fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
20fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xieimport java.text.SimpleDateFormat;
21fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xieimport java.util.Date;
22fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
23fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xieimport org.xmlpull.v1.XmlSerializer;
24fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
25fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xieimport android.telephony.PhoneNumberUtils;
26fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xieimport android.util.Log;
27fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xieimport android.util.Xml;
28fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
29fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xieimport com.android.bluetooth.map.BluetoothMapUtils.TYPE;
30fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
31fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xiepublic class BluetoothMapMessageListingElement
32fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    implements Comparable<BluetoothMapMessageListingElement> {
33fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
34fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private static final String TAG = "BluetoothMapMessageListingElement";
3570be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz    private static final boolean D = false;
3670be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz    private static final boolean V = false;
37fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
3870be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz    private long cpHandle = 0; /* The content provider handle - without type information */
3970be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz    private String mapHandle = null; /* The map hex-string handle with type information */
40fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private String subject = null;
41fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private long dateTime = 0;
42fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private String senderName = null;
43fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private String senderAddressing = null;
44fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private String replytoAddressing = null;
45fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private String recipientName = null;
46fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private String recipientAddressing = null;
47fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private TYPE type = null;
48fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private int size = -1;
49fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private String text = null;
50fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private String receptionStatus = null;
51fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private int attachmentSize = -1;
52fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private String priority = null;
53fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private String read = null;
54fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private String sent = null;
55fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    private String protect = null;
5670be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz    private boolean reportRead;
57fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public long getHandle() {
5870be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz        return cpHandle;
59fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
60fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
6170be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz    public void setHandle(long handle, TYPE type) {
6270be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz        this.cpHandle = handle;
6370be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz        this.mapHandle = BluetoothMapUtils.getMapHandle(cpHandle, type);
64fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
65fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
66fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public long getDateTime() {
67fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return dateTime;
68fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
69fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
70fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public String getDateTimeString() {
71fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
72fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        Date date = new Date(dateTime);
73fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return format.format(date); // Format to YYYYMMDDTHHMMSS local time
74fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
75fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
76fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setDateTime(long dateTime) {
77fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.dateTime = dateTime;
78fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
79fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
80fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public String getSubject() {
81fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return subject;
82fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
83fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
84fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setSubject(String subject) {
85fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.subject = subject;
86fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
87fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
88fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public String getSenderName() {
89fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return senderName;
90fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
91fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
92fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setSenderName(String senderName) {
93fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.senderName = senderName;
94fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
95fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
96fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public String getSenderAddressing() {
97fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return senderAddressing;
98fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
99fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
100fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setSenderAddressing(String senderAddressing) {
101fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        /* TODO: This should depend on the type - for email, the addressing is an email address
102fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie         * Consider removing this again - to allow strings.
103fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie         */
104fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.senderAddressing = PhoneNumberUtils.extractNetworkPortion(senderAddressing);
105fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        if(this.senderAddressing == null || this.senderAddressing.length() < 2){
106fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie            this.senderAddressing = "11"; // Ensure we have at least two digits to
107fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        }
108fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
109fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
110fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public String getReplyToAddressing() {
111fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return replytoAddressing;
112fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
113fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
114fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setReplytoAddressing(String replytoAddressing) {
115fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.replytoAddressing = replytoAddressing;
116fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
117fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
118fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public String getRecipientName() {
119fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return recipientName;
120fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
121fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
122fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setRecipientName(String recipientName) {
123fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.recipientName = recipientName;
124fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
125fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
126fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public String getRecipientAddressing() {
127fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return recipientAddressing;
128fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
129fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
130fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setRecipientAddressing(String recipientAddressing) {
131fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.recipientAddressing = recipientAddressing;
132fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
133fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
134fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public TYPE getType() {
135fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return type;
136fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
137fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
138fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setType(TYPE type) {
139fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.type = type;
140fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
141fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
142fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public int getSize() {
143fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return size;
144fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
145fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
146fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setSize(int size) {
147fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.size = size;
148fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
149fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
150fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public String getText() {
151fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return text;
152fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
153fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
154fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setText(String text) {
155fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.text = text;
156fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
157fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
158fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public String getReceptionStatus() {
159fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return receptionStatus;
160fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
161fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
162fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setReceptionStatus(String receptionStatus) {
163fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.receptionStatus = receptionStatus;
164fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
165fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
166fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public int getAttachmentSize() {
167fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return attachmentSize;
168fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
169fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
170fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setAttachmentSize(int attachmentSize) {
171fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.attachmentSize = attachmentSize;
172fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
173fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
174fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public String getPriority() {
175fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return priority;
176fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
177fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
178fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setPriority(String priority) {
179fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.priority = priority;
180fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
181fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
182fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public String getRead() {
183fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return read;
184fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
185fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
18670be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz    public void setRead(String read, boolean reportRead) {
187fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.read = read;
18870be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz        this.reportRead = reportRead;
189fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
190fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
191fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public String getSent() {
192fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return sent;
193fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
194fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
195fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setSent(String sent) {
196fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.sent = sent;
197fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
198fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
199fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public String getProtect() {
200fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        return protect;
201fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
202fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
203fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public void setProtect(String protect) {
204fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        this.protect = protect;
205fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
206fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
207fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    public int compareTo(BluetoothMapMessageListingElement e) {
208fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        if (this.dateTime < e.dateTime) {
209fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie            return 1;
210fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        } else if (this.dateTime > e.dateTime) {
211fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie            return -1;
212fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        } else {
213fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie            return 0;
214fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie        }
215fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
216fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
217fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    /* Encode the MapMessageListingElement into the StringBuilder reference.
218fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie     * */
21970be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz    public void encode(XmlSerializer xmlMsgElement) throws IllegalArgumentException, IllegalStateException, IOException
220fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    {
22170be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz
22270be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            // contruct the XML tag for a single msg in the msglisting
22370be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            xmlMsgElement.startTag("", "msg");
22470be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            xmlMsgElement.attribute("", "handle", mapHandle);
22570be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(subject != null)
22670be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "subject", subject);
22770be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(dateTime != 0)
22870be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "datetime", this.getDateTimeString());
22970be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(senderName != null)
23070be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "sender_name", senderName);
23170be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(senderAddressing != null)
23270be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "sender_addressing", senderAddressing);
23370be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(replytoAddressing != null)
23470be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "replyto_addressing",replytoAddressing);
23570be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(recipientName != null)
23670be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "recipient_name",recipientName);
23770be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(recipientAddressing != null)
23870be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "recipient_addressing", recipientAddressing);
23970be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(type != null)
24070be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "type", type.name());
24170be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(size != -1)
24270be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "size", Integer.toString(size));
24370be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(text != null)
24470be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "text", text);
24570be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(receptionStatus != null)
24670be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "reception_status", receptionStatus);
24770be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(attachmentSize != -1)
24870be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "attachment_size", Integer.toString(attachmentSize));
24970be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(priority != null)
25070be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "priority", priority);
25170be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(read != null && reportRead)
25270be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "read", read);
25370be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(sent != null)
25470be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "sent", sent);
25570be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            if(protect != null)
25670be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz                xmlMsgElement.attribute("", "protect", protect);
25770be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz            xmlMsgElement.endTag("", "msg");
25870be005a18a35ec5fcb46152f0dfbe82156efa3aKim Schulz
259fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie    }
260fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie}
261fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
262fd6603b8bf9ed72dcc8bd59aaef3209251b6e17cMatthew Xie
263