From 93c26d54bdaafcb0ebdd81b8e951fa1a1656c90e Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Thu, 10 Mar 2016 13:38:47 +0300 Subject: [PATCH] [editor] Create OSM object code in ChangesetWrapper. --- editor/changeset_wrapper.cpp | 12 ++++++++++++ editor/changeset_wrapper.hpp | 3 +++ 2 files changed, 15 insertions(+) diff --git a/editor/changeset_wrapper.cpp b/editor/changeset_wrapper.cpp index 25d2f2b5c6..486bb01968 100644 --- a/editor/changeset_wrapper.cpp +++ b/editor/changeset_wrapper.cpp @@ -6,6 +6,7 @@ #include "geometry/mercator.hpp" #include "base/logging.hpp" +#include "base/macros.hpp" #include "std/algorithm.hpp" #include "std/sstream.hpp" @@ -101,6 +102,17 @@ XMLFeature ChangesetWrapper::GetMatchingAreaFeatureFromOSM(vector co MYTHROW(OsmObjectWasDeletedException, ("OSM does not have any matching way for feature")); } +void ChangesetWrapper::Create(XMLFeature node) +{ + if (m_changesetId == kInvalidChangesetId) + m_changesetId = m_api.CreateChangeSet(m_changesetComments); + + // Changeset id should be updated for every OSM server commit. + node.SetAttribute("changeset", strings::to_string(m_changesetId)); + // TODO(AlexZ): Think about storing/logging returned OSM ids. + UNUSED_VALUE(m_api.CreateElement(node)); +} + void ChangesetWrapper::Modify(XMLFeature node) { if (m_changesetId == kInvalidChangesetId) diff --git a/editor/changeset_wrapper.hpp b/editor/changeset_wrapper.hpp index 5a35a174d2..4ab00af09d 100644 --- a/editor/changeset_wrapper.hpp +++ b/editor/changeset_wrapper.hpp @@ -37,6 +37,9 @@ public: editor::XMLFeature GetMatchingNodeFeatureFromOSM(m2::PointD const & center); editor::XMLFeature GetMatchingAreaFeatureFromOSM(vector const & geomerty); + /// Throws exceptions from above list. + void Create(editor::XMLFeature node); + /// Throws exceptions from above list. /// Node should have correct OSM "id" attribute set. void Modify(editor::XMLFeature node);