diff --git a/src/blackcore/db/databasereader.cpp b/src/blackcore/db/databasereader.cpp index 0ee3aaa50..15da0467a 100644 --- a/src/blackcore/db/databasereader.cpp +++ b/src/blackcore/db/databasereader.cpp @@ -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); } } diff --git a/src/blackcore/db/databasereader.h b/src/blackcore/db/databasereader.h index 01b5839ad..f90a124bb 100644 --- a/src/blackcore/db/databasereader.h +++ b/src/blackcore/db/databasereader.h @@ -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; diff --git a/src/blackcore/db/databaseutils.h b/src/blackcore/db/databaseutils.h index 502a05c06..fa756f464 100644 --- a/src/blackcore/db/databaseutils.h +++ b/src/blackcore/db/databaseutils.h @@ -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); diff --git a/src/blackcore/db/modeldatareader.h b/src/blackcore/db/modeldatareader.h index 3db766db4..c1e999648 100644 --- a/src/blackcore/db/modeldatareader.h +++ b/src/blackcore/db/modeldatareader.h @@ -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; diff --git a/src/blackcore/webdataservices.cpp b/src/blackcore/webdataservices.cpp index 853b6adb3..0a099b634 100644 --- a/src/blackcore/webdataservices.cpp +++ b/src/blackcore/webdataservices.cpp @@ -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 diff --git a/src/blackcore/webdataservices.h b/src/blackcore/webdataservices.h index d769de789..da93a1ddc 100644 --- a/src/blackcore/webdataservices.h +++ b/src/blackcore/webdataservices.h @@ -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);