Update change log and spec for wrt-plugins-tizen_0.4.70
[platform/framework/web/wrt-plugins-tizen.git] / src / Messaging / IMessage.cpp
1 //
2 // Tizen Web Device API
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 #include <pcrecpp.h>
19 #include <Commons/Exception.h>
20 #include "IMessage.h"
21 #include "EventSendMessage.h"
22 #include "EventDeleteMessages.h"
23 #include "EventMessagingService.h"
24 #include <Logger.h>
25
26 using namespace std;
27
28 namespace DeviceAPI {
29 namespace Messaging {
30
31 IMessage::IMessage(const MessageType msgType,
32         const string& id) :
33     m_id(id),
34     m_convId(-1),
35     m_msgType(msgType),
36     m_readStatus(false),
37     m_validReadStatus(false),
38     m_isReadChangeStatus(false),
39     m_validisReadChangeStatus(true),
40     m_folder(DRAFTBOX),
41     m_folderId(-1),
42     m_widgetPath(""),
43     m_requestReceiver(NULL),
44     m_sendMessageEvent(NULL)
45 {
46     LoggerD("message creation, msgId=" << m_id << ", msgType=" << m_msgType);
47
48     //initialize dateTime of message
49     time_t rawtime;
50     time(&rawtime);
51     tm* local = localtime(&rawtime);
52     if (local) {
53         m_dateTime = *local;
54     } else {
55         LoggerE("Failed to initialize message dateTime");
56     }
57     m_widgetPath = GetWidgetPath("");
58 }
59
60 IMessage::~IMessage()
61 {
62     LoggerD("destroying message, msgId=" << m_id << ", msgType=" << m_msgType);
63 }
64
65 string IMessage::getId() const
66 {
67     return m_id;
68 }
69
70 int IMessage::getConvId() const
71 {
72     return m_convId;
73 }
74
75 const string& IMessage::getIdRef() const
76 {
77     return m_id;
78 }
79
80 MessageType IMessage::getMessageType() const
81 {
82     return m_msgType;
83 }
84
85 struct tm IMessage::getDateTime() const
86 {
87     return m_dateTime;
88 }
89
90 string IMessage::convertId(int arg) const
91 {
92     ostringstream stream;
93     stream << arg;
94     return stream.str();
95 }
96
97 int IMessage::convertId(const string& arg) const
98 {
99     int retVal = 0;
100     istringstream(arg) >> retVal;
101     return retVal;
102 }
103
104 void IMessage::setId(const string& value)
105 {
106     m_id = value;
107 }
108
109 void IMessage::setConvId(int value)
110 {
111     m_convId = value;
112 }
113
114 void IMessage::setDateTime(const tm dateTime)
115 {
116     m_dateTime = dateTime;
117 }
118
119 void IMessage::setReadStatus(bool state)
120 {
121     m_validReadStatus = false;
122     m_readStatus = state;
123 }
124
125 void IMessage::setSize(int size)
126 {
127     m_size = size;
128 }
129
130 int IMessage::getSize() const
131 {
132     return m_size;
133 }
134
135 bool IMessage::isRead() const
136 {
137     return m_readStatus;
138 }
139
140 bool IMessage::isReadStatusValid() const
141 {
142     return m_validReadStatus;
143 }
144
145 void IMessage::setReadStatusValidity(bool valid)
146 {
147     m_validReadStatus = valid;
148 }
149
150 bool IMessage::isReadChangeStatus() const
151 {
152     return m_isReadChangeStatus;
153 }
154
155 void IMessage::setisReadChangeStatus(bool state)
156 {
157     m_validisReadChangeStatus = false;
158     m_isReadChangeStatus = state;
159 }
160
161 bool IMessage::isReadChangeStatusValid() const
162 {
163     return m_validisReadChangeStatus;
164 }
165
166 void IMessage::setisReadChangeStatusValidity(bool valid)
167 {
168     m_validisReadChangeStatus = valid;
169 }
170
171 FolderType IMessage::getCurrentFolder() const
172 {
173     return m_folder;
174 }
175
176 void IMessage::setFolderType(FolderType folder)
177 {
178     m_folder = folder;
179 }
180
181 string IMessage::getCurrentUserFolder() const
182 {
183     if (m_folder != USERDEFINED_FOLDER) {
184         LoggerE("folder is not user folder type");
185         Throw(WrtDeviceApis::Commons::UnknownException);
186     }
187     return m_userFolderName;
188 }
189
190 void IMessage::setCurrentUserFolder(const std::string& arg)
191 {
192     m_userFolderName = arg;
193 }
194
195 int IMessage::getCurrentFolderId() const
196 {
197     return m_folderId;
198 }
199
200 void IMessage::setCurrentFolderId(int folderId)
201 {
202     m_folderId = folderId;
203 }
204
205
206 bool IMessage::validatePhoneNumber(std::string& number)
207 {
208     LoggerD("testing number=" << number);
209     return true;
210 /*
211     pcrecpp::RE re("[^0-9#\\+\\*]?");
212     re.GlobalReplace("", &number);      //remove invailde phone number. phone Number were composed only number.
213     
214     if (number.empty()) {
215         LoggerE("wrong phoneNumber=" << number);
216         return false;
217     }
218     LoggerD("phoneNumber=" << number);
219
220     pcrecpp::RE re2("^[+#]?[0-9]{1,22}$");
221     if (re2.FullMatch(number)) {
222         LoggerD("vaildate Number=" << number);
223         return true;
224     }
225     else
226     {
227         LoggerD("invaildate Number=" << number);
228           return false;
229     }
230 */
231 }
232
233 bool IMessage::validateEmailAddr(const Recipients& addr)
234 {
235     for (size_t i = 0; i < addr.getRecipientSize(); i++) {
236         if (false == validateEmailAddr(addr.getRecipient(i))) {
237             LoggerE("wrong email address");
238             return false;
239         }
240     }
241     return true;
242 }
243
244 bool IMessage::validateEmailAddr(const std::string& email)
245 {
246     if (email.empty()) {
247         return false;
248     }
249     pcrecpp::RE re(
250         "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}"
251         "\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\"
252         ".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"
253         );
254     if (re.FullMatch(email)) {
255         LoggerD("emailAddress=" << email);
256         return true;
257     }
258     LoggerE("wrong emailAddress=" << email);
259     return false;
260 }
261
262 void IMessage::setEmitter(const EventOnSendingFailedEmitterPtr& emitter)
263 {
264     m_emitter = emitter;
265 }
266
267 EventOnSendingFailedEmitterPtr IMessage::getEmitter() const
268 {
269     return m_emitter;
270 }
271
272 void IMessage::setSendMessageEvent(const EventSendMessagePtr &event)
273 {
274     m_sendMessageEvent = event;
275 }
276
277 EventSendMessagePtr IMessage::getSendMessageEvent() const
278 {
279     return m_sendMessageEvent;
280 }
281
282 void IMessage::setMessagingServiceEvent(const EventMessagingServicePtr & event)
283 {
284         m_messagingServiceEvent = event;
285 }
286
287 EventMessagingServicePtr IMessage::getMessagingServiceEvent() const
288 {
289         return m_messagingServiceEvent;
290 }
291
292 void IMessage::setRemoveMessagesEvent(const EventDeleteMessagesPtr & event)
293 {
294         m_deleteMessagesEvent = event;
295 }
296
297 EventDeleteMessagesPtr IMessage::getRemoveMessagesEvent() const
298 {
299         return m_deleteMessagesEvent;
300 }
301
302
303 void IMessage::setRequestReceiver(ReqReceiverMessage* reqReceiver)
304 {
305     m_requestReceiver = reqReceiver;
306 }
307
308 ReqReceiverMessage* IMessage::getRequestReceiver() const
309 {
310     return m_requestReceiver;
311 }
312
313 void IMessage::setMessageStatus( MessageStatus status)
314 {
315         LoggerD("setMessageStatus : " << status);
316         m_msgStatus = status;
317 }
318
319 MessageStatus IMessage::getMessageStatus() const
320 {
321         return m_msgStatus;
322 }
323
324 void IMessage::setWidgetPath(const std::string& filePath)
325 {
326         m_widgetPath = filePath;
327 }
328
329 std::string IMessage::getWidgetPath() const
330 {
331         return m_widgetPath;
332 }
333
334
335 }
336 }