From 8a5112e48d37834fd8507f8a80071a202a8ffd5f Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 21 Sep 2018 01:58:51 +0200 Subject: [PATCH] Ref T362, Ref T348 matcher saves removed models (if any) when destructed --- src/blackcore/aircraftmatcher.cpp | 22 +++++++++++++++------- src/blackcore/aircraftmatcher.h | 3 ++- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/blackcore/aircraftmatcher.cpp b/src/blackcore/aircraftmatcher.cpp index 40bdc30d6..cb7cdcfa4 100644 --- a/src/blackcore/aircraftmatcher.cpp +++ b/src/blackcore/aircraftmatcher.cpp @@ -20,6 +20,7 @@ #include "blackmisc/logcategorylist.h" #include "blackmisc/logmessage.h" #include "blackmisc/statusmessagelist.h" +#include "blackmisc/directoryutils.h" #include #include @@ -39,16 +40,23 @@ namespace BlackCore return cats; } - CAircraftMatcher::CAircraftMatcher(const CAircraftMatcherSetup &setup, QObject *parent) : - QObject(parent), - m_setup(setup) + CAircraftMatcher::CAircraftMatcher(const CAircraftMatcherSetup &setup, QObject *parent) : QObject(parent), m_setup(setup) { } CAircraftMatcher::CAircraftMatcher(QObject *parent) : CAircraftMatcher(CAircraftMatcherSetup(), parent) { } CAircraftMatcher::~CAircraftMatcher() - { } + { + if (!m_removedModels.isEmpty()) + { + // log the models + const QString fileName("removed models %1.json"); + const QString ts = QDateTime::currentDateTimeUtc().toString("yyyyMMddHHmmss"); + const QString json = m_removedModels.toJsonString(); + CFileUtils::writeStringToFile(json, CFileUtils::appendFilePathsAndFixUnc(CDirectoryUtils::logDirectory(), fileName.arg(ts))); + } + } bool CAircraftMatcher::setSetup(const CAircraftMatcherSetup &setup) { @@ -671,11 +679,11 @@ namespace BlackCore if (remoteAircraft.hasCallsign() && remoteAircraft.hasModelString()) { const QString modelString = remoteAircraft.getModelString(); - const int r = m_modelSet.removeModelWithString(modelString, Qt::CaseInsensitive); - if (r > 0) + const bool r = m_modelSet.removeModelWithString(modelString, Qt::CaseInsensitive); + if (r) { CLogMessage(this).warning("Removed model '%1' from matching model set") << modelString; - m_removedModels.insert(modelString); + m_removedModels.replaceOrAddModelWithString(remoteAircraft.getModel(), Qt::CaseInsensitive); } } } diff --git a/src/blackcore/aircraftmatcher.h b/src/blackcore/aircraftmatcher.h index 5f7725442..73b804383 100644 --- a/src/blackcore/aircraftmatcher.h +++ b/src/blackcore/aircraftmatcher.h @@ -54,6 +54,7 @@ namespace BlackCore CAircraftMatcher(QObject *parent = nullptr); //! Destructor + //! \remark saves a log of removed models if any virtual ~CAircraftMatcher(); //! Set the setup @@ -262,10 +263,10 @@ namespace BlackCore BlackMisc::Simulation::CAircraftMatcherSetup m_setup; //!< setup BlackMisc::Simulation::CAircraftModel m_defaultModel; //!< model to be used as default model BlackMisc::Simulation::CAircraftModelList m_modelSet; //!< models used for model matching + BlackMisc::Simulation::CAircraftModelList m_removedModels; //!< removed models BlackMisc::Simulation::CSimulatorInfo m_simulator; //!< simulator (optional) BlackMisc::Simulation::CMatchingStatistics m_statistics; //!< matching statistics QString m_modelSetInfo; //!< info string - QSet m_removedModels; //!< models have been removed }; } // namespace