Skip to content

v0.2.55..v0.2.56 changeset ElementConverter.cpp

Garret Voltz edited this page Aug 14, 2020 · 3 revisions
diff --git a/hoot-core/src/main/cpp/hoot/core/elements/ElementConverter.cpp b/hoot-core/src/main/cpp/hoot/core/elements/ElementConverter.cpp
index 8663153..9d09cec 100644
--- a/hoot-core/src/main/cpp/hoot/core/elements/ElementConverter.cpp
+++ b/hoot-core/src/main/cpp/hoot/core/elements/ElementConverter.cpp
@@ -69,10 +69,12 @@ namespace hoot
 
 int ElementConverter::logWarnCount = 0;
 
-ElementConverter::ElementConverter(const ConstElementProviderPtr& provider) :
+ElementConverter::ElementConverter(const ConstElementProviderPtr& provider,
+                                   const bool logWarningsForMissingElements) :
 _constProvider(provider),
 _spatialReference(provider->getProjection()),
-_requireAreaForPolygonConversion(true)
+_requireAreaForPolygonConversion(true),
+_logWarningsForMissingElements(logWarningsForMissingElements)
 {
 }
 
@@ -118,7 +120,6 @@ std::shared_ptr<Geometry> ElementConverter::convertToGeometry(
   }
 }
 
-
 std::shared_ptr<Point> ElementConverter::convertToGeometry(const ConstNodePtr& n) const
 {
   return
@@ -200,15 +201,18 @@ std::shared_ptr<LineString> ElementConverter::convertToLineString(const ConstWay
     ConstNodePtr n = _constProvider->getNode(ids[i]);
     if (!n.get())
     {
-      if (logWarnCount < Log::getWarnMessageLimit())
+      if (_logWarningsForMissingElements)
       {
-        LOG_WARN("Missing node: " << ids[i] << ". Not creating line string...");
+        if (logWarnCount < Log::getWarnMessageLimit())
+        {
+          LOG_WARN("Missing node: " << ids[i] << ". Not creating line string...");
+        }
+        else if (logWarnCount == Log::getWarnMessageLimit())
+        {
+          LOG_WARN(className() << ": " << Log::LOG_WARN_LIMIT_REACHED_MESSAGE);
+        }
+        logWarnCount++;
       }
-      else if (logWarnCount == Log::getWarnMessageLimit())
-      {
-        LOG_WARN(className() << ": " << Log::LOG_WARN_LIMIT_REACHED_MESSAGE);
-      }
-      logWarnCount++;
       return std::shared_ptr<LineString>();
     }
     cs->setAt(n->toCoordinate(), i);
@@ -220,15 +224,18 @@ std::shared_ptr<LineString> ElementConverter::convertToLineString(const ConstWay
     ConstNodePtr n = _constProvider->getNode(ids[0]);
     if (!n.get())
     {
-      if (logWarnCount < Log::getWarnMessageLimit())
-      {
-        LOG_WARN("Missing node: " << ids[0] << ". Not creating line string...");
-      }
-      else if (logWarnCount == Log::getWarnMessageLimit())
+      if (_logWarningsForMissingElements)
       {
-        LOG_WARN(className() << ": " << Log::LOG_WARN_LIMIT_REACHED_MESSAGE);
+        if (logWarnCount < Log::getWarnMessageLimit())
+        {
+          LOG_WARN("Missing node: " << ids[0] << ". Not creating line string...");
+        }
+        else if (logWarnCount == Log::getWarnMessageLimit())
+        {
+          LOG_WARN(className() << ": " << Log::LOG_WARN_LIMIT_REACHED_MESSAGE);
+        }
+        logWarnCount++;
       }
-      logWarnCount++;
       return std::shared_ptr<LineString>();
     }
     cs->setAt(n->toCoordinate(), 1);
Clone this wiki locally