2 // Tizen Web Device API
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
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
9 // http://www.apache.org/licenses/LICENSE-2.0
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.
18 #include "StorageChangesMessageGenerator.h"
19 #include "StorageChangesMessageFilterValidatorFactory.h"
20 #include "ConversationFilterValidatorFactory.h"
22 #include "IMessagingTypes.h"
24 #include <email-types.h>
30 using namespace DeviceAPI::Tizen;
35 const int StorageChangesMessageGenerator::MESSAGE_TYPE_NOT_INITIALIZED = -1;
37 StorageChangesMessageGenerator::StorageChangesMessageGenerator(IMessagePtr msg, IConversationPtr conv) :
38 m_messageType(MESSAGE_TYPE_NOT_INITIALIZED) , m_serviceId(-1)
41 m_id = msg->getIdRef();
42 m_type = msg->getMessageType();
43 m_folder = msg->getCurrentFolder();
44 m_dateTime = msg->getDateTime();
45 m_from = msg->getFrom();
46 m_conversationId = conv->getConvId();
48 Recipents = msg->getToRecipientsPtr();
52 LoggerD("size :" << Recipents->getRecipientSize());
54 if(Recipents->getRecipientSize()>0)
56 m_to = Recipents->getRecipientsRef();
57 LoggerD("m_to :" << m_to[0]);
60 else if(m_type == MMS)
62 LoggerD("to size :" << Recipents->getRecipientSize());
64 IMmsPtr mms = DPL::DynamicPointerCast<IMms >(msg);
65 if(Recipents->getRecipientSize() > 0)
67 m_to = Recipents->getRecipientsRef();
68 LoggerD("m_to :" << m_to[0]);
71 Recipents = mms->getCcRecipientsPtr();
72 LoggerD("cc size :" << Recipents->getRecipientSize());
74 if(Recipents->getRecipientSize() > 0)
76 m_cc = Recipents->getRecipientsRef();
79 Recipents = mms->getBccRecipientsPtr();
80 LoggerD("bcc size :" << Recipents->getRecipientSize());
82 if(Recipents->getRecipientSize() > 0)
84 m_bcc = Recipents->getRecipientsRef();
86 m_hasAttachment = mms->hasAttachment();
90 else if(m_type == EMAIL)
92 LoggerD("to size :" << Recipents->getRecipientSize());
94 IEmailPtr email = DPL::DynamicPointerCast<IEmail >(msg);
95 if(Recipents->getRecipientSize() > 0)
97 m_to = Recipents->getRecipientsRef();
98 LoggerD("m_to :" << m_to[0]);
101 Recipents = email->getCcRecipientsPtr();
102 LoggerD("cc size :" << Recipents->getRecipientSize());
104 if(Recipents->getRecipientSize() > 0)
106 m_cc = Recipents->getRecipientsRef();
109 Recipents = email->getBccRecipientsPtr();
110 LoggerD("bcc size :" << Recipents->getRecipientSize());
112 if(Recipents->getRecipientSize() > 0)
114 m_bcc = Recipents->getRecipientsRef();
117 m_serviceId = email->getAccountID();
118 if (m_serviceId == -1) {
119 ThrowMsg(WrtDeviceApis::Commons::UnknownException,
120 "Couldn't convert e-mail account id");
123 m_hasAttachment = email->hasAttachment();
125 // if (m_conversationId == email->getUID())
126 // m_isResponseTo = -1;
127 m_isResponseTo = m_conversationId;
133 m_body = msg->getBody();
134 m_isRead = msg->isRead();
135 m_priority = msg->getPriority();
136 m_subject = msg->getSubject();
137 m_messageStatus = msg->getMessageStatus();
140 LoggerD("m_type:" << m_type );
141 LoggerD("m_folder:" << m_folder );
142 LoggerD("m_dateTime year:" << m_dateTime.tm_year + 1900 );
143 LoggerD("m_dateTime mon:" << m_dateTime.tm_mon );
144 LoggerD("m_dateTime day:" << m_dateTime.tm_mday );
145 LoggerD("m_dateTime hour:" << m_dateTime.tm_hour );
146 LoggerD("m_dateTime min:" << m_dateTime.tm_min );
147 LoggerD("m_dateTime sec:" << m_dateTime.tm_sec );
148 LoggerD("m_from:" << m_from );
149 LoggerD("m_body:" << m_body );
150 LoggerD("m_isRead:" << m_isRead );
151 LoggerD("m_priority:" << m_priority );
152 LoggerD("m_subject:" << m_subject );
156 StorageChangesMessageGenerator::~StorageChangesMessageGenerator() {
159 void StorageChangesMessageGenerator::visitPreComposite(DeviceAPI::Tizen::FilterType& type, int depth){
161 m_operand.push_back(leftblank);
162 LoggerD("Left_blank");
166 void StorageChangesMessageGenerator::visitInComposite(DeviceAPI::Tizen::FilterType& type, int depth){
168 if(type == UNION_FILTER ){
169 LoggerD("UNION_FILTER");
170 m_operand.push_back(operandUnion);
171 }else if(type == INTERSECTION_FILTER){
172 LoggerD("INTERSECTION_FILTER");
173 m_operand.push_back(operandIntersection);
175 LoggerE("[ERROR] invalid Filter type:" << type);
181 void StorageChangesMessageGenerator::visitPostComposite(DeviceAPI::Tizen::FilterType& type, int depth){
186 LoggerD("m_result size =" << m_result.size());
187 data1 = m_result.back();
189 data2 = m_result.back();
191 LoggerD("m_result size =" << m_result.size());
192 LoggerD("m_operand.back() =" << m_operand.back());
193 LoggerD("m_operand size =" << m_operand.size());
194 if(m_operand.back() == operandUnion)
197 LoggerD("data1 = " << data1);
198 LoggerD("data2 = " << data2);
199 LoggerD("data1 || data2 = " << (data1 || data2));
200 m_operand.pop_back();
201 m_result.push_back(data1 || data2);
202 LoggerD("result" << m_result.back());
203 LoggerD("m_result size =" << m_result.size());
205 else if(m_operand.back() == operandIntersection)
207 LoggerD("Intersection");
208 LoggerD("data1 = " << data1);
209 LoggerD("data2 = " << data2);
210 LoggerD("data1 && data2 = " << (data1 && data2));
211 m_operand.pop_back();
212 m_result.push_back(data1 && data2);
213 LoggerD("result" << m_result.back());
214 LoggerD("m_result size =" << m_result.size());
217 }while(m_operand.back() != leftblank);
218 m_operand.pop_back();
219 LoggerD("elase leftblank from m_operand");
220 LoggerD("m_operand size =" << m_operand.size());
224 struct tm StorageChangesMessageGenerator::convertToTimeFormat(const std::string& timeString){
225 LoggerD("<<< timeString:[" << timeString << "]");
228 memset(&tm_Time, 0, sizeof(tm_Time));
233 tm_Time.tm_year = atoi(timeString.substr(0, yearLength).c_str())-1900;
234 nextStart = nextStart + yearLength;
235 LoggerD("<<< tm_Time.tm_year:[" << tm_Time.tm_year << "]");
238 tm_Time.tm_mon = atoi(timeString.substr(nextStart, monthLength).c_str());
239 nextStart = nextStart + monthLength;
240 LoggerD("<<< initTime.tm_mon:[" << tm_Time.tm_mon << "]");
243 tm_Time.tm_mday = atoi(timeString.substr(nextStart, dateLength).c_str());
244 nextStart = nextStart + dateLength;
245 LoggerD("<<< initTime.tm_mday:[" << tm_Time.tm_mday << "]");
248 tm_Time.tm_hour = atoi(timeString.substr(nextStart, hourLength).c_str());
249 nextStart = nextStart + hourLength;
250 LoggerD("<<< initTime.tm_hour:[" << tm_Time.tm_hour << "]");
252 int minuteLength = 2;
253 tm_Time.tm_min = atoi(timeString.substr(nextStart, minuteLength).c_str());
254 nextStart = nextStart + minuteLength;
255 LoggerD("<<< initTime.tm_min:[" << tm_Time.tm_min << "]");
257 int secondLength = 2;
258 tm_Time.tm_sec = atoi(timeString.substr(nextStart, secondLength).c_str());
259 LoggerD("<<< initTime.tm_sec:[" << tm_Time.tm_sec << "]");
264 bool StorageChangesMessageGenerator::getMatchExactlyClause(std::string& attrName, DeviceAPI::Tizen::AnyPtr& value)
266 std::string valueString = value->toString();
267 LoggerD("<<< attrName : " << attrName);
268 LoggerD("<<< valueString : " << valueString);
269 LoggerD("<<< attrName.compare(valueString) : " << attrName.compare(valueString));
271 if(attrName.compare(valueString) == 0)
273 LoggerD("<<< getMatchExactlyClause SAME >>>");
277 LoggerD("<<< getMatchExactlyClause DIFF >>>");
282 bool StorageChangesMessageGenerator::getMatchFullstringClause(std::string& attrName, DeviceAPI::Tizen::AnyPtr& value)
284 std::string tempString1;
285 std::string tempString2;
287 std::string valueString = value->toString();
288 LoggerD("<<< attrName : " << attrName);
289 LoggerD("<<< valueString : " << valueString);
291 tempString1.assign(attrName);
292 tempString2.assign(valueString);
294 StrLowChange(tempString1);
295 StrLowChange(tempString2);
297 LoggerD("<<< attrName : " << tempString1);
298 LoggerD("<<< valueString : " << tempString2);
300 if(tempString1.compare(tempString2) == 0)
302 LoggerD("<<< getMatchFullstringClause SAME >>>");
306 LoggerD("<<< getMatchFullstringClause DIFF >>>");
311 bool StorageChangesMessageGenerator::getMatchContainsClause(std::string& attrName, DeviceAPI::Tizen::AnyPtr& value)
314 std::string tempString1;
315 std::string tempString2;
317 std::string valueString = value->toString();
318 LoggerD("<<< attrName : " << attrName);
319 LoggerD("<<< valueString : " << valueString);
321 tempString1.assign(attrName);
322 tempString2.assign(valueString);
324 StrLowChange(tempString1);
325 StrLowChange(tempString2);
327 LoggerD("<<< attrName : " << tempString1);
328 LoggerD("<<< valueString : " << tempString2);
330 if(tempString1.find(tempString2) != std::string::npos)
332 LoggerD("<<< getMatchContainsClause CONTAINS >>>");
335 LoggerD("<<< getMatchContainsClause NOT CONTAINS >>>");
340 bool StorageChangesMessageGenerator::getMatchStartwithClause(std::string& attrName, DeviceAPI::Tizen::AnyPtr& value)
342 std::string tempString1;
343 std::string tempString2;
345 std::string valueString = value->toString();
346 LoggerD("<<< attrName : " << attrName);
347 LoggerD("<<< valueString : " << valueString);
349 tempString1.assign(attrName);
350 tempString2.assign(valueString);
352 StrLowChange(tempString1);
353 StrLowChange(tempString2);
355 LoggerD("<<< attrName : " << tempString1);
356 LoggerD("<<< valueString : " << tempString2);
359 if(tempString1.size() < tempString2.size())
362 if(tempString1.compare(0,tempString2.size(), tempString2) == 0)
364 LoggerD("<<< getMatchStartwithClause START WITH >>>");
368 LoggerD("<<< getMatchStartwithClause NOT START WITH >>>");
373 bool StorageChangesMessageGenerator::getMatchEndwithClause(std::string& attrName, DeviceAPI::Tizen::AnyPtr& value)
375 std::string tempString1;
376 std::string tempString2;
378 std::string valueString = value->toString();
380 LoggerD("<<< attrName : " << attrName);
381 LoggerD("<<< valueString : " << valueString);
383 tempString1.assign(attrName);
384 tempString2.assign(valueString);
386 StrLowChange(tempString1);
387 StrLowChange(tempString2);
389 LoggerD("<<< attrName.compare(attrName.size()-valueString.size(),valueString.size(), valueString) : " << attrName.compare(attrName.size()-valueString.size(),valueString.size(), valueString));
392 if(tempString1.size() < tempString2.size())
395 if(tempString1.compare(tempString1.size()-tempString2.size(),tempString2.size(), tempString2) == 0 )
397 LoggerD("<<< getMatchEndwithClause END WITH >>>");
401 LoggerD("<<< getMatchEndwithClause NOT END WITH >>>");
406 bool StorageChangesMessageGenerator::getBetweenRangeClause(struct tm initialValue, struct tm endValue)
408 time_t init_time, mid_time, end_time;
409 init_time = mktime(&initialValue);
410 mid_time = mktime(&m_dateTime);
411 end_time = mktime(&endValue);
412 LoggerD("<<< mktime(initialValue):[" << init_time << "]");
413 LoggerD("<<< mktime(m_dateTime):[" << mid_time << "]");
414 LoggerD("<<< mktime(endValue):[" << end_time << "]");
415 LoggerD("<<< mid_time - init_time:[" << mid_time - init_time << "]");
416 LoggerD("<<< end_time - mid_time:[" << end_time - mid_time << "]");
418 if(((mid_time - init_time) >= 0 ) && ((end_time - mid_time) >= 0 ))
425 bool StorageChangesMessageGenerator::getMatchExistClause(std::string& attrName)
427 LoggerD("<<< attrName : " << attrName);
428 if(attrName.size()> 0)
434 void StorageChangesMessageGenerator::visitAttribute(std::string& attrName,
435 MatchFlag& matchFlag, DeviceAPI::Tizen::AnyPtr& matchValue, int depth){
436 LoggerD("<<< attrName:[" << attrName << "], matchFlag:[" << matchFlag << "]");
437 if(matchFlag != DeviceAPI::Tizen::MATCH_EXISTS){
438 if(matchValue == NULL) {
443 LoggerD("matchValue:" << matchValue->toString());
445 visitAttributeEach(attrName, matchFlag, matchValue, depth);
450 void StorageChangesMessageGenerator::visitAttributeEach(std::string& attrName, MatchFlag& matchFlag, DeviceAPI::Tizen::AnyPtr& value, int depth){
451 LoggerD("<<< attrName:[" << attrName << "], value:[" << value->toString() << "]");
452 std::string valueString;
454 // Check msg_type and filter_type
455 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_ID)==0){
456 LoggerD("<<< value:[" << value << "]");
457 LoggerD("<<< value->toString():[" << value->toString() << "]");
458 LoggerD("<<< m_id:[" << m_id << "]");
461 if(getMatchFlagResult(value, valueString, matchFlag))
463 m_result.push_back(TRUE);
464 LoggerD("<<< id is same");
468 m_result.push_back(FALSE);
469 LoggerD("<<< id is different");
474 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_SERVICE_ID)==0){
475 LoggerD("<<< value:[" << value << "]");
476 int nType = atoi(value->toString().c_str());
477 if(m_serviceId == nType)
479 m_result.push_back(TRUE);
480 LoggerD("<<< Type is same");
484 m_result.push_back(FALSE);
485 LoggerD("<<< Type is different");
489 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_CONVERSATION_ID)==0){
490 LoggerD("<<< value:[" << value << "]");
491 int nType = atoi(value->toString().c_str());
492 if(m_conversationId == nType)
494 m_result.push_back(TRUE);
495 LoggerD("<<< conversationID is same");
499 m_result.push_back(FALSE);
500 LoggerD("<<< conversationID is different");
504 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_TYPE)==0){
505 LoggerD("<<< value:[" << value << "]");
506 m_currentType = value->toString();
507 m_messageType = convertMessageType(m_currentType);
508 if((int)m_type == m_messageType)
510 m_result.push_back(TRUE);
511 LoggerD("<<< Type is same");
515 m_result.push_back(FALSE);
516 LoggerD("<<< Type is different");
520 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_FOLDER_ID)==0){
521 LoggerD("<<< value:[" << value << "]");
522 int nType = atoi(value->toString().c_str());
523 if((int)m_folder == nType)
525 m_result.push_back(TRUE);
526 LoggerD("<<< folder is same");
530 m_result.push_back(FALSE);
531 LoggerD("<<< folder is different");
535 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_IS_READ)==0){
536 LoggerD("<<< value:[" << value << "]");
537 std::string lowerString;
538 lowerString.assign(value->toString());
539 StrLowChange(lowerString);
540 int nType = lowerString.compare("true");
541 if((int)m_isRead != nType)
543 m_result.push_back(TRUE);
544 LoggerD("<<< isRead is same");
548 m_result.push_back(FALSE);
549 LoggerD("<<< isRead is different");
553 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_HAS_ATTACHMENT)==0){
554 LoggerD("<<< value:[" << value << "]");
555 std::string lowerString;
556 lowerString.assign(value->toString());
557 StrLowChange(lowerString);
558 int nType = lowerString.compare("true");
559 if((int)m_hasAttachment != nType)
561 m_result.push_back(TRUE);
562 LoggerD("<<< isRead is same");
566 m_result.push_back(FALSE);
567 LoggerD("<<< isRead is different");
571 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_MESSAGE_STATUS)==0){
572 LoggerD("<<< value:[" << value->toString() << "]");
573 std::string convertStatus = value->toString();
574 int nStatus = convertMessageStatus(convertStatus);
575 if((int)m_messageStatus == nStatus)
577 m_result.push_back(TRUE);
578 LoggerD("<<< folder is same");
582 m_result.push_back(FALSE);
583 LoggerD("<<< folder is different");
587 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_PRIORITY)==0){
588 LoggerD("<<< value:[" << value->toString() << "]");
589 std::string lowerString;
590 lowerString.assign(value->toString());
591 StrLowChange(lowerString);
592 if(lowerString.compare("true"))
594 if((int)m_priority == MessagePriority::Priority::HIGH)
596 m_result.push_back(TRUE);
597 LoggerD("<<< priority is HIGH");
601 m_result.push_back(FALSE);
602 LoggerD("<<< priority is LOW OR NORMAL");
605 else if(lowerString.compare("false") == 0)
607 if((int)m_priority == MessagePriority::Priority::NORMAL)
609 m_result.push_back(FALSE);
610 LoggerD("<<< priority is HIGH");
614 m_result.push_back(TRUE);
615 LoggerD("<<< priority is LOW OR NORMAL");
620 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_BODY)==0){
621 LoggerD("<<< value:[" << value << "]");
622 LoggerD("<<< value->toString():[" << value->toString() << "]");
623 LoggerD("<<< m_body:[" << m_body << "]");
625 valueString = m_body;
626 if(getMatchFlagResult(value, valueString, matchFlag))
628 m_result.push_back(TRUE);
629 LoggerD("<<< body is same");
633 m_result.push_back(FALSE);
634 LoggerD("<<< body is different");
639 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_SUBJECT)==0){
640 LoggerD("<<< value:[" << value << "]");
641 LoggerD("<<< value->toString():[" << value->toString() << "]");
642 LoggerD("<<< m_subject:[" << m_subject << "]");
644 valueString = m_subject;
645 if(getMatchFlagResult(value, valueString, matchFlag))
647 m_result.push_back(TRUE);
648 LoggerD("<<< subject is same");
652 m_result.push_back(FALSE);
653 LoggerD("<<< subject is different");
658 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_FROM)==0){
659 LoggerD("<<< value:[" << value << "]");
660 LoggerD("<<< value->toString():[" << value->toString() << "]");
661 LoggerD("<<< m_from:[" << m_from << "]");
663 valueString = m_from;
664 if(getMatchFlagResult(value, valueString, matchFlag))
666 m_result.push_back(TRUE);
667 LoggerD("<<< from is same");
671 m_result.push_back(FALSE);
672 LoggerD("<<< from is different");
677 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_TO)==0){
678 LoggerD("<<< value:[" << value << "]");
679 LoggerD("<<< value->toString():[" << value->toString() << "]");
680 LoggerD("<<< m_to.size :[" << m_to.size() << "]");
683 for(unsigned int i=0; i < m_to.size(); i++)
685 valueString = m_to[i];
686 result = result || getMatchFlagResult(value, valueString, matchFlag);
688 LoggerD("<<< to compare result is :" << result);
689 m_result.push_back(result);
693 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_CC)==0){
694 LoggerD("<<< value:[" << value << "]");
695 LoggerD("<<< value->toString():[" << value->toString() << "]");
696 LoggerD("<<< m_cc.size :[" << m_cc.size() << "]");
699 for(unsigned int i=0; i < m_cc.size(); i++)
701 valueString = m_cc[i];
702 result = result || getMatchFlagResult(value, valueString, matchFlag);
704 LoggerD("<<< cc compare result is : " << result);
705 m_result.push_back(result);
709 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_BCC)==0){
710 LoggerD("<<< value:[" << value << "]");
711 LoggerD("<<< value->toString():[" << value->toString() << "]");
712 LoggerD("<<< m_cc.size :[" << m_bcc.size() << "]");
715 for(unsigned int i=0; i < m_bcc.size(); i++)
717 valueString = m_bcc[i];
718 result = result || getMatchFlagResult(value, valueString, matchFlag);
720 LoggerD("<<< bcc compare result is : " << result);
721 m_result.push_back(result);
725 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_IS_RESPONSE_TO)==0){
726 LoggerD("<<< value:[" << value << "]");
727 int nType = atoi(value->toString().c_str());
728 if(m_isResponseTo == nType)
730 m_result.push_back(TRUE);
731 LoggerD("<<< conversationID is same");
735 m_result.push_back(FALSE);
736 LoggerD("<<< conversationID is different");
743 int StorageChangesMessageGenerator::convertMessageType(std::string& stringType){
744 LoggerD("<<< stringType:[" << stringType << "]");
746 int retMessageType = -1;
748 if(stringType.compare("messaging.sms") ==0){
749 retMessageType = SMS;
750 }else if(stringType.compare("messaging.mms") ==0){
751 retMessageType = MMS;
752 }else if(stringType.compare("messaging.email") ==0){
753 retMessageType = EMAIL;
755 LoggerE("invalid type:[" << stringType << "]");
759 LoggerD(">>> retMessageType:" << retMessageType);
760 return retMessageType;
763 int StorageChangesMessageGenerator::convertFolderType(std::string& stringType){
764 LoggerD("<<< stringType:[" << stringType << "]");
766 int retMessageType = -1;
768 if(stringType.compare("INBOX") ==0){
769 retMessageType = INBOX;
770 }else if(stringType.compare("OUTBOX") ==0){
771 retMessageType = OUTBOX;
772 }else if(stringType.compare("DRAFTBOX") ==0){
773 retMessageType = DRAFTBOX;
774 }else if(stringType.compare("SENTBOX") ==0){
775 retMessageType = SENTBOX;
777 LoggerE("invalid type:[" << stringType << "]");
781 LoggerD(">>> retMessageType:" << retMessageType);
782 return retMessageType;
785 int StorageChangesMessageGenerator::convertMessageStatus(std::string& stringStatus){
786 LoggerD("<<< stringType:[" << stringStatus << "]");
788 int retMessageStatus = -1;
790 if(stringStatus.compare("SENT") ==0){
791 retMessageStatus = MESSAGE_STATUS_SENT;
792 }else if(stringStatus.compare("SENDING") ==0){
793 retMessageStatus = MESSAGE_STATUS_SENDING;
794 }else if(stringStatus.compare("FAILED") ==0){
795 retMessageStatus = MESSAGE_STATUS_FAILED;
796 }else if(stringStatus.compare("DRAFT") ==0){
797 retMessageStatus = MESSAGE_STATUS_DRAFT;
799 LoggerE("invalid type:[" << stringStatus << "]");
803 LoggerD(">>> retMessageType:" << retMessageStatus);
804 return retMessageStatus;
807 void StorageChangesMessageGenerator::visitAttributeRange(std::string& attrName, DeviceAPI::Tizen::AnyPtr& initialValue, DeviceAPI::Tizen::AnyPtr& endValue, int depth) {
812 string initialValueStr;
815 if(initialValue == NULL || endValue == NULL)
818 if(attrName.compare(StorageChangesMessageFilterValidatorFactory::ATTRIBUTE_TIMESTAMP)==0){
819 // startTime = convertToTimeFormat(initialValueStr);
820 // endTime = convertToTimeFormat(endValueStr);
822 if (!initialValue->isNullOrUndefined()) {
823 if( initialValue->isType(DeviceAPI::Tizen::PrimitiveType_Time) ) {
824 LoggerD("<<<initialValue->getType()[PrimitiveType_Time]");
825 startTime = *initialValue->getDateTm();
828 LoggerE("initialValue->getType()");
829 ThrowMsg(WrtDeviceApis::Commons::InvalidArgumentException, "invalid initialValue Type");
833 if (!endValue->isNullOrUndefined()) {
834 if( endValue->isType(DeviceAPI::Tizen::PrimitiveType_Time) ) {
835 LoggerD("<<<initialValue->getType()[PrimitiveType_Time]");
836 endTime = *endValue->getDateTm();
837 LoggerD("<<<valueStr[" << endValueStr <<"]");
839 LoggerE("endValue->getType()");
840 ThrowMsg(WrtDeviceApis::Commons::InvalidArgumentException, "invalid endValue Type");
844 result = getBetweenRangeClause(startTime, endTime);
847 LoggerD("<<< timestamp is in range");
848 m_result.push_back(TRUE);
850 LoggerD("<<< timestamp is out of range");
851 m_result.push_back(FALSE);
856 bool StorageChangesMessageGenerator::getMatchFlagResult(DeviceAPI::Tizen::AnyPtr& value, std::string& valueString, MatchFlag& matchFlag)
858 std::vector<std::string>::iterator iter;
860 if(matchFlag == DeviceAPI::Tizen::MATCH_EXACTLY){
861 LoggerD("STRING_MATCH_EXACTLY");
862 result = result || getMatchExactlyClause(valueString, value);
863 }else if(matchFlag == DeviceAPI::Tizen::MATCH_FULLSTRING){
864 LoggerD("STRING_MATCH_FULLSTRING");
865 result = result || getMatchFullstringClause(valueString, value);
866 }else if(matchFlag == DeviceAPI::Tizen::MATCH_CONTAINS){
867 LoggerD("STRING_MATCH_CONTAINS");
868 result = result || getMatchContainsClause(valueString, value);
869 }else if(matchFlag == DeviceAPI::Tizen::MATCH_STARTSWITH){
870 LoggerD("STRING_MATCH_STARTSWITH");
871 result = result || getMatchStartwithClause(valueString, value);
872 }else if(matchFlag == DeviceAPI::Tizen::MATCH_ENDSWITH){
873 LoggerD("STRING_MATCH_ENDSWITH");
874 result = result || getMatchEndwithClause(valueString, value);
875 }else if(matchFlag == DeviceAPI::Tizen::MATCH_EXISTS){
876 LoggerD("STRING_MATCH_EXIST");
877 result = result || getMatchExistClause(valueString);
879 LoggerD("[ERROR]invalid match flag : iter:" << *iter);
884 bool StorageChangesMessageGenerator::getCompareResult()
887 LoggerD("m_result.size() " << m_result.size());
888 result = m_result.back();
890 LoggerD("result = " << result);
894 void StorageChangesMessageGenerator::StrLowChange(std::string& tempString)
896 std::transform(tempString.begin(), tempString.end(), tempString.begin(), ::tolower);