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.
18 * @file IFilterTracer.cpp
19 * @author Kisub Song (kisubs.song@samsung.com)
25 #include "FilterValidator.h"
33 FilterValidator::FilterValidator(PropertyStructArray properties)
36 for(i=0; properties[i].attributeName != 0 ; i++)
37 m_properties[properties[i].attributeName] =
38 PropertyPtr(new Property(properties[i].type));
41 FilterValidator::~FilterValidator()
45 bool FilterValidator::validateAttribute(std::string& attrName,
46 MatchFlag& matchFlag, AnyPtr& matchValue, int depth)
48 if(m_properties.find(attrName) == m_properties.end())
51 if(matchValue == NULL)
54 PropertyPtr prop = m_properties[attrName];
56 if(matchFlag == MATCH_EXISTS)
59 if(!matchValue->isType(prop->type))
65 bool FilterValidator::validateAttributeRange(std::string& attrName,
66 AnyPtr& initialValue, AnyPtr& endValue, int depth)
68 if(initialValue == NULL || endValue == NULL)
71 if(m_properties.find(attrName) == m_properties.end())
74 PropertyPtr prop = m_properties[attrName];
76 bool initialValueIsNull = initialValue->isNullOrUndefined();
77 bool endValueIsNull = endValue->isNullOrUndefined();
79 // Invalid if both values are null
80 if(initialValueIsNull && endValueIsNull)
83 if(!initialValueIsNull && !initialValue->isType(prop->type))
86 if(!endValueIsNull && !endValue->isType(prop->type))
92 bool FilterValidator::validateComposite(int depth)