mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-20 12:35:43 +08:00
Ref T701, reverse lookup against given model list (which could be the model set)
This commit is contained in:
committed by
Mat Sutcliffe
parent
b3af9bc356
commit
69b3402301
@@ -95,11 +95,11 @@ namespace BlackCore
|
|||||||
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Two invalid airline ICAO codes (primary/secondary) '%1', '%2'").arg(primaryIcao, secondaryIcao), getLogCategories());
|
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Two invalid airline ICAO codes (primary/secondary) '%1', '%2'").arg(primaryIcao, secondaryIcao), getLogCategories());
|
||||||
if (airlineFromCallsign)
|
if (airlineFromCallsign)
|
||||||
{
|
{
|
||||||
const QString airlineSuffix = callsign.getAirlinePrefix();
|
const QString airlinePrefix = callsign.getAirlinePrefix();
|
||||||
if (CAircraftMatcher::isValidAirlineIcaoDesignator(airlineSuffix, useWebServices))
|
if (CAircraftMatcher::isValidAirlineIcaoDesignator(airlinePrefix, useWebServices))
|
||||||
{
|
{
|
||||||
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using airline from callsign '%1', suffix: '%2'").arg(callsign.toQString(), airlineSuffix), getLogCategories());
|
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using airline from callsign '%1', suffix: '%2'").arg(callsign.toQString(), airlinePrefix), getLogCategories());
|
||||||
code = stringToAirlineIcaoObject(airlineSuffix, useWebServices);
|
code = stringToAirlineIcaoObject(airlinePrefix, useWebServices);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -109,6 +109,72 @@ namespace BlackCore
|
|||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CAirlineIcaoCode CAircraftMatcher::failoverValidAirlineIcaoDesignator(const CCallsign &callsign, const QString &primaryIcao, const QString &secondaryIcao, bool airlineFromCallsign, const CAircraftModelList &models, CStatusMessageList *log)
|
||||||
|
{
|
||||||
|
CMatchingUtils::addLogDetailsToList(log, callsign,
|
||||||
|
QStringLiteral("Find airline designator from 1st: '%1' 2nd: '%2' callsign: '%3', use airline callsign: %4, models: %5").
|
||||||
|
arg(primaryIcao, secondaryIcao, callsign.getAirlinePrefix(), boolToYesNo(airlineFromCallsign), models.sizeString()), getLogCategories());
|
||||||
|
|
||||||
|
if (models.isEmpty())
|
||||||
|
{
|
||||||
|
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("No models to find airline from"));
|
||||||
|
return CAirlineIcaoCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
CAirlineIcaoCode code;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (!primaryIcao.isEmpty())
|
||||||
|
{
|
||||||
|
const CAircraftModelList modelsWithAirline = models.findByIcaoDesignators({}, primaryIcao);
|
||||||
|
if (modelsWithAirline.size() > 0)
|
||||||
|
{
|
||||||
|
code = modelsWithAirline.getAirlineWithMaxCount();
|
||||||
|
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using primary airline ICAO '%1' found '%2'").arg(primaryIcao, code.getDesignatorDbKey()), getLogCategories());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!secondaryIcao.isEmpty())
|
||||||
|
{
|
||||||
|
const CAircraftModelList modelsWithAirline = models.findByIcaoDesignators({}, secondaryIcao);
|
||||||
|
if (modelsWithAirline.size() > 0)
|
||||||
|
{
|
||||||
|
code = modelsWithAirline.getAirlineWithMaxCount();
|
||||||
|
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using secondary airline ICAO '%1' found '%2'").arg(primaryIcao, code.getDesignatorDbKey()), getLogCategories());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (airlineFromCallsign)
|
||||||
|
{
|
||||||
|
const QString airlinePrefix = callsign.getAirlinePrefix();
|
||||||
|
const CAircraftModelList modelsWithAirline = models.findByIcaoDesignators({}, airlinePrefix);
|
||||||
|
if (modelsWithAirline.size() > 0)
|
||||||
|
{
|
||||||
|
code = modelsWithAirline.getAirlineWithMaxCount();
|
||||||
|
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using secondary airline ICAO '%1' found '%2'").arg(primaryIcao, code.getDesignatorDbKey()), getLogCategories());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (false);
|
||||||
|
|
||||||
|
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Resolved to airline designator: %1").arg(code.toQString(true)));
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
CAirlineIcaoCode CAircraftMatcher::failoverValidAirlineIcaoDesignatorModelsFirst(const CCallsign &callsign, const QString &primaryIcao, const QString &secondaryIcao, bool airlineFromCallsign, const CAircraftModelList &models, CStatusMessageList *log)
|
||||||
|
{
|
||||||
|
if (!models.isEmpty())
|
||||||
|
{
|
||||||
|
const CAirlineIcaoCode airline = CAircraftMatcher::failoverValidAirlineIcaoDesignator(callsign, primaryIcao, secondaryIcao, airlineFromCallsign, models, log);
|
||||||
|
if (airline.hasValidDbKey()) { return airline; }
|
||||||
|
}
|
||||||
|
|
||||||
|
return CAircraftMatcher::failoverValidAirlineIcaoDesignator(callsign, primaryIcao, secondaryIcao, airlineFromCallsign, true, log);
|
||||||
|
}
|
||||||
|
|
||||||
CAircraftModel CAircraftMatcher::getClosestMatch(const CSimulatedAircraft &remoteAircraft, MatchingLog whatToLog, CStatusMessageList *log, bool useMatchingScript) const
|
CAircraftModel CAircraftMatcher::getClosestMatch(const CSimulatedAircraft &remoteAircraft, MatchingLog whatToLog, CStatusMessageList *log, bool useMatchingScript) const
|
||||||
{
|
{
|
||||||
CAircraftModelList modelSet(m_modelSet); // Models for this matching
|
CAircraftModelList modelSet(m_modelSet); // Models for this matching
|
||||||
@@ -1687,7 +1753,7 @@ namespace BlackCore
|
|||||||
{
|
{
|
||||||
if (!useSwiftDbData) { return CAirlineIcaoCode(designator); }
|
if (!useSwiftDbData) { return CAirlineIcaoCode(designator); }
|
||||||
if (!sApp || sApp->isShuttingDown() || !sApp->hasWebDataServices()) { return CAirlineIcaoCode(designator); }
|
if (!sApp || sApp->isShuttingDown() || !sApp->hasWebDataServices()) { return CAirlineIcaoCode(designator); }
|
||||||
CAirlineIcaoCode code = sApp->getWebDataServices()->getAirlineIcaoCodeForUniqueDesignatorOrDefault(designator, true);
|
const CAirlineIcaoCode code = sApp->getWebDataServices()->getAirlineIcaoCodeForUniqueDesignatorOrDefault(designator, true);
|
||||||
return code.isLoadedFromDb() ? code : CAirlineIcaoCode(designator);
|
return code.isLoadedFromDb() ? code : CAirlineIcaoCode(designator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -89,6 +89,26 @@ namespace BlackCore
|
|||||||
const QString &primaryIcao, const QString &secondaryIcao,
|
const QString &primaryIcao, const QString &secondaryIcao,
|
||||||
bool airlineFromCallsign, bool useWebServices, BlackMisc::CStatusMessageList *log = nullptr);
|
bool airlineFromCallsign, bool useWebServices, BlackMisc::CStatusMessageList *log = nullptr);
|
||||||
|
|
||||||
|
//! Return an valid airline ICAO code from a given model list
|
||||||
|
//! \remarks model list could be the model set
|
||||||
|
//! \threadsafe
|
||||||
|
static BlackMisc::Aviation::CAirlineIcaoCode failoverValidAirlineIcaoDesignator(
|
||||||
|
const BlackMisc::Aviation::CCallsign &callsign,
|
||||||
|
const QString &primaryIcao, const QString &secondaryIcao,
|
||||||
|
bool airlineFromCallsign,
|
||||||
|
const BlackMisc::Simulation::CAircraftModelList &models,
|
||||||
|
BlackMisc::CStatusMessageList *log = nullptr);
|
||||||
|
|
||||||
|
//! Return an valid airline ICAO code from a given model list and use webservices if NOT found
|
||||||
|
//! \remarks model list could be the model set
|
||||||
|
//! \threadsafe
|
||||||
|
static BlackMisc::Aviation::CAirlineIcaoCode failoverValidAirlineIcaoDesignatorModelsFirst(
|
||||||
|
const BlackMisc::Aviation::CCallsign &callsign,
|
||||||
|
const QString &primaryIcao, const QString &secondaryIcao,
|
||||||
|
bool airlineFromCallsign,
|
||||||
|
const BlackMisc::Simulation::CAircraftModelList &models,
|
||||||
|
BlackMisc::CStatusMessageList *log = nullptr);
|
||||||
|
|
||||||
//! Run the network reverse lookup script
|
//! Run the network reverse lookup script
|
||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
//! \ingroup reverselookup
|
//! \ingroup reverselookup
|
||||||
|
|||||||
Reference in New Issue
Block a user