1b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo/*
2b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo * Copyright (C) 2014 The Android Open Source Project
3b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo *
4b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo * Licensed under the Apache License, Version 2.0 (the "License");
5b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo * you may not use this file except in compliance with the License.
6b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo * You may obtain a copy of the License at
7b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo *
8b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo *      http://www.apache.org/licenses/LICENSE-2.0
9b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo *
10b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo * Unless required by applicable law or agreed to in writing, software
11b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo * distributed under the License is distributed on an "AS IS" BASIS,
12b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo * See the License for the specific language governing permissions and
14b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo * limitations under the License.
15b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo */
16b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
17b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzopackage com.android.bluetooth.mapclient;
18b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
19b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzoimport com.android.vcard.VCardEntry;
20b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
21b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzoimport org.json.JSONException;
22b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzoimport org.json.JSONObject;
23b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
24b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzoimport java.util.ArrayList;
25b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
26b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo/**
27b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo * Object representation of message in bMessage format
28b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo * <p>
29b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo * This object will be received in {@link MasClient#EVENT_GET_MESSAGE}
30b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo * callback message.
31b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo */
32b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzopublic class Bmessage {
33b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
34b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    String mBmsgVersion;
35b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    Status mBmsgStatus;
36b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    Type mBmsgType;
37b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    String mBmsgFolder;
38b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
39b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    String mBbodyEncoding;
40b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    String mBbodyCharset;
41b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    String mBbodyLanguage;
42b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    int mBbodyLength;
43b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
44b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    String mMessage;
45b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
46b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    ArrayList<VCardEntry> mOriginators;
47b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    ArrayList<VCardEntry> mRecipients;
48b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
49b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    /**
50b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo     * Constructs empty message object
51b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo     */
52b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public Bmessage() {
53b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        mOriginators = new ArrayList<VCardEntry>();
54b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        mRecipients = new ArrayList<VCardEntry>();
55b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
56b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
57b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public VCardEntry getOriginator() {
58b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        if (mOriginators.size() > 0) {
59b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo            return mOriginators.get(0);
60b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        } else {
61b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo            return null;
62b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        }
63b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
64b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
65b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public ArrayList<VCardEntry> getOriginators() {
66b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return mOriginators;
67b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
68b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
69b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public Bmessage addOriginator(VCardEntry vcard) {
70b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        mOriginators.add(vcard);
71b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return this;
72b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
73b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
74b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public ArrayList<VCardEntry> getRecipients() {
75b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return mRecipients;
76b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
77b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
78b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public Bmessage addRecipient(VCardEntry vcard) {
79b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        mRecipients.add(vcard);
80b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return this;
81b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
82b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
83b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public Status getStatus() {
84b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return mBmsgStatus;
85b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
86b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
87b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public Bmessage setStatus(Status status) {
88b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        mBmsgStatus = status;
89b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return this;
90b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
91b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
92b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public Type getType() {
93b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return mBmsgType;
94b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
95b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
96b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public Bmessage setType(Type type) {
97b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        mBmsgType = type;
98b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return this;
99b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
100b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
101b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public String getFolder() {
102b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return mBmsgFolder;
103b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
104b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
105b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public Bmessage setFolder(String folder) {
106b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        mBmsgFolder = folder;
107b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return this;
108b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
109b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
110b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public String getEncoding() {
111b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return mBbodyEncoding;
112b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
113b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
114b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public Bmessage setEncoding(String encoding) {
115b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        mBbodyEncoding = encoding;
116b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return this;
117b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
118b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
119b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public String getCharset() {
120b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return mBbodyCharset;
121b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
122b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
123b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public Bmessage setCharset(String charset) {
124b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        mBbodyCharset = charset;
125b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return this;
126b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
127b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
128b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public String getLanguage() {
129b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return mBbodyLanguage;
130b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
131b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
132b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public Bmessage setLanguage(String language) {
133b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        mBbodyLanguage = language;
134b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return this;
135b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
136b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
137b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public String getBodyContent() {
138b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return mMessage;
139b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
140b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
141b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public Bmessage setBodyContent(String body) {
142b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        mMessage = body;
143b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return this;
144b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
145b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
146b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    @Override
147b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public String toString() {
148b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        JSONObject json = new JSONObject();
149b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
150b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        try {
151b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo            json.put("status", mBmsgStatus);
152b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo            json.put("type", mBmsgType);
153b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo            json.put("folder", mBmsgFolder);
154b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo            json.put("charset", mBbodyCharset);
155b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo            json.put("message", mMessage);
156b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        } catch (JSONException e) {
157b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo            // do nothing
158b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        }
159b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
160b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        return json.toString();
161b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
162b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
163b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public enum Status {
164b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        READ, UNREAD
165b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
166b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo
167b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    public enum Type {
168b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo        EMAIL, SMS_GSM, SMS_CDMA, MMS
169b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo    }
170b68b83c0463161ce65922ec606f12244446efab1Joseph Pirozzo}
171