Ref T335, consolidation of models with "models on disk" yields also a list of removed aircraft

This commit is contained in:
Klaus Basan
2018-09-12 16:21:43 +02:00
parent 68b72d9c5c
commit cf738165d3
2 changed files with 27 additions and 9 deletions

View File

@@ -159,7 +159,7 @@ namespace BlackCore
return c; return c;
} }
CAircraftModelList CDatabaseUtils::consolidateModelsWithSimulatorModelsAllowsGuiRefresh(const CAircraftModelList &models, const CAircraftModelList &simulatorModels, bool processEvents) CAircraftModelList CDatabaseUtils::consolidateModelsWithSimulatorModelsAllowsGuiRefresh(const CAircraftModelList &models, const CAircraftModelList &simulatorModels, QStringList &removedModelStrings, bool processEvents)
{ {
if (models.isEmpty() || simulatorModels.isEmpty()) { return models; } if (models.isEmpty() || simulatorModels.isEmpty()) { return models; }
@@ -167,19 +167,37 @@ namespace BlackCore
timer.start(); timer.start();
const QSet<QString> allOwnModelsModelStrings = simulatorModels.getModelStringSet(); const QSet<QString> allOwnModelsModelStrings = simulatorModels.getModelStringSet();
CAircraftModelList consolidatedModels; CAircraftModelList consolidatedModels;
removedModelStrings.clear();
int c = 0; int c = 0;
for (const CAircraftModel &model : models) for (const CAircraftModel &model : models)
{ {
c++; c++;
if (processEvents && c % 125 == 0) { sApp->processEventsFor(25); } if (processEvents && c % 125 == 0)
{
if (!sApp || sApp->isShuttingDown()) { return models; }
sApp->processEventsFor(25);
}
const QString ms(model.getModelString()); const QString ms(model.getModelString());
if (ms.isEmpty()) { continue; } if (ms.isEmpty()) { continue; }
if (!allOwnModelsModelStrings.contains(ms)) { continue; } if (!allOwnModelsModelStrings.contains(ms))
consolidatedModels.push_back(model); {
removedModelStrings.push_back(ms);
continue;
}
CAircraftModel consolidated = simulatorModels.findFirstByModelStringOrDefault(ms);
if (consolidated.hasModelString())
{
CDatabaseUtils::consolidateModelWithDbData(consolidated, true);
consolidatedModels.push_back(consolidated);
}
else
{
consolidatedModels.push_back(model);
}
} }
CLogMessage(static_cast<CDatabaseUtils *>(nullptr)).info("Consolidated %1 vs. %2 in %3 ms") << models.size() << simulatorModels.size() << timer.elapsed() << "ms"; CLogMessage(static_cast<CDatabaseUtils *>(nullptr)).info("Consolidated %1 vs. %2 in %3 ms") << models.size() << simulatorModels.size() << timer.elapsed() << "ms";
return consolidatedModels; return consolidatedModels;
} }

View File

@@ -35,6 +35,10 @@ namespace BlackCore
//! Log categories //! Log categories
static const BlackMisc::CLogCategoryList &getLogCategories(); static const BlackMisc::CLogCategoryList &getLogCategories();
//! Consolidate models with simulator model data (aka "models on disk")
//! \remark kept here with the other consolidate functions, but actually DB independent
static BlackMisc::Simulation::CAircraftModelList consolidateModelsWithSimulatorModelsAllowsGuiRefresh(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CAircraftModelList &simulatorModels, QStringList &removedModelStrings, bool processEvents);
//! Consolidate own (aircraft) model data with DB data //! Consolidate own (aircraft) model data with DB data
static BlackMisc::Simulation::CAircraftModel consolidateOwnAircraftModelWithDbData(const BlackMisc::Simulation::CAircraftModel &model, bool force, bool *modified = nullptr); static BlackMisc::Simulation::CAircraftModel consolidateOwnAircraftModelWithDbData(const BlackMisc::Simulation::CAircraftModel &model, bool force, bool *modified = nullptr);
@@ -47,10 +51,6 @@ namespace BlackCore
//! Consolidate models with DB data //! Consolidate models with DB data
static int consolidateModelsWithDbData(BlackMisc::Simulation::CAircraftModelList &models, bool force); static int consolidateModelsWithDbData(BlackMisc::Simulation::CAircraftModelList &models, bool force);
//! Consolidate models with simulator model data (aka "models on disk")
//! \remark kept here with the other consolidate functions, but actually DB independent
static BlackMisc::Simulation::CAircraftModelList consolidateModelsWithSimulatorModelsAllowsGuiRefresh(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CAircraftModelList &simulatorModels, bool processEvents);
//! Consolidate models with simulator model data (aka "models on disk") //! Consolidate models with simulator model data (aka "models on disk")
//! \remark kept here with the other consolidate functions, but actually DB independent //! \remark kept here with the other consolidate functions, but actually DB independent
static int consolidateModelsWithDbData(const BlackMisc::Simulation::CAircraftModelList &dbModels, BlackMisc::Simulation::CAircraftModelList &simulatorModels, bool force); static int consolidateModelsWithDbData(const BlackMisc::Simulation::CAircraftModelList &dbModels, BlackMisc::Simulation::CAircraftModelList &simulatorModels, bool force);