diff --git a/hoot-core/src/main/cpp/hoot/core/criterion/TagCriterion.cpp b/hoot-core/src/main/cpp/hoot/core/criterion/TagCriterion.cpp
index 251e4f6..03d6e92 100644
--- a/hoot-core/src/main/cpp/hoot/core/criterion/TagCriterion.cpp
+++ b/hoot-core/src/main/cpp/hoot/core/criterion/TagCriterion.cpp
@@ -37,12 +37,14 @@ namespace hoot
HOOT_FACTORY_REGISTER(ElementCriterion, TagCriterion)
-TagCriterion::TagCriterion()
+TagCriterion::TagCriterion() :
+_caseSensitive(false)
{
setConfiguration(conf());
}
-TagCriterion::TagCriterion(const QString& k, const QString& v)
+TagCriterion::TagCriterion(const QString& k, const QString& v) :
+_caseSensitive(false)
{
_kvps.append(k + "=" + v);
}
@@ -63,8 +65,10 @@ void TagCriterion::setKvps(const QStringList kvps)
void TagCriterion::setConfiguration(const Settings &s)
{
- setKvps(ConfigOptions(s).getTagCriterionKvps());
+ ConfigOptions confOpts = ConfigOptions(s);
+ setKvps(confOpts.getTagCriterionKvps());
LOG_VART(_kvps);
+ setCaseSensitive(confOpts.getTagCriterionCaseSensitive());
}
bool TagCriterion::isSatisfied(const ConstElementPtr& e) const
@@ -76,6 +80,8 @@ bool TagCriterion::isSatisfied(const ConstElementPtr& e) const
}
LOG_VART(e);
+ const Qt::CaseSensitivity caseSensitivity =
+ _caseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive;
for (int i = 0; i < _kvps.size(); i++)
{
const QStringList kvpParts = _kvps.at(i).split("=");
@@ -83,7 +89,7 @@ bool TagCriterion::isSatisfied(const ConstElementPtr& e) const
const QString val = kvpParts[1];
LOG_VART(key);
LOG_VART(val);
- if (e->getTags().get(key) == val)
+ if (e->getTags().get(key).compare(val, caseSensitivity) == 0)
{
LOG_TRACE("crit satisifed");
return true;