mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-30 20:15:35 +08:00
Ref T246, allow to load DB data per entity from resource files
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user