From 507e059438738626cbe456002d0ffa728218add3 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 4 Sep 2019 22:27:49 +0200 Subject: [PATCH] More detailled validation messages "which models look odd" --- .../simulation/aircraftmodellist.cpp | 31 ++++++++++++++++++- src/blackmisc/simulation/aircraftmodellist.h | 9 ++++-- .../simulation/aircraftmodelutils.cpp | 4 +++ 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/src/blackmisc/simulation/aircraftmodellist.cpp b/src/blackmisc/simulation/aircraftmodellist.cpp index 1e5d38b43..9304138fb 100644 --- a/src/blackmisc/simulation/aircraftmodellist.cpp +++ b/src/blackmisc/simulation/aircraftmodellist.cpp @@ -496,6 +496,13 @@ namespace BlackMisc }); } + CAircraftModelList CAircraftModelList::findWithoutValidDbKey(int maxElements) const + { + CAircraftModelList ml = this->findWithoutValidDbKey(); + ml.truncate(maxElements); + return ml; + } + CAircraftModelList CAircraftModelList::findNonDbModelsForAirline(const QString &airline) const { const CAircraftModelList noDb = this->findWithoutValidDbKey(); @@ -523,7 +530,7 @@ namespace BlackMisc }); } - CAircraftModelList CAircraftModelList::getAllIncludedModels() const + CAircraftModelList CAircraftModelList::findAllIncludedModels() const { return this->findBy([](const CAircraftModel & model) { @@ -531,6 +538,28 @@ namespace BlackMisc }); } + CAircraftModelList CAircraftModelList::findAllIncludedModels(int maxElements) const + { + CAircraftModelList ml = this->findAllIncludedModels(); + ml.truncate(maxElements); + return ml; + } + + CAircraftModelList CAircraftModelList::findAllExcludedModels() const + { + return this->findBy([](const CAircraftModel & model) + { + return model.getModelMode() == CAircraftModel::Exclude; + }); + } + + CAircraftModelList CAircraftModelList::findAllExcludedModels(int maxElements) const + { + CAircraftModelList ml = this->findAllExcludedModels(); + ml.truncate(maxElements); + return ml; + } + CAircraftModelList CAircraftModelList::findDuplicateModelStrings() const { const QMap modelStrings = this->countPerModelString(); diff --git a/src/blackmisc/simulation/aircraftmodellist.h b/src/blackmisc/simulation/aircraftmodellist.h index a52304d42..2f5554177 100644 --- a/src/blackmisc/simulation/aircraftmodellist.h +++ b/src/blackmisc/simulation/aircraftmodellist.h @@ -266,6 +266,7 @@ namespace BlackMisc //! With/without DB key @{ CAircraftModelList findWithValidDbKey() const; CAircraftModelList findWithoutValidDbKey() const; + CAircraftModelList findWithoutValidDbKey(int maxElements) const; //! @} //! Some finders for NON DB models, mostly for matching script results @{ @@ -274,8 +275,12 @@ namespace BlackMisc CAircraftModelList findNonDbModelsForModelString(const QString &modelString) const; //! @} - //! All included models - CAircraftModelList getAllIncludedModels() const; + //! All included/excluded models @{ + CAircraftModelList findAllIncludedModels() const; + CAircraftModelList findAllIncludedModels(int maxElements) const; + CAircraftModelList findAllExcludedModels() const; + CAircraftModelList findAllExcludedModels(int maxElements) const; + //! @} //! Take a designator and find its family QString designatorToFamily(const Aviation::CAircraftIcaoCode &aircraftIcaoCode) const; diff --git a/src/blackmisc/simulation/aircraftmodelutils.cpp b/src/blackmisc/simulation/aircraftmodelutils.cpp index 0c92dfd32..01d698c35 100644 --- a/src/blackmisc/simulation/aircraftmodelutils.cpp +++ b/src/blackmisc/simulation/aircraftmodelutils.cpp @@ -154,12 +154,16 @@ namespace BlackMisc if (noDb > 0) { msgs.push_back(CStatusMessage(CLogCategory::matching(), CStatusMessage::SeverityWarning, QStringLiteral("%1 models without DB data, is this intended?").arg(noDb), true)); + const QString ms = models.findWithoutValidDbKey(5).getModelStringList().join(", "); + msgs.push_back(CStatusMessage(CLogCategory::matching(), CStatusMessage::SeverityWarning, QStringLiteral("Some of the non DB models are: '%1'").arg(ms), true)); } const int noExcluded = models.countByMode(CAircraftModel::Exclude); if (noExcluded > 0) { msgs.push_back(CStatusMessage(CLogCategory::matching(), CStatusMessage::SeverityWarning, QStringLiteral("%1 models marked as excluded, is this intended?").arg(noExcluded), true)); + const QString ms = models.findAllExcludedModels(5).getModelStringList().join(", "); + msgs.push_back(CStatusMessage(CLogCategory::matching(), CStatusMessage::SeverityWarning, QStringLiteral("Some of the excluded models are: '%1'").arg(ms), true)); } // specific checks for FSX/XPlane/FG