Renamed to failoverValidAirlineIcaoDesignator and check airline ICAO designator against swift DB

This commit is contained in:
Klaus Basan
2017-10-04 01:16:55 +02:00
committed by Mathew Sutcliffe
parent f98b612797
commit 510666622c
3 changed files with 27 additions and 9 deletions

View File

@@ -47,10 +47,13 @@ namespace BlackCore
CAircraftMatcher::~CAircraftMatcher()
{ }
CAirlineIcaoCode CAircraftMatcher::failoverValidAirlineIcao(const CCallsign &callsign, const QString &primaryIcao, const QString &secondaryIcao, bool airlineFromCallsign, CStatusMessageList *log)
CAirlineIcaoCode CAircraftMatcher::failoverValidAirlineIcaoDesignator(
const CCallsign &callsign, const QString &primaryIcao, const QString &secondaryIcao,
bool airlineFromCallsign, bool useWebServices, CStatusMessageList *log)
{
if (CAirlineIcaoCode::isValidAirlineDesignator(primaryIcao)) { return CAirlineIcaoCode(primaryIcao); }
if (CAirlineIcaoCode::isValidAirlineDesignator(secondaryIcao))
CMatchingUtils::addLogDetailsToList(log, callsign, QString("Find airline designator from 1st: '%1' 2nd: '%2', callsign airline: %3 web service: %4").arg(primaryIcao, secondaryIcao, boolToYesNo(airlineFromCallsign), boolToYesNo(useWebServices)), getLogCategories());
if (CAircraftMatcher::isValidAirlineIcaoDesignator(primaryIcao, useWebServices)) { return CAirlineIcaoCode(primaryIcao); }
if (CAircraftMatcher::isValidAirlineIcaoDesignator(secondaryIcao, useWebServices))
{
CMatchingUtils::addLogDetailsToList(log, callsign, QString("Using secondary airline ICAO '%1', primary '%2' not valid").arg(secondaryIcao, primaryIcao), getLogCategories());
return CAirlineIcaoCode(secondaryIcao);
@@ -58,7 +61,7 @@ namespace BlackCore
if (airlineFromCallsign)
{
const QString airlineSuffix = callsign.getAirlineSuffix();
if (CAirlineIcaoCode::isValidAirlineDesignator(airlineSuffix))
if (CAircraftMatcher::isValidAirlineIcaoDesignator(airlineSuffix, useWebServices))
{
CMatchingUtils::addLogDetailsToList(log, callsign, QString("Using airline from callsign '%1', suffix: '%2'").arg(callsign.toQString(), airlineSuffix), getLogCategories());
return CAirlineIcaoCode(airlineSuffix);
@@ -1006,4 +1009,12 @@ namespace BlackCore
}
return str;
}
bool CAircraftMatcher::isValidAirlineIcaoDesignator(const QString &designator, bool checkAgainstSwiftDb)
{
if (!CAirlineIcaoCode::isValidAirlineDesignator(designator)) { return false; }
if (!checkAgainstSwiftDb) { return true; }
if (!sApp || sApp->isShuttingDown() || !sApp->hasWebDataServices()) { return true; }
return (sApp->getWebDataServices()->containsAirlineIcaoDesignator(designator));
}
} // namespace

View File

@@ -75,10 +75,10 @@ namespace BlackCore
//! Return the airline ICAO being valid
//! \threadsafe
static BlackMisc::Aviation::CAirlineIcaoCode failoverValidAirlineIcao(
static BlackMisc::Aviation::CAirlineIcaoCode failoverValidAirlineIcaoDesignator(
const BlackMisc::Aviation::CCallsign &callsign,
const QString &primaryIcao, const QString &secondaryIcao,
bool airlineFromCallsign, BlackMisc::CStatusMessageList *log = nullptr);
bool airlineFromCallsign, bool useWebServices, BlackMisc::CStatusMessageList *log = nullptr);
//! Try to find the corresponding data in DB and get best information for given data
//! \threadsafe
@@ -206,8 +206,13 @@ namespace BlackCore
static BlackMisc::Simulation::CAircraftModelList ifPossibleReduceByMilitaryFlag(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft, const BlackMisc::Simulation::CAircraftModelList &inList, bool &reduced, BlackMisc::CStatusMessageList *log);
//! Scores to string for debugging
//! \threadsafe
static QString scoresToString(const BlackMisc::Simulation::ScoredModels &scores, int lastElements = 5);
//! Valid designator, allows to check against swift DB
//! \threadsafe
static bool isValidAirlineIcaoDesignator(const QString &designator, bool checkAgainstSwiftDb);
MatchingMode m_matchingMode = All;
BlackMisc::Simulation::CAircraftModel m_defaultModel; //!< model to be used as default model
BlackMisc::Simulation::CAircraftModelList m_modelSet; //!< models used for model matching

View File

@@ -926,7 +926,8 @@ namespace BlackCore
CAircraftModel::ModelType type, CStatusMessageList *log)
{
const CFlightPlanRemarks fpRemarks = this->tryToGetFlightPlanRemarks(callsign);
CAirlineIcaoCode airlineIcao = CAircraftMatcher::failoverValidAirlineIcao(callsign, airlineIcaoString, fpRemarks.getAirlineIcao(), true, log);
CAirlineIcaoCode airlineIcao = CAircraftMatcher::failoverValidAirlineIcaoDesignator(callsign, airlineIcaoString, fpRemarks.getAirlineIcao(), true, true, log);
CAircraftIcaoCode aircraftIcao(aircraftIcaoString);
if (fpRemarks.hasParsedAirlineRemarks())
{
@@ -934,16 +935,17 @@ namespace BlackCore
if (!airlineName.isEmpty())
{
airlineIcao.setName(airlineName);
this->addReverseLookupMessage(callsign, QString("Setting airline name '%1'").arg(airlineName));
CMatchingUtils::addLogDetailsToList(log, callsign, QString("Setting airline name '%1'").arg(airlineName), getLogCategories());
}
const QString telephony = CAircraftMatcher::reverseLookupTelephonyDesignator(fpRemarks.getRadioTelephony(), callsign, log);
if (!telephony.isEmpty())
{
airlineIcao.setTelephonyDesignator(telephony);
this->addReverseLookupMessage(callsign, QString("Setting telephoy designator '%1'").arg(telephony));
CMatchingUtils::addLogDetailsToList(log, callsign, QString("Setting telephoy designator '%1'").arg(telephony), getLogCategories());
}
}
return CAircraftMatcher::reverseLookupModel(callsign, aircraftIcao, airlineIcao, livery, modelString, type, log);
}