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 * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com)
20 #include "NodeFilterMatcher.h"
24 namespace WrtDeviceApis {
25 namespace Filesystem {
28 bool NodeFilterMatcher::match(const INodePtr& value,
29 const NodeFilterPtr& filter)
32 if (!matchString(value->getPath()->getName(), filter->getName())) {
36 if (!matchRange(value->getCreated(),
37 filter->getMinCreated(),
38 filter->getMaxCreated()))
43 if (!matchRange(value->getModified(),
44 filter->getMinModified(),
45 filter->getMaxModified()))
50 if (!matchRange(value->getSize(),
52 filter->getMaxSize()))
60 bool NodeFilterMatcher::matchString(const std::string& value,
61 const OptionalString& filter)
64 return pcrecpp::RE(*filter).PartialMatch(value);
69 template<typename Type>
70 bool NodeFilterMatcher::matchRange(const Type& value,
71 const boost::optional<Type>& min,
72 const boost::optional<Type>& max)
74 if ((!!min && (value < *min)) ||
75 (!!max && (value > *max)))