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