v0.2.54..v0.2.55 changeset OsmXmlChangesetFileWriter.cpp
Garret Voltz edited this page Aug 14, 2020
·
1 revision
diff --git a/hoot-core/src/main/cpp/hoot/core/io/OsmXmlChangesetFileWriter.cpp b/hoot-core/src/main/cpp/hoot/core/io/OsmXmlChangesetFileWriter.cpp
index 6dfc4b4..4fdac34 100644
--- a/hoot-core/src/main/cpp/hoot/core/io/OsmXmlChangesetFileWriter.cpp
+++ b/hoot-core/src/main/cpp/hoot/core/io/OsmXmlChangesetFileWriter.cpp
@@ -30,7 +30,7 @@
#include <hoot/core/io/OsmXmlWriter.h>
#include <hoot/core/util/ConfigOptions.h>
#include <hoot/core/schema/MetadataTags.h>
-#include <hoot/core/elements/OsmUtils.h>
+#include <hoot/core/util/DateTimeUtils.h>
#include <hoot/core/util/Log.h>
#include <hoot/core/util/Factory.h>
@@ -52,6 +52,11 @@ _addTimestamp(ConfigOptions().getChangesetXmlWriterAddTimestamp()),
_includeDebugTags(ConfigOptions().getWriterIncludeDebugTags()),
_includeCircularErrorTags(ConfigOptions().getWriterIncludeCircularErrorTags())
{
+}
+
+void OsmXmlChangesetFileWriter::_initStats()
+{
+ _stats.clear();
_stats.resize(Change::Unknown, ElementType::Unknown);
vector<QString> rows({"Create", "Modify", "Delete"});
vector<QString> columns({"Node", "Way", "Relation"});
@@ -87,6 +92,7 @@ void OsmXmlChangesetFileWriter::write(const QString& path,
QString filepath = path;
_initIdCounters();
+ _initStats();
_parsedChanges.clear();
long changesetProgress = 1;
@@ -209,7 +215,8 @@ void OsmXmlChangesetFileWriter::write(const QString& path,
LOG_DEBUG("Changeset written to: " << path << "...");
}
-void OsmXmlChangesetFileWriter::_writeNode(QXmlStreamWriter& writer, ConstElementPtr node, ConstElementPtr previous)
+void OsmXmlChangesetFileWriter::_writeNode(QXmlStreamWriter& writer, ConstElementPtr node,
+ ConstElementPtr previous)
{
ConstNodePtr n = dynamic_pointer_cast<const Node>(node);
ConstNodePtr pn = dynamic_pointer_cast<const Node>(previous);
@@ -255,7 +262,7 @@ void OsmXmlChangesetFileWriter::_writeNode(QXmlStreamWriter& writer, ConstElemen
if (_addTimestamp)
{
if (n->getTimestamp() != 0)
- writer.writeAttribute("timestamp", OsmUtils::toTimeString(n->getTimestamp()));
+ writer.writeAttribute("timestamp", DateTimeUtils::toTimeString(n->getTimestamp()));
else
writer.writeAttribute("timestamp", "");
}
@@ -266,7 +273,8 @@ void OsmXmlChangesetFileWriter::_writeNode(QXmlStreamWriter& writer, ConstElemen
writer.writeEndElement();
}
-void OsmXmlChangesetFileWriter::_writeWay(QXmlStreamWriter& writer, ConstElementPtr way, ConstElementPtr previous)
+void OsmXmlChangesetFileWriter::_writeWay(QXmlStreamWriter& writer, ConstElementPtr way,
+ ConstElementPtr previous)
{
ConstWayPtr w = dynamic_pointer_cast<const Way>(way);
ConstWayPtr pw = dynamic_pointer_cast<const Way>(previous);
@@ -307,7 +315,7 @@ void OsmXmlChangesetFileWriter::_writeWay(QXmlStreamWriter& writer, ConstElement
if (_addTimestamp)
{
if (w->getTimestamp() != 0)
- writer.writeAttribute("timestamp", OsmUtils::toTimeString(w->getTimestamp()));
+ writer.writeAttribute("timestamp", DateTimeUtils::toTimeString(w->getTimestamp()));
else
writer.writeAttribute("timestamp", "");
}
@@ -334,7 +342,8 @@ void OsmXmlChangesetFileWriter::_writeWay(QXmlStreamWriter& writer, ConstElement
writer.writeEndElement();
}
-void OsmXmlChangesetFileWriter::_writeRelation(QXmlStreamWriter& writer, ConstElementPtr relation, ConstElementPtr previous)
+void OsmXmlChangesetFileWriter::_writeRelation(QXmlStreamWriter& writer, ConstElementPtr relation,
+ ConstElementPtr previous)
{
ConstRelationPtr r = dynamic_pointer_cast<const Relation>(relation);
ConstRelationPtr pr = dynamic_pointer_cast<const Relation>(previous);
@@ -375,7 +384,7 @@ void OsmXmlChangesetFileWriter::_writeRelation(QXmlStreamWriter& writer, ConstEl
if (_addTimestamp)
{
if (r->getTimestamp() != 0)
- writer.writeAttribute("timestamp", OsmUtils::toTimeString(r->getTimestamp()));
+ writer.writeAttribute("timestamp", DateTimeUtils::toTimeString(r->getTimestamp()));
else
writer.writeAttribute("timestamp", "");
}
@@ -448,8 +457,8 @@ void OsmXmlChangesetFileWriter::_writeTags(QXmlStreamWriter& writer, Tags& tags,
const QString val = it.value();
if (key.isEmpty() == false && val.isEmpty() == false)
{
- // Ignore 'hoot:hash' for nodes
- if (key == MetadataTags::HootHash() && element->getElementType() == ElementType::Node)
+ // always ignore 'hoot:hash'
+ if (key == MetadataTags::HootHash())
continue;
else if (!_includeDebugTags && key.toLower().startsWith("hoot:"))
continue;
@@ -476,4 +485,18 @@ void OsmXmlChangesetFileWriter::_writeTags(QXmlStreamWriter& writer, Tags& tags,
}
}
+QString OsmXmlChangesetFileWriter::getStatsTable(const ChangesetStatsFormat& format) const
+{
+ switch (format.getEnum())
+ {
+ case ChangesetStatsFormat::Text:
+ return _stats.toTableString();
+ case ChangesetStatsFormat::Json:
+ return _stats.toJsonString();
+ break;
+ default:
+ return "";
+ }
+}
+
}