Home | History | Annotate | Download | only in map
      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;
     57     public long getHandle() {
     58         return cpHandle;
     59     }
     60 
     61     public void setHandle(long handle, TYPE type) {
     62         this.cpHandle = handle;
     63         this.mapHandle = BluetoothMapUtils.getMapHandle(cpHandle, type);
     64     }
     65 
     66     public long getDateTime() {
     67         return dateTime;
     68     }
     69 
     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 
     76     public void setDateTime(long dateTime) {
     77         this.dateTime = dateTime;
     78     }
     79 
     80     public String getSubject() {
     81         return subject;
     82     }
     83 
     84     public void setSubject(String subject) {
     85         this.subject = subject;
     86     }
     87 
     88     public String getSenderName() {
     89         return senderName;
     90     }
     91 
     92     public void setSenderName(String senderName) {
     93         this.senderName = senderName;
     94     }
     95 
     96     public String getSenderAddressing() {
     97         return senderAddressing;
     98     }
     99 
    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 
    110     public String getReplyToAddressing() {
    111         return replytoAddressing;
    112     }
    113 
    114     public void setReplytoAddressing(String replytoAddressing) {
    115         this.replytoAddressing = replytoAddressing;
    116     }
    117 
    118     public String getRecipientName() {
    119         return recipientName;
    120     }
    121 
    122     public void setRecipientName(String recipientName) {
    123         this.recipientName = recipientName;
    124     }
    125 
    126     public String getRecipientAddressing() {
    127         return recipientAddressing;
    128     }
    129 
    130     public void setRecipientAddressing(String recipientAddressing) {
    131         this.recipientAddressing = recipientAddressing;
    132     }
    133 
    134     public TYPE getType() {
    135         return type;
    136     }
    137 
    138     public void setType(TYPE type) {
    139         this.type = type;
    140     }
    141 
    142     public int getSize() {
    143         return size;
    144     }
    145 
    146     public void setSize(int size) {
    147         this.size = size;
    148     }
    149 
    150     public String getText() {
    151         return text;
    152     }
    153 
    154     public void setText(String text) {
    155         this.text = text;
    156     }
    157 
    158     public String getReceptionStatus() {
    159         return receptionStatus;
    160     }
    161 
    162     public void setReceptionStatus(String receptionStatus) {
    163         this.receptionStatus = receptionStatus;
    164     }
    165 
    166     public int getAttachmentSize() {
    167         return attachmentSize;
    168     }
    169 
    170     public void setAttachmentSize(int attachmentSize) {
    171         this.attachmentSize = attachmentSize;
    172     }
    173 
    174     public String getPriority() {
    175         return priority;
    176     }
    177 
    178     public void setPriority(String priority) {
    179         this.priority = priority;
    180     }
    181 
    182     public String getRead() {
    183         return read;
    184     }
    185 
    186     public void setRead(String read, boolean reportRead) {
    187         this.read = read;
    188         this.reportRead = reportRead;
    189     }
    190 
    191     public String getSent() {
    192         return sent;
    193     }
    194 
    195     public void setSent(String sent) {
    196         this.sent = sent;
    197     }
    198 
    199     public String getProtect() {
    200         return protect;
    201     }
    202 
    203     public void setProtect(String protect) {
    204         this.protect = protect;
    205     }
    206 
    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      * */
    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