Ref T246, allow to load DB data per entity from resource files

This commit is contained in:
Klaus Basan
2018-07-17 01:26:40 +02:00
parent 8bee7f81f6
commit 35a1a715d8
6 changed files with 48 additions and 11 deletions

View File

@@ -601,18 +601,25 @@ namespace BlackCore
}
CStatusMessageList CDatabaseReader::initFromLocalResourceFiles(bool inBackground)
{
return this->initFromLocalResourceFiles(this->getSupportedEntities(), inBackground);
}
CStatusMessageList CDatabaseReader::initFromLocalResourceFiles(CEntityFlags::Entity entities, bool inBackground)
{
const bool overrideNewerOnly = true;
entities = this->maskBySupportedEntities(entities);
if (inBackground || !CThreadUtils::isCurrentThreadObjectThread(this))
{
const bool s = this->readFromJsonFilesInBackground(CDirectoryUtils::staticDbFilesDirectory(), this->getSupportedEntities(), overrideNewerOnly);
const bool s = this->readFromJsonFilesInBackground(CDirectoryUtils::staticDbFilesDirectory(), entities, overrideNewerOnly);
return s ?
CStatusMessage(this).info("Started reading in background from '%1' of entities: '%2'") << CDirectoryUtils::staticDbFilesDirectory() << CEntityFlags::flagToString(this->getSupportedEntities()) :
CStatusMessage(this).error("Starting reading in background from '%1' of entities: '%2' failed") << CDirectoryUtils::staticDbFilesDirectory() << CEntityFlags::flagToString(this->getSupportedEntities());
CStatusMessage(this).info("Started reading in background from '%1' of entities: '%2'") << CDirectoryUtils::staticDbFilesDirectory() << CEntityFlags::flagToString(entities) :
CStatusMessage(this).error("Starting reading in background from '%1' of entities: '%2' failed") << CDirectoryUtils::staticDbFilesDirectory() << CEntityFlags::flagToString(entities);
}
else
{
return this->readFromJsonFiles(CDirectoryUtils::staticDbFilesDirectory(), this->getSupportedEntities(), overrideNewerOnly);
return this->readFromJsonFiles(CDirectoryUtils::staticDbFilesDirectory(), entities, overrideNewerOnly);
}
}

View File

@@ -266,6 +266,10 @@ namespace BlackCore
//! \remark normally used after installation for a 1st time init
BlackMisc::CStatusMessageList initFromLocalResourceFiles(bool inBackground);
//! Init from local resource file
//! \remark normally used after installation for a 1st time init
BlackMisc::CStatusMessageList initFromLocalResourceFiles(BlackMisc::Network::CEntityFlags::Entity entities, bool inBackground);
//! Data read from local data
virtual BlackMisc::CStatusMessageList readFromJsonFiles(const QString &dir, BlackMisc::Network::CEntityFlags::Entity whatToRead, bool overrideNewer) = 0;

View File

@@ -47,9 +47,6 @@ namespace BlackCore
//! Consolidate models with DB data
static int consolidateModelsWithDbData(BlackMisc::Simulation::CAircraftModelList &models, bool force);
//! Fill in missing data if only the id is provided, but no data
static int fillInMissingAircraftAndLiveryEntities(BlackMisc::Simulation::CAircraftModelList &models);
//! 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);
@@ -70,6 +67,9 @@ namespace BlackCore
//! Consolidate model data with DB distributors
static int consolidateModelsWithDbDistributor(BlackMisc::Simulation::CAircraftModelList &models, bool force);
//! Fill in missing data if only the id is provided, but no data
static int fillInMissingAircraftAndLiveryEntities(BlackMisc::Simulation::CAircraftModelList &models);
//! Create stash models if the DB models miss that simulator
static BlackMisc::Simulation::CAircraftModelList updateSimulatorForFsFamily(const BlackMisc::Simulation::CAircraftModelList &ownModels, int maxToStash = -1, BlackCore::IProgressIndicator *progressIndicator = nullptr, bool processEvents = true);

View File

@@ -132,13 +132,13 @@ namespace BlackCore
//! \threadsafe
bool areAllDataRead() const;
// data read from local data
virtual BlackMisc::CStatusMessageList readFromJsonFiles(const QString &dir, BlackMisc::Network::CEntityFlags::Entity whatToRead, bool overrideNewerOnly) override;
virtual bool readFromJsonFilesInBackground(const QString &dir, BlackMisc::Network::CEntityFlags::Entity whatToRead, bool overrideNewerOnly) override;
//! Write to JSON file
bool writeToJsonFiles(const QString &dir) const;
// Data read from local data
virtual BlackMisc::CStatusMessageList readFromJsonFiles(const QString &dir, BlackMisc::Network::CEntityFlags::Entity whatToRead, bool overrideNewerOnly) override;
virtual bool readFromJsonFilesInBackground(const QString &dir, BlackMisc::Network::CEntityFlags::Entity whatToRead, bool overrideNewerOnly) override;
// cache handling for base class
virtual BlackMisc::Network::CEntityFlags::Entity getSupportedEntities() const override;
virtual QDateTime getCacheTimestamp(BlackMisc::Network::CEntityFlags::Entity entity) const override;

View File

@@ -1599,4 +1599,25 @@ namespace BlackCore
);
return msgs;
}
CStatusMessageList CWebDataServices::initDbCachesFromLocalResourceFiles(CEntityFlags::Entity entities, bool inBackground)
{
CStatusMessageList msgs;
msgs.push_back(
m_icaoDataReader && m_icaoDataReader->supportsAnyOfEntities(entities) ?
m_icaoDataReader->initFromLocalResourceFiles(entities, inBackground) :
CStatusMessage(this).info("No ICAO reader or not supporting entities")
);
msgs.push_back(
m_modelDataReader && m_modelDataReader->supportsAnyOfEntities(entities) ?
m_modelDataReader->initFromLocalResourceFiles(entities, inBackground) :
CStatusMessage(this).info("No model reader or not supporting entities")
);
msgs.push_back(
m_airportDataReader && m_airportDataReader->supportsAnyOfEntities(entities) ?
m_airportDataReader->initFromLocalResourceFiles(entities, inBackground) :
CStatusMessage(this).info("No airport reader or not supporting entities")
);
return msgs;
}
} // ns

View File

@@ -474,12 +474,17 @@ namespace BlackCore
//! Load DB data from disk (mainly for initial data load and testing scenarios)
//! \remark if the DB readers are alred in aother thread reads in background
//! \sa CWebDataServices::initDbCachesFromLocalResourceFiles for reading from local resource file
bool readDbDataFromDisk(const QString &dir, bool inBackground, bool overrideNewerOnly);
//! Init caches from local DB files
//! \remark the shared files coming with the installer
BlackMisc::CStatusMessageList initDbCachesFromLocalResourceFiles(bool inBackground);
//! Init caches from local DB files per given entities
//! \remark the shared files coming with the installer
BlackMisc::CStatusMessageList initDbCachesFromLocalResourceFiles(BlackMisc::Network::CEntityFlags::Entity entities, bool inBackground);
signals:
//! Combined read signal
void dataRead(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CEntityFlags::ReadState state, int number);