Skip to content

v0.2.48..v0.2.49 changeset ConflatableElementCriterion.cpp

Garret Voltz edited this page Oct 2, 2019 · 1 revision
diff --git a/hoot-core/src/main/cpp/hoot/core/criterion/ConflatableElementCriterion.cpp b/hoot-core/src/main/cpp/hoot/core/criterion/ConflatableElementCriterion.cpp
index d878161..eae94ce 100644
--- a/hoot-core/src/main/cpp/hoot/core/criterion/ConflatableElementCriterion.cpp
+++ b/hoot-core/src/main/cpp/hoot/core/criterion/ConflatableElementCriterion.cpp
@@ -74,13 +74,45 @@ QStringList ConflatableElementCriterion::getConflatableCriteriaForElement(const
   for (QMap<QString, ElementCriterionPtr>::const_iterator itr = _conflatableCriteria.begin();
        itr != _conflatableCriteria.end(); ++itr)
   {
+    LOG_VART(itr.key());
     if (itr.value()->isSatisfied(e))
     {
-      // It is something we can conflate.
+      // It is something we can conflate?
       conflatableCriteriaForElement.append(itr.key());
     }
   }
+  LOG_VART(conflatableCriteriaForElement);
   return conflatableCriteriaForElement;
 }
 
+QStringList ConflatableElementCriterion::getCriterionClassNamesByType(const GeometryType& type)
+{
+  QStringList classNamesByType;
+  std::vector<std::string> classNames =
+    Factory::getInstance().getObjectNamesByBase("hoot::ElementCriterion");
+  LOG_VARD(classNamesByType);
+  for (size_t i = 0; i < classNames.size(); i++)
+  {
+    const std::string className = classNames[i];
+    LOG_VARD(className);
+
+    ElementCriterionPtr crit(
+      Factory::getInstance().constructObject<ElementCriterion>(className));
+    std::shared_ptr<ConflatableElementCriterion> conflatableCrit =
+      std::dynamic_pointer_cast<ConflatableElementCriterion>(crit);
+    if (conflatableCrit)
+    {
+      LOG_DEBUG("is conflatable: " << className);
+      std::shared_ptr<GeometryTypeCriterion> geometryTypeCrit =
+        std::dynamic_pointer_cast<GeometryTypeCriterion>(crit);
+      if (geometryTypeCrit && geometryTypeCrit->getGeometryType() == type)
+      {
+        LOG_DEBUG("is same geometry: " << className);
+        classNamesByType.append(QString::fromStdString(className));
+      }
+    }
+  }
+  return classNamesByType;
+}
+
 }
Clone this wiki locally