2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * MessageFilterValidator.cpp
19 * Created on: 2011. 10. 31.
23 #include "MessageFilterValidator.h"
24 #include "MessageFilterValidatorFactory.h"
26 #include <dpl/log/log.h>
29 using namespace WrtDeviceApis::Commons;
30 using namespace WrtDeviceApis::CommonsJavaScript;
31 using namespace TizenApis::Api::Tizen;
37 MessageFilterValidator::MessageFilterValidator(PropertyStructArray properties,
38 MatchFlagStrArray matchFlag, Api::Tizen::PrimitiveType idType):FilterValidator(properties, matchFlag){
39 m_isTypeSetted = false;
41 initMatchFlagVectors();
42 initAttributeAndMatchFlagsMap();
45 MessageFilterValidator::~MessageFilterValidator(){
48 void MessageFilterValidator::initMatchFlagVectors(){
49 m_typeMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_EXACTLY);
51 m_idMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_EXACTLY);
53 m_folderIdMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_EXACTLY);
55 m_timestampMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_EXACTLY);
57 m_fromMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_EXACTLY);
58 m_fromMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_CONTAINS);
59 m_fromMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_STARTSWITH);
60 m_fromMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_ENDSWITH);
62 m_toMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_EXACTLY);
63 m_toMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_CONTAINS);
64 m_toMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_STARTSWITH);
65 m_toMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_ENDSWITH);
67 m_ccMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_EXACTLY);
68 m_ccMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_CONTAINS);
69 m_ccMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_STARTSWITH);
70 m_ccMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_ENDSWITH);
72 m_bccMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_EXACTLY);
73 m_bccMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_CONTAINS);
74 m_bccMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_STARTSWITH);
75 m_bccMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_ENDSWITH);
77 m_bodyMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_CONTAINS);
79 m_isReadMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_EXACTLY);
81 m_priorityMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_EXACTLY);
83 m_subjectMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_EXACTLY);
84 m_subjectMatchFlagVec.push_back(MessageFilterValidatorFactory::MATCH_CONTAINS);
87 void MessageFilterValidator::initAttributeAndMatchFlagsMap(){
88 m_attributeAndMatchFlagsMap[MessageFilterValidatorFactory::ATTRIBUTE_TYPE] = m_typeMatchFlagVec;
89 m_attributeAndMatchFlagsMap[MessageFilterValidatorFactory::ATTRIBUTE_ID] = m_idMatchFlagVec;
90 m_attributeAndMatchFlagsMap[MessageFilterValidatorFactory::ATTRIBUTE_FOLDER] = m_folderIdMatchFlagVec;
91 m_attributeAndMatchFlagsMap[MessageFilterValidatorFactory::ATTRIBUTE_TIMESTAMP] = m_timestampMatchFlagVec;
92 m_attributeAndMatchFlagsMap[MessageFilterValidatorFactory::ATTRIBUTE_FROM] = m_fromMatchFlagVec;
93 m_attributeAndMatchFlagsMap[MessageFilterValidatorFactory::ATTRIBUTE_CC] = m_ccMatchFlagVec;
94 m_attributeAndMatchFlagsMap[MessageFilterValidatorFactory::ATTRIBUTE_BCC] = m_bccMatchFlagVec;
95 m_attributeAndMatchFlagsMap[MessageFilterValidatorFactory::ATTRIBUTE_BODY] = m_bodyMatchFlagVec;
96 m_attributeAndMatchFlagsMap[MessageFilterValidatorFactory::ATTRIBUTE_IS_READ] = m_isReadMatchFlagVec;
97 m_attributeAndMatchFlagsMap[MessageFilterValidatorFactory::ATTRIBUTE_PRIORITY] = m_priorityMatchFlagVec;
98 m_attributeAndMatchFlagsMap[MessageFilterValidatorFactory::ATTRIBUTE_SUBJECT] = m_subjectMatchFlagVec;
99 m_attributeAndMatchFlagsMap[MessageFilterValidatorFactory::ATTRIBUTE_TO] = m_toMatchFlagVec;
102 bool MessageFilterValidator::validateAttributeRange(std::string& attrName, Api::Tizen::AnyPtr& initialValue, Api::Tizen::AnyPtr& endValue, int depth){
105 if(attrName.compare(MessageFilterValidatorFactory::ATTRIBUTE_TIMESTAMP)!=0){
106 MsgLogError(">>> [ERROR] Not Supported attribute :[" << attrName << "]");
110 retVal = FilterValidator::validateAttributeRange(attrName, initialValue, endValue, depth);
115 bool MessageFilterValidator::vectorContains(std::vector<std::string>& vec, std::string& value){
116 std::vector<std::string>::iterator it;
117 for(it=vec.begin(); it<vec.end(); it++){
118 if((*it).compare(value) == 0){
126 bool MessageFilterValidator::validateAttribute(std::string& attrName, Api::Tizen::AnyArrayPtr& values,
127 std::string& matchFlag, bool caseSensitive, int depth){
128 bool retBool = false;
130 AnyArray::iterator iter;
131 for(iter=values->begin(); iter!=values->end(); iter++){
132 AnyPtr value = *iter;
133 if(validateAttributeEach(attrName, value, matchFlag, depth) == false){
134 MsgLogWanning(">>>[Warning] attrName:[" << attrName << "] is invalid value:[" << value->toString() << "]");
139 retBool = FilterValidator::validateAttribute(attrName, values, matchFlag, caseSensitive, depth);
140 LogDebug(">>> retBool:" << retBool);
144 bool MessageFilterValidator::validateAttributeEach(std::string& attrName,Api::Tizen::AnyPtr& value, std::string& matchFlag, int depth){
145 LogDebug("<<< attrName:[" << attrName << "], value:[" << value->toString() << "]");
147 if(attrName.compare(MessageFilterValidatorFactory::ATTRIBUTE_TYPE)==0){
148 if(m_isTypeSetted == true){
149 MsgLogError(">>> [ERROR] duplicated type :[" << attrName << "], value:[" <<
150 value->toString()<< "]");
153 m_isTypeSetted = true;
157 if(m_attributeAndMatchFlagsMap.count(attrName) == 0)
159 MsgLogWanning(">>>[Waning] attrName is not supported:[" << attrName << "]");
163 std::vector<std::string> vec = m_attributeAndMatchFlagsMap.find(attrName)->second;
165 if(vectorContains(vec, matchFlag)==false){
166 MsgLogWanning(">>>[Waning]MatchFlag check fail unsupported flag:[" << matchFlag << "] for Attribute:[" << attrName << "]");
170 LogDebug(">>> return true");
174 } //namespace Messaging