From 43c69d2ed023cc40eae0394193476bda2b98290e Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 8 Apr 2016 14:09:53 +0200 Subject: [PATCH] refs #614, move utility functions into own class so I can resuse them better --- .../simulation/aircraftmodelutils.cpp | 50 +++++++++++++++++++ src/blackmisc/simulation/aircraftmodelutils.h | 38 ++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 src/blackmisc/simulation/aircraftmodelutils.cpp create mode 100644 src/blackmisc/simulation/aircraftmodelutils.h diff --git a/src/blackmisc/simulation/aircraftmodelutils.cpp b/src/blackmisc/simulation/aircraftmodelutils.cpp new file mode 100644 index 000000000..e4c80e9c5 --- /dev/null +++ b/src/blackmisc/simulation/aircraftmodelutils.cpp @@ -0,0 +1,50 @@ +/* Copyright (C) 2016 + * swift project Community / Contributors + * + * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +#include "aircraftmodelutils.h" + + +namespace BlackMisc +{ + namespace Simulation + { + bool CAircraftModelUtilities::mergeWithDbData(CAircraftModelList &modelToBeModified, const CAircraftModelList &dbModels, bool force) + { + if (dbModels.isEmpty() || modelToBeModified.isEmpty()) { return false; } + for (CAircraftModel &simModel : modelToBeModified) + { + if (!force && simModel.hasValidDbKey()) { continue; } // already done + CAircraftModel dbModel(dbModels.findFirstByModelStringOrDefault(simModel.getModelString())); + if (!dbModel.hasValidDbKey()) + { + continue; // not found + } + dbModel.updateMissingParts(simModel, false); + simModel = dbModel; + } + return true; + } + + bool CAircraftModelUtilities::mergeWithVPilotData(CAircraftModelList &modelToBeModified, const CAircraftModelList &vPilotModels, bool force) + { + if (vPilotModels.isEmpty() || modelToBeModified.isEmpty()) { return false; } + for (CAircraftModel &simModel : modelToBeModified) + { + if (!force && simModel.hasValidAircraftAndAirlineDesignator()) { continue; } // already done + CAircraftModel vPilotModel(vPilotModels.findFirstByModelStringOrDefault(simModel.getModelString())); + if (!vPilotModel.hasValidDbKey()) + { + continue; // not found + } + simModel.updateMissingParts(vPilotModel, false); + } + return true; + } + } // ns +} // ns diff --git a/src/blackmisc/simulation/aircraftmodelutils.h b/src/blackmisc/simulation/aircraftmodelutils.h new file mode 100644 index 000000000..684a77422 --- /dev/null +++ b/src/blackmisc/simulation/aircraftmodelutils.h @@ -0,0 +1,38 @@ +/* Copyright (C) 2016 + * swift project Community / Contributors + * + * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +//! \file + +#ifndef BLACKMISC_SIMULATION_AIRCRAFTMODELUTILS_H +#define BLACKMISC_SIMULATION_AIRCRAFTMODELUTILS_H + +#include "blackmisc/blackmiscexport.h" +#include "blackmisc/simulation/aircraftmodellist.h" + +namespace BlackMisc +{ + namespace Simulation + { + //! Utilities for aircraft models + class BLACKMISC_EXPORT CAircraftModelUtilities + { + public: + //! No constructor + CAircraftModelUtilities() = delete; + + //! Merge with DB data if possible + static bool mergeWithDbData(BlackMisc::Simulation::CAircraftModelList &modelToBeModified, const BlackMisc::Simulation::CAircraftModelList &dbModels, bool force = false); + + //! Merge with vPilot data if possible + static bool mergeWithVPilotData(BlackMisc::Simulation::CAircraftModelList &modelToBeModified, const BlackMisc::Simulation::CAircraftModelList &vPilotModels, bool force = false); + }; + } //namespace +} // namespace + +#endif //guard