From 847fcfbb71746ca3fedfc1b9b403dc342279a17f Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 8 Jul 2017 23:19:56 +0200 Subject: [PATCH] Ref T104, return inconsistent airports --- src/blackcore/db/airportdatareader.cpp | 18 +++++++++++++----- src/blackcore/db/icaodatareader.cpp | 6 +++--- src/blackmisc/aviation/airportlist.cpp | 3 ++- src/blackmisc/aviation/airportlist.h | 2 +- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/blackcore/db/airportdatareader.cpp b/src/blackcore/db/airportdatareader.cpp index 8b3ce2c7a..11bbfa3b7 100644 --- a/src/blackcore/db/airportdatareader.cpp +++ b/src/blackcore/db/airportdatareader.cpp @@ -10,8 +10,9 @@ #include "airportdatareader.h" #include "blackcore/db/databaseutils.h" #include "blackcore/application.h" -#include "blackmisc/logmessage.h" #include "blackmisc/network/networkutils.h" +#include "blackmisc/logmessage.h" +#include "blackmisc/verify.h" #include using namespace BlackMisc; @@ -159,16 +160,23 @@ namespace BlackCore } CAirportList airports; + CAirportList inconsistent; if (res.isRestricted()) { - const CAirportList incAirports(CAirportList::fromDatabaseJson(res)); - if (incAirports.isEmpty()) { return; } // currently ignored + const CAirportList incrementalAirports(CAirportList::fromDatabaseJson(res, &inconsistent)); + if (incrementalAirports.isEmpty()) { return; } // currently ignored airports = this->getAirports(); - airports.replaceOrAddObjectsByKey(incAirports); + airports.replaceOrAddObjectsByKey(incrementalAirports); } else { - airports = CAirportList::fromDatabaseJson(res); + airports = CAirportList::fromDatabaseJson(res, &inconsistent); + } + + if (!inconsistent.isEmpty()) + { + BLACK_AUDIT_X(false, Q_FUNC_INFO, "Inconsistent aircraft codes"); + CLogMessage(this).warning("Inconsistent airports: %1") << inconsistent.dbKeysAsStrings(", "); } const int size = airports.size(); diff --git a/src/blackcore/db/icaodatareader.cpp b/src/blackcore/db/icaodatareader.cpp index 7356b65d1..5e0e7aebc 100644 --- a/src/blackcore/db/icaodatareader.cpp +++ b/src/blackcore/db/icaodatareader.cpp @@ -339,10 +339,10 @@ namespace BlackCore if (res.isRestricted()) { // create full list if it was just incremental - const CCountryList incCountries(CCountryList::fromDatabaseJson(res)); - if (incCountries.isEmpty()) { return; } // currently ignored + const CCountryList incrementalCountries(CCountryList::fromDatabaseJson(res)); + if (incrementalCountries.isEmpty()) { return; } // currently ignored countries = this->getCountries(); - countries.replaceOrAddObjectsByKey(incCountries); + countries.replaceOrAddObjectsByKey(incrementalCountries); } else { diff --git a/src/blackmisc/aviation/airportlist.cpp b/src/blackmisc/aviation/airportlist.cpp index 655d97a8a..37e5f29f4 100644 --- a/src/blackmisc/aviation/airportlist.cpp +++ b/src/blackmisc/aviation/airportlist.cpp @@ -79,9 +79,10 @@ namespace BlackMisc return icaos; } - CAirportList CAirportList::fromDatabaseJson(const QJsonArray &array) + CAirportList CAirportList::fromDatabaseJson(const QJsonArray &array, CAirportList *inconsistent) { CAirportList airports; + Q_UNUSED(inconsistent); // not yet implemented, but signature already prepared for (const QJsonValue &value : array) { const CAirport airport(CAirport::fromDatabaseJson(value.toObject())); diff --git a/src/blackmisc/aviation/airportlist.h b/src/blackmisc/aviation/airportlist.h index 7e7de0b8a..ed4bec716 100644 --- a/src/blackmisc/aviation/airportlist.h +++ b/src/blackmisc/aviation/airportlist.h @@ -62,7 +62,7 @@ namespace BlackMisc QStringList allIcaoCodes(bool sorted) const; //! From our DB JSON - static CAirportList fromDatabaseJson(const QJsonArray &array); + static CAirportList fromDatabaseJson(const QJsonArray &array, CAirportList *inconsistent = nullptr); }; } //namespace } // namespace