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