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