Skip to content

v0.2.53..v0.2.54 changeset BuildingWayNodeCriterion.cpp

Garret Voltz edited this page Mar 31, 2020 · 1 revision
diff --git a/hoot-core/src/main/cpp/hoot/core/criterion/BuildingWayNodeCriterion.cpp b/hoot-core/src/main/cpp/hoot/core/criterion/BuildingWayNodeCriterion.cpp
index 952e034..310e121 100644
--- a/hoot-core/src/main/cpp/hoot/core/criterion/BuildingWayNodeCriterion.cpp
+++ b/hoot-core/src/main/cpp/hoot/core/criterion/BuildingWayNodeCriterion.cpp
@@ -22,14 +22,12 @@
  * This will properly maintain the copyright information. DigitalGlobe
  * copyrights will be updated automatically.
  *
- * @copyright Copyright (C) 2016, 2017, 2018, 2019 DigitalGlobe (http://www.digitalglobe.com/)
+ * @copyright Copyright (C) 2016, 2017, 2018, 2019, 2020 DigitalGlobe (http://www.digitalglobe.com/)
  */
 #include "BuildingWayNodeCriterion.h"
 
 // hoot
 #include <hoot/core/util/Factory.h>
-#include <hoot/core/index/OsmMapIndex.h>
-#include <hoot/core/elements/NodeToWayMap.h>
 #include <hoot/core/criterion/BuildingCriterion.h>
 
 using namespace std;
@@ -39,81 +37,25 @@ namespace hoot
 
 HOOT_FACTORY_REGISTER(ElementCriterion, BuildingWayNodeCriterion)
 
-BuildingWayNodeCriterion::BuildingWayNodeCriterion()
+BuildingWayNodeCriterion::BuildingWayNodeCriterion() :
+WayNodeCriterion()
 {
+  _parentCriterion.reset(new BuildingCriterion());
 }
 
 BuildingWayNodeCriterion::BuildingWayNodeCriterion(ConstOsmMapPtr map) :
-_map(map)
+WayNodeCriterion(map)
 {
-}
-
-bool BuildingWayNodeCriterion::isSatisfied(const ConstElementPtr& e) const
-{
-  bool result = false;
-
-  if (!_map)
-  {
-    throw HootException("You must set the map before calling BuildingWayNodeCriterion");
-  }
-
-  if (e->getElementType() == ElementType::Node)
-  {
-    const set<long> waysContainingNode =
-      _map->getIndex().getNodeToWayMap()->getWaysByNode(e->getElementId().getId());
-    for (set<long>::const_iterator it = waysContainingNode.begin();
-         it != waysContainingNode.end(); ++it)
-    {
-      const long wayId = *it;
-      if (_map->containsElement(ElementId(ElementType::Way, wayId)) &&
-          BuildingCriterion().isSatisfied(_map->getWay(wayId)))
-      {
-        result = true;
-        break;
-      }
-    }
-  }
-
-  return result;
-}
-
-long BuildingWayNodeCriterion::getMatchingWayId(const ConstElementPtr& e)
-{
-  long result = 0;
-
-  if (!_map)
-  {
-    throw HootException("You must set the map before calling BuildingWayNodeCriterion");
-  }
-
-  if (e->getElementType() == ElementType::Node)
-  {
-    const set<long> waysContainingNode =
-      _map->getIndex().getNodeToWayMap()->getWaysByNode(e->getElementId().getId());
-    for (set<long>::const_iterator it = waysContainingNode.begin(); it != waysContainingNode.end();
-         ++it)
-    {
-      const long wayId = *it;
-      if (_map->containsElement(ElementId(ElementType::Way, wayId)) &&
-          BuildingCriterion().isSatisfied(_map->getWay(wayId)))
-      {
-        return wayId;
-        break;
-      }
-    }
-  }
-
-  return result;
+  _parentCriterion.reset(new BuildingCriterion(_map));
 }
 
 void BuildingWayNodeCriterion::setOsmMap(const OsmMap* map)
 {
   _map = map->shared_from_this();
-}
-
-ElementCriterionPtr BuildingWayNodeCriterion::clone()
-{
-  return ElementCriterionPtr(new BuildingWayNodeCriterion(_map));
+  if (_parentCriterion)
+  {
+    _parentCriterion.reset(new BuildingCriterion(_map));
+  }
 }
 
 }
Clone this wiki locally