From d044e4c0d66b69ede5a64cabf46cf473daa1a1ee Mon Sep 17 00:00:00 2001 From: tatiana-yan Date: Thu, 11 Apr 2019 13:09:23 +0300 Subject: [PATCH] [generator] Create GetUgcForFeature method to reuse it for ugc and rating sections build. --- generator/ugc_section_builder.cpp | 13 +------------ generator/ugc_translator.cpp | 20 ++++++++++++++++++-- generator/ugc_translator.hpp | 9 ++++++++- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/generator/ugc_section_builder.cpp b/generator/ugc_section_builder.cpp index af0aad89f9..43cf93e032 100644 --- a/generator/ugc_section_builder.cpp +++ b/generator/ugc_section_builder.cpp @@ -8,7 +8,6 @@ #include "indexer/feature_data.hpp" #include "indexer/feature_processor.hpp" -#include "indexer/ftraits.hpp" #include "base/geo_object_id.hpp" @@ -34,22 +33,12 @@ bool BuildUgcMwmSection(std::string const & srcDbFilename, std::string const & m std::vector content; feature::ForEachFromDat(mwmFile, [&](FeatureType & f, uint32_t featureId) { - auto const optItem = ftraits::UGC::GetValue(feature::TypesHolder(f)); - if (!optItem) - return; - - if (!ftraits::UGC::IsUGCAvailable(optItem->m_mask)) - return; - auto const it = featureToOsmId.find(featureId); CHECK(it != featureToOsmId.cend() && it->second.size() != 0, ("FeatureID", featureId, "is not found in", osmToFeatureFilename)); ugc::UGC result; - if (!translator.TranslateUGC(it->second[0], result)) - return; - - if (result.IsEmpty()) + if (!GetUgcForFeature(it->second[0], feature::TypesHolder(f), translator, result)) return; content.emplace_back(featureId, result); diff --git a/generator/ugc_translator.cpp b/generator/ugc_translator.cpp index 6f2906b2fd..eac3983df7 100644 --- a/generator/ugc_translator.cpp +++ b/generator/ugc_translator.cpp @@ -1,9 +1,9 @@ #include "generator/ugc_translator.hpp" -#include "generator/ugc_db.hpp" - #include "ugc/serdes_json.hpp" +#include "indexer/ftraits.hpp" + #include "coding/string_utf8_multilang.hpp" #include "base/string_utils.hpp" @@ -51,4 +51,20 @@ void UGCTranslator::CreateDb(std::string const & data) { CHECK(m_db.Exec(data), ()); } + +bool GetUgcForFeature(base::GeoObjectId const & osmId, feature::TypesHolder const & th, + UGCTranslator & translator, ugc::UGC & result) +{ + auto const optItem = ftraits::UGC::GetValue(th); + if (!optItem) + return false; + + if (!ftraits::UGC::IsUGCAvailable(optItem->m_mask)) + return false; + + if (!translator.TranslateUGC(osmId, result)) + return false; + + return !result.IsEmpty(); +} } // namespace generator diff --git a/generator/ugc_translator.hpp b/generator/ugc_translator.hpp index 2d60861662..eeb8303736 100644 --- a/generator/ugc_translator.hpp +++ b/generator/ugc_translator.hpp @@ -1,11 +1,15 @@ #pragma once -#include "ugc_db.hpp" +#include "generator/ugc_db.hpp" #include "ugc/types.hpp" +#include "indexer/feature_data.hpp" + #include "base/geo_object_id.hpp" +#include + namespace generator { class UGCTranslator @@ -22,4 +26,7 @@ public: private: UGCDB m_db; }; + +bool GetUgcForFeature(base::GeoObjectId const & osmId, feature::TypesHolder const & th, + UGCTranslator & translator, ugc::UGC & result); } // namespace generator