[editor] remove error messages from CS comment and enforce OSM 255 char length limit (#919)

Signed-off-by: map-per <map-per@gmx.de>
This commit is contained in:
map-per
2025-10-26 20:16:56 +01:00
committed by map-per
parent bab74782f8
commit 310287e918
4 changed files with 49 additions and 19 deletions

View File

@@ -115,7 +115,7 @@ ChangesetWrapper::~ChangesetWrapper()
{
try
{
m_changesetComments["comment"] = GetDescription();
AddChangesetTag("comment", GetDescription());
m_api.UpdateChangeSet(m_changesetId, m_changesetComments);
m_api.CloseChangeSet(m_changesetId);
}
@@ -240,7 +240,25 @@ void ChangesetWrapper::Modify(editor::XMLFeature node)
void ChangesetWrapper::AddChangesetTag(std::string key, std::string value)
{
m_changesetComments.emplace(std::move(key), std::move(value));
value = strings::EscapeForXML(value);
//OSM has a length limit of 255 characters
if (value.length() > kMaximumOsmChars)
{
LOG(LWARNING, ("value is too long for OSM 255 char limit: ", value));
value = value.substr(0, kMaximumOsmChars - 3).append("...");
}
m_changesetComments.insert_or_assign(std::move(key), std::move(value));
}
void ChangesetWrapper::AddToChangesetKeyList(std::string key, std::string value)
{
auto it = m_changesetComments.find(key);
if (it == m_changesetComments.end())
AddChangesetTag(std::move(key), std::move(value));
else
AddChangesetTag(std::move(key), it->second + "; " + value);
}
void ChangesetWrapper::Delete(editor::XMLFeature node)
@@ -338,17 +356,6 @@ std::string ChangesetWrapper::GetDescription() const
result.append("; ");
result.append("Deleted ").append(TypeCountToString(m_deleted_types));
}
if (!m_error.empty())
{
if (!result.empty())
result.append("; ");
result.append(m_error);
}
return result;
}
void ChangesetWrapper::SetErrorDescription(std::string const & error)
{
m_error = error;
}
} // namespace osm