mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-10 05:55:33 +08:00
Ref T117, utility functions for reader
* isDbModelEqualForPublishing * getModelForDbKey(int
This commit is contained in:
committed by
Mathew Sutcliffe
parent
fe3368e1f4
commit
5a67276fbb
@@ -97,6 +97,13 @@ namespace BlackCore
|
|||||||
return models.findFirstByModelStringOrDefault(modelString);
|
return models.findFirstByModelStringOrDefault(modelString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CAircraftModel CModelDataReader::getModelForDbKey(int dbKey) const
|
||||||
|
{
|
||||||
|
if (dbKey < 0) { return CAircraftModel(); }
|
||||||
|
const CAircraftModelList models(getModels());
|
||||||
|
return models.findByKey(dbKey);
|
||||||
|
}
|
||||||
|
|
||||||
CAircraftModelList CModelDataReader::getModelsForAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode)
|
CAircraftModelList CModelDataReader::getModelsForAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode)
|
||||||
{
|
{
|
||||||
if (aircraftDesignator.isEmpty()) { return CAircraftModelList(); }
|
if (aircraftDesignator.isEmpty()) { return CAircraftModelList(); }
|
||||||
|
|||||||
@@ -79,6 +79,10 @@ namespace BlackCore
|
|||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
BlackMisc::Simulation::CAircraftModel getModelForModelString(const QString &modelString) const;
|
BlackMisc::Simulation::CAircraftModel getModelForModelString(const QString &modelString) const;
|
||||||
|
|
||||||
|
//! Get model for DB key
|
||||||
|
//! \threadsafe
|
||||||
|
BlackMisc::Simulation::CAircraftModel getModelForDbKey(int dbKey) const;
|
||||||
|
|
||||||
//! Get model for designator/combined code
|
//! Get model for designator/combined code
|
||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
BlackMisc::Simulation::CAircraftModelList getModelsForAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode);
|
BlackMisc::Simulation::CAircraftModelList getModelsForAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode);
|
||||||
@@ -149,7 +153,8 @@ namespace BlackCore
|
|||||||
|
|
||||||
//! Read / re-read data file
|
//! Read / re-read data file
|
||||||
void ps_read(BlackMisc::Network::CEntityFlags::Entity entities = BlackMisc::Network::CEntityFlags::DistributorLiveryModel,
|
void ps_read(BlackMisc::Network::CEntityFlags::Entity entities = BlackMisc::Network::CEntityFlags::DistributorLiveryModel,
|
||||||
BlackMisc::Db::CDbFlags::DataRetrievalModeFlag mode = BlackMisc::Db::CDbFlags::DbReading, const QDateTime &newerThan = QDateTime());
|
BlackMisc::Db::CDbFlags::DataRetrievalModeFlag mode = BlackMisc::Db::CDbFlags::DbReading,
|
||||||
|
const QDateTime &newerThan = QDateTime());
|
||||||
|
|
||||||
void ps_liveryCacheChanged();
|
void ps_liveryCacheChanged();
|
||||||
void ps_modelCacheChanged();
|
void ps_modelCacheChanged();
|
||||||
|
|||||||
@@ -148,9 +148,9 @@ namespace BlackCore
|
|||||||
if (m_vatsimDataFileReader) { m_vatsimDataFileReader->updateWithVatsimDataFileData(aircraftToBeUdpated); }
|
if (m_vatsimDataFileReader) { m_vatsimDataFileReader->updateWithVatsimDataFileData(aircraftToBeUdpated); }
|
||||||
}
|
}
|
||||||
|
|
||||||
CStatusMessageList CWebDataServices::asyncPublishModels(const CAircraftModelList &models) const
|
CStatusMessageList CWebDataServices::asyncPublishModels(const CAircraftModelList &modelsToBePublished) const
|
||||||
{
|
{
|
||||||
if (m_databaseWriter) { return m_databaseWriter->asyncPublishModels(models);}
|
if (m_databaseWriter) { return m_databaseWriter->asyncPublishModels(modelsToBePublished);}
|
||||||
return CStatusMessageList();
|
return CStatusMessageList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -541,6 +541,12 @@ namespace BlackCore
|
|||||||
return CAircraftModel();
|
return CAircraftModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CAircraftModel CWebDataServices::getModelForDbKey(int dbKey) const
|
||||||
|
{
|
||||||
|
if (m_modelDataReader) { return m_modelDataReader->getModelForDbKey(dbKey); }
|
||||||
|
return CAircraftModel();
|
||||||
|
}
|
||||||
|
|
||||||
CAircraftIcaoCodeList CWebDataServices::getAircraftIcaoCodes() const
|
CAircraftIcaoCodeList CWebDataServices::getAircraftIcaoCodes() const
|
||||||
{
|
{
|
||||||
if (m_icaoDataReader) { return m_icaoDataReader->getAircraftIcaoCodes(); }
|
if (m_icaoDataReader) { return m_icaoDataReader->getAircraftIcaoCodes(); }
|
||||||
@@ -702,9 +708,9 @@ namespace BlackCore
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CStatusMessageList CWebDataServices::validateForPublishing(const CAircraftModelList &models, CAircraftModelList &validModels, CAircraftModelList &invalidModels) const
|
CStatusMessageList CWebDataServices::validateForPublishing(const CAircraftModelList &modelsToBePublished, bool ignoreEqual, CAircraftModelList &validModels, CAircraftModelList &invalidModels) const
|
||||||
{
|
{
|
||||||
CStatusMessageList msgs(models.validateForPublishing(validModels, invalidModels));
|
CStatusMessageList msgs(modelsToBePublished.validateForPublishing(validModels, invalidModels)); // technical validation
|
||||||
|
|
||||||
// check against existing distributors
|
// check against existing distributors
|
||||||
const CDistributorList distributors(this->getDistributors());
|
const CDistributorList distributors(this->getDistributors());
|
||||||
@@ -712,13 +718,49 @@ namespace BlackCore
|
|||||||
{
|
{
|
||||||
// only further check the valid ones
|
// only further check the valid ones
|
||||||
CAircraftModelList newValidModels;
|
CAircraftModelList newValidModels;
|
||||||
CStatusMessageList msgsDistributos(validModels.validateDistributors(distributors, newValidModels, invalidModels));
|
const CStatusMessageList msgsDistributors(validModels.validateDistributors(distributors, newValidModels, invalidModels));
|
||||||
|
validModels = newValidModels;
|
||||||
|
msgs.push_back(msgsDistributors);
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if model is changed
|
||||||
|
// in case of not ignoreEqual we just check create the messages
|
||||||
|
{
|
||||||
|
CAircraftModelList newValidModels;
|
||||||
|
for (const CAircraftModel &publishModel : validModels)
|
||||||
|
{
|
||||||
|
CStatusMessageList equalMessages;
|
||||||
|
const bool changed = !this->isDbModelEqualForPublishing(publishModel, &equalMessages);
|
||||||
|
if (changed)
|
||||||
|
{
|
||||||
|
// all good
|
||||||
|
newValidModels.push_back(publishModel);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (ignoreEqual) { equalMessages.warningToError(); }
|
||||||
|
msgs.push_back(CStatusMessage(this, ignoreEqual ? CStatusMessage::SeverityError : CStatusMessage::SeverityWarning, "Model: '%1', there is no change") << publishModel.getModelString());
|
||||||
|
if (ignoreEqual)
|
||||||
|
{
|
||||||
|
invalidModels.push_back(publishModel);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newValidModels.push_back(publishModel);
|
||||||
|
}
|
||||||
|
}
|
||||||
validModels = newValidModels;
|
validModels = newValidModels;
|
||||||
msgs.push_back(msgsDistributos);
|
|
||||||
}
|
}
|
||||||
return msgs;
|
return msgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CWebDataServices::isDbModelEqualForPublishing(const CAircraftModel &modelToBeChecked, CStatusMessageList *details) const
|
||||||
|
{
|
||||||
|
const CAircraftModel compareDbModel = modelToBeChecked.isLoadedFromDb() ?
|
||||||
|
this->getModelForDbKey(modelToBeChecked.getDbKey()) :
|
||||||
|
this->getModelForModelString(modelToBeChecked.getModelString());
|
||||||
|
return modelToBeChecked.isEqualForPublishing(compareDbModel, details);
|
||||||
|
}
|
||||||
|
|
||||||
CAirlineIcaoCodeList CWebDataServices::getAirlineIcaoCodesForDesignator(const QString &designator) const
|
CAirlineIcaoCodeList CWebDataServices::getAirlineIcaoCodesForDesignator(const QString &designator) const
|
||||||
{
|
{
|
||||||
if (m_icaoDataReader) { return m_icaoDataReader->getAirlineIcaoCodesForDesignator(designator); }
|
if (m_icaoDataReader) { return m_icaoDataReader->getAirlineIcaoCodesForDesignator(designator); }
|
||||||
|
|||||||
@@ -229,9 +229,13 @@ namespace BlackCore
|
|||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
BlackMisc::Simulation::CAircraftModelList getModelsForAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode) const;
|
BlackMisc::Simulation::CAircraftModelList getModelsForAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode) const;
|
||||||
|
|
||||||
|
//! Model for model string if any
|
||||||
|
//! \threadsafe
|
||||||
|
BlackMisc::Simulation::CAircraftModel getModelForModelString(const QString &modelString) const;
|
||||||
|
|
||||||
//! Model for key if any
|
//! Model for key if any
|
||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
BlackMisc::Simulation::CAircraftModel getModelForModelString(const QString &modelKey) const;
|
BlackMisc::Simulation::CAircraftModel getModelForDbKey(int dbKey) const;
|
||||||
|
|
||||||
//! Aircraft ICAO codes
|
//! Aircraft ICAO codes
|
||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
@@ -335,10 +339,17 @@ namespace BlackCore
|
|||||||
|
|
||||||
//! Validate for publishing
|
//! Validate for publishing
|
||||||
//! \remark More detailed check than BlackMisc::Simulation::CAircraftModelList::validateForPublishing
|
//! \remark More detailed check than BlackMisc::Simulation::CAircraftModelList::validateForPublishing
|
||||||
BlackMisc::CStatusMessageList validateForPublishing(const BlackMisc::Simulation::CAircraftModelList &models, BlackMisc::Simulation::CAircraftModelList &validModels, BlackMisc::Simulation::CAircraftModelList &invalidModels) const;
|
BlackMisc::CStatusMessageList validateForPublishing(
|
||||||
|
const BlackMisc::Simulation::CAircraftModelList &modelsToBePublished,
|
||||||
|
bool ignoreEqual,
|
||||||
|
BlackMisc::Simulation::CAircraftModelList &validModels,
|
||||||
|
BlackMisc::Simulation::CAircraftModelList &invalidModels) const;
|
||||||
|
|
||||||
|
//! \copydoc BlackMisc::Simulation::CAircraftModel::isEqualForPublishing
|
||||||
|
bool isDbModelEqualForPublishing(const BlackMisc::Simulation::CAircraftModel &modelToBeChecked, BlackMisc::CStatusMessageList *details = nullptr) const;
|
||||||
|
|
||||||
//! Publish models to database
|
//! Publish models to database
|
||||||
BlackMisc::CStatusMessageList asyncPublishModels(const BlackMisc::Simulation::CAircraftModelList &models) const;
|
BlackMisc::CStatusMessageList asyncPublishModels(const BlackMisc::Simulation::CAircraftModelList &modelsToBePublished) const;
|
||||||
|
|
||||||
//! Trigger read of DB info objects
|
//! Trigger read of DB info objects
|
||||||
void triggerReadOfDbInfoObjects();
|
void triggerReadOfDbInfoObjects();
|
||||||
|
|||||||
Reference in New Issue
Block a user