Skip to content

v0.2.49..v0.2.50 changeset TagCriterion.cpp

Garret Voltz edited this page Nov 6, 2019 · 1 revision
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;
Clone this wiki locally