mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-20 12:35:43 +08:00
Ref T701, reduce by airline name and/or telephony designator if possible
This commit is contained in:
@@ -72,23 +72,25 @@ namespace BlackCore
|
|||||||
|
|
||||||
CAirlineIcaoCode CAircraftMatcher::failoverValidAirlineIcaoDesignator(
|
CAirlineIcaoCode CAircraftMatcher::failoverValidAirlineIcaoDesignator(
|
||||||
const CCallsign &callsign, const QString &primaryIcao, const QString &secondaryIcao,
|
const CCallsign &callsign, const QString &primaryIcao, const QString &secondaryIcao,
|
||||||
bool airlineFromCallsign, bool useWebServices, CStatusMessageList *log)
|
bool airlineFromCallsign,
|
||||||
|
const QString &airlineName, const QString &airlineTelephony,
|
||||||
|
bool useWebServices, CStatusMessageList *log)
|
||||||
{
|
{
|
||||||
CMatchingUtils::addLogDetailsToList(log, callsign,
|
CMatchingUtils::addLogDetailsToList(log, callsign,
|
||||||
QStringLiteral("Find airline designator from 1st: '%1' 2nd: '%2' callsign: '%3', use airline callsign: %4, use web service: %5").
|
QStringLiteral("Find airline designator from 1st: '%1' 2nd: '%2' callsign: '%3', use airline callsign: %4, name: '%5' telephony: '%6' use web service: %7").
|
||||||
arg(primaryIcao, secondaryIcao, callsign.getAirlinePrefix(), boolToYesNo(airlineFromCallsign), boolToYesNo(useWebServices)), getLogCategories());
|
arg(primaryIcao, secondaryIcao, callsign.toQString(), boolToYesNo(airlineFromCallsign), airlineName, airlineTelephony, boolToYesNo(useWebServices)), getLogCategories());
|
||||||
CAirlineIcaoCode code;
|
CAirlineIcaoCode code;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (CAircraftMatcher::isValidAirlineIcaoDesignator(primaryIcao, useWebServices))
|
if (CAircraftMatcher::isValidAirlineIcaoDesignator(primaryIcao, useWebServices))
|
||||||
{
|
{
|
||||||
code = stringToAirlineIcaoObject(primaryIcao, useWebServices);
|
code = stringToAirlineIcaoObject(callsign, primaryIcao, airlineName, airlineTelephony, useWebServices, log);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (CAircraftMatcher::isValidAirlineIcaoDesignator(secondaryIcao, useWebServices))
|
if (CAircraftMatcher::isValidAirlineIcaoDesignator(secondaryIcao, useWebServices))
|
||||||
{
|
{
|
||||||
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using secondary airline ICAO '%1', primary '%2' not valid").arg(secondaryIcao, primaryIcao), getLogCategories());
|
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using secondary airline ICAO '%1', primary '%2' not valid").arg(secondaryIcao, primaryIcao), getLogCategories());
|
||||||
code = stringToAirlineIcaoObject(secondaryIcao, useWebServices);
|
code = stringToAirlineIcaoObject(callsign, secondaryIcao, airlineName, airlineTelephony, useWebServices, log);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,7 +101,7 @@ namespace BlackCore
|
|||||||
if (CAircraftMatcher::isValidAirlineIcaoDesignator(airlinePrefix, useWebServices))
|
if (CAircraftMatcher::isValidAirlineIcaoDesignator(airlinePrefix, useWebServices))
|
||||||
{
|
{
|
||||||
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using airline from callsign '%1', suffix: '%2'").arg(callsign.toQString(), airlinePrefix), getLogCategories());
|
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using airline from callsign '%1', suffix: '%2'").arg(callsign.toQString(), airlinePrefix), getLogCategories());
|
||||||
code = stringToAirlineIcaoObject(airlinePrefix, useWebServices);
|
code = stringToAirlineIcaoObject(callsign, airlinePrefix, airlineName, airlineTelephony, useWebServices, log);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -112,8 +114,8 @@ namespace BlackCore
|
|||||||
CAirlineIcaoCode CAircraftMatcher::failoverValidAirlineIcaoDesignator(const CCallsign &callsign, const QString &primaryIcao, const QString &secondaryIcao, bool airlineFromCallsign, const QString &airlineName, const QString &airlineTelephony, const CAircraftModelList &models, CStatusMessageList *log)
|
CAirlineIcaoCode CAircraftMatcher::failoverValidAirlineIcaoDesignator(const CCallsign &callsign, const QString &primaryIcao, const QString &secondaryIcao, bool airlineFromCallsign, const QString &airlineName, const QString &airlineTelephony, const CAircraftModelList &models, CStatusMessageList *log)
|
||||||
{
|
{
|
||||||
CMatchingUtils::addLogDetailsToList(log, callsign,
|
CMatchingUtils::addLogDetailsToList(log, callsign,
|
||||||
QStringLiteral("Find airline designator from 1st: '%1' 2nd: '%2' callsign: '%3', use airline callsign: %4, models: %5").
|
QStringLiteral("Find airline designator from 1st: '%1' 2nd: '%2' callsign: '%3', use airline callsign: %4, airline name: '%5' telephony: '%6', models: %7").
|
||||||
arg(primaryIcao, secondaryIcao, callsign.getAirlinePrefix(), boolToYesNo(airlineFromCallsign), models.sizeString()), getLogCategories());
|
arg(primaryIcao, secondaryIcao, callsign.toQString(), boolToYesNo(airlineFromCallsign), airlineName, airlineTelephony, models.sizeString()), getLogCategories());
|
||||||
|
|
||||||
if (models.isEmpty())
|
if (models.isEmpty())
|
||||||
{
|
{
|
||||||
@@ -142,7 +144,7 @@ namespace BlackCore
|
|||||||
{
|
{
|
||||||
if (modelsWithAirline.size() > 1)
|
if (modelsWithAirline.size() > 1)
|
||||||
{
|
{
|
||||||
modelsWithAirline = CAircraftMatcher::ifPossibleReduceByAirlineNameTelephonyDesignator(callsign, airlineName, airlineTelephony, modelsWithAirline, info.arg(modelsWithAirline.size()).arg(primaryIcao), reduced, log);
|
modelsWithAirline = CAircraftMatcher::ifPossibleReduceModelsByAirlineNameTelephonyDesignator(callsign, airlineName, airlineTelephony, modelsWithAirline, info.arg(modelsWithAirline.size()).arg(primaryIcao), reduced, log);
|
||||||
}
|
}
|
||||||
code = modelsWithAirline.getAirlineWithMaxCount();
|
code = modelsWithAirline.getAirlineWithMaxCount();
|
||||||
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using primary airline ICAO '%1' found '%2'").arg(primaryIcao, code.getDesignatorDbKey()), getLogCategories());
|
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using primary airline ICAO '%1' found '%2'").arg(primaryIcao, code.getDesignatorDbKey()), getLogCategories());
|
||||||
@@ -165,7 +167,7 @@ namespace BlackCore
|
|||||||
{
|
{
|
||||||
if (modelsWithAirline.size() > 1)
|
if (modelsWithAirline.size() > 1)
|
||||||
{
|
{
|
||||||
modelsWithAirline = CAircraftMatcher::ifPossibleReduceByAirlineNameTelephonyDesignator(callsign, airlineName, airlineTelephony, modelsWithAirline, info.arg(modelsWithAirline.size()).arg(secondaryIcao), reduced, log);
|
modelsWithAirline = CAircraftMatcher::ifPossibleReduceModelsByAirlineNameTelephonyDesignator(callsign, airlineName, airlineTelephony, modelsWithAirline, info.arg(modelsWithAirline.size()).arg(secondaryIcao), reduced, log);
|
||||||
}
|
}
|
||||||
code = modelsWithAirline.getAirlineWithMaxCount();
|
code = modelsWithAirline.getAirlineWithMaxCount();
|
||||||
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using secondary airline ICAO '%1' found '%2'").arg(primaryIcao, code.getDesignatorDbKey()), getLogCategories());
|
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using secondary airline ICAO '%1' found '%2'").arg(primaryIcao, code.getDesignatorDbKey()), getLogCategories());
|
||||||
@@ -195,7 +197,7 @@ namespace BlackCore
|
|||||||
{
|
{
|
||||||
if (modelsWithAirline.size() > 1)
|
if (modelsWithAirline.size() > 1)
|
||||||
{
|
{
|
||||||
modelsWithAirline = CAircraftMatcher::ifPossibleReduceByAirlineNameTelephonyDesignator(callsign, airlineName, airlineTelephony, modelsWithAirline, info.arg(modelsWithAirline.size()).arg(airlinePrefix), reduced, log);
|
modelsWithAirline = CAircraftMatcher::ifPossibleReduceModelsByAirlineNameTelephonyDesignator(callsign, airlineName, airlineTelephony, modelsWithAirline, info.arg(modelsWithAirline.size()).arg(airlinePrefix), reduced, log);
|
||||||
}
|
}
|
||||||
code = modelsWithAirline.getAirlineWithMaxCount();
|
code = modelsWithAirline.getAirlineWithMaxCount();
|
||||||
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using secondary airline ICAO '%1' found '%2'").arg(primaryIcao, code.getDesignatorDbKey()), getLogCategories());
|
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Using secondary airline ICAO '%1' found '%2'").arg(primaryIcao, code.getDesignatorDbKey()), getLogCategories());
|
||||||
@@ -217,7 +219,7 @@ namespace BlackCore
|
|||||||
if (airline.hasValidDbKey()) { return airline; }
|
if (airline.hasValidDbKey()) { return airline; }
|
||||||
}
|
}
|
||||||
|
|
||||||
return CAircraftMatcher::failoverValidAirlineIcaoDesignator(callsign, primaryIcao, secondaryIcao, airlineFromCallsign, true, log);
|
return CAircraftMatcher::failoverValidAirlineIcaoDesignator(callsign, primaryIcao, secondaryIcao, airlineFromCallsign, airlineName, airlineTelephony, 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
|
||||||
@@ -638,12 +640,19 @@ namespace BlackCore
|
|||||||
{
|
{
|
||||||
if (modelToLookup.hasModelString())
|
if (modelToLookup.hasModelString())
|
||||||
{
|
{
|
||||||
// if we find the model here we have a fully defined DB model
|
if (!setup.isReverseLookupModelString())
|
||||||
const CAircraftModel modelFromDb = CAircraftMatcher::reverseLookupModelString(modelToLookup.getModelString(), callsign, setup.isReverseLookupModelString(), log);
|
|
||||||
if (modelFromDb.hasValidDbKey())
|
|
||||||
{
|
{
|
||||||
model = modelFromDb;
|
if (log) { CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Model string looup disabled")); }
|
||||||
break; // done here
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// if we find the model here we have a fully defined DB model
|
||||||
|
const CAircraftModel modelFromDb = CAircraftMatcher::reverseLookupModelString(modelToLookup.getModelString(), callsign, setup.isReverseLookupModelString(), log);
|
||||||
|
if (modelFromDb.hasValidDbKey())
|
||||||
|
{
|
||||||
|
model = modelFromDb;
|
||||||
|
break; // done here
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -804,7 +813,7 @@ namespace BlackCore
|
|||||||
if (!sApp || sApp->isShuttingDown() || !sApp->hasWebDataServices()) { return CAircraftModel(); }
|
if (!sApp || sApp->isShuttingDown() || !sApp->hasWebDataServices()) { return CAircraftModel(); }
|
||||||
if (!doLookupString)
|
if (!doLookupString)
|
||||||
{
|
{
|
||||||
if (log) { CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Ignore model string in reverse lookup, ignoring '%1'").arg(modelString)); }
|
if (log) { CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Ignore model string in reverse lookup (disabled), ignoring '%1'").arg(modelString)); }
|
||||||
return CAircraftModel();
|
return CAircraftModel();
|
||||||
}
|
}
|
||||||
CAircraftModel model = sApp->getWebDataServices()->getModelForModelString(modelString);
|
CAircraftModel model = sApp->getWebDataServices()->getModelForModelString(modelString);
|
||||||
@@ -1694,11 +1703,7 @@ namespace BlackCore
|
|||||||
QStringLiteral("Added %1 model(s) by using airline group '%2', all members: '%3'").arg(groupModels.sizeInt()).arg(remoteAircraft.getAirlineIcaoCode().getGroupDesignator(), joinStringSet(groupModels.getAirlineVDesignators(), ", ")),
|
QStringLiteral("Added %1 model(s) by using airline group '%2', all members: '%3'").arg(groupModels.sizeInt()).arg(remoteAircraft.getAirlineIcaoCode().getGroupDesignator(), joinStringSet(groupModels.getAirlineVDesignators(), ", ")),
|
||||||
getLogCategories());
|
getLogCategories());
|
||||||
}
|
}
|
||||||
}
|
} // group membership
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (outList.isEmpty())
|
if (outList.isEmpty())
|
||||||
@@ -1712,7 +1717,7 @@ namespace BlackCore
|
|||||||
return outList;
|
return outList;
|
||||||
}
|
}
|
||||||
|
|
||||||
CAircraftModelList CAircraftMatcher::ifPossibleReduceByAirlineNameTelephonyDesignator(const CCallsign &cs, const QString &airlineName, const QString &telephony, const CAircraftModelList &inList, const QString &info, bool &reduced, CStatusMessageList *log)
|
CAircraftModelList CAircraftMatcher::ifPossibleReduceModelsByAirlineNameTelephonyDesignator(const CCallsign &cs, const QString &airlineName, const QString &telephony, const CAircraftModelList &inList, const QString &info, bool &reduced, CStatusMessageList *log)
|
||||||
{
|
{
|
||||||
reduced = false;
|
reduced = false;
|
||||||
if (inList.isEmpty())
|
if (inList.isEmpty())
|
||||||
@@ -1727,7 +1732,85 @@ namespace BlackCore
|
|||||||
return inList;
|
return inList;
|
||||||
}
|
}
|
||||||
|
|
||||||
return inList;
|
CAircraftModelList step1Data = inList.findByAirlineNamesOrTelephonyDesignator(airlineName);
|
||||||
|
if (step1Data.size() < 1 || step1Data.size() == inList.size())
|
||||||
|
{
|
||||||
|
if (log) { CMatchingUtils::addLogDetailsToList(log, cs, info % QStringLiteral(" cannot reduce by '%1'").arg(airlineName), getLogCategories()); }
|
||||||
|
step1Data = inList;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
reduced = true;
|
||||||
|
if (log) { CMatchingUtils::addLogDetailsToList(log, cs, info % QStringLiteral(" reduced by '%1'").arg(airlineName), getLogCategories()); }
|
||||||
|
}
|
||||||
|
if (step1Data.size() == 1) { return step1Data; }
|
||||||
|
|
||||||
|
CAircraftModelList step2Data = inList.findByAirlineNamesOrTelephonyDesignator(telephony);
|
||||||
|
if (step2Data.size() < 1 || step2Data.size() == inList.size())
|
||||||
|
{
|
||||||
|
if (log) { CMatchingUtils::addLogDetailsToList(log, cs, info % QStringLiteral(" cannot reduce by '%1'").arg(telephony), getLogCategories()); }
|
||||||
|
step2Data = step1Data;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
reduced = true;
|
||||||
|
if (log) { CMatchingUtils::addLogDetailsToList(log, cs, info % QStringLiteral(" reduced by '%1'").arg(telephony), getLogCategories()); }
|
||||||
|
}
|
||||||
|
return step2Data;
|
||||||
|
|
||||||
|
/** alternative implementation using different finder
|
||||||
|
const CAircraftModelList reducedModels = inList.findByAirlineNameAndTelephonyDesignator(airlineName, telephony);
|
||||||
|
if (reducedModels.size() < 1 || reducedModels.size() == inList.size())
|
||||||
|
{
|
||||||
|
if (log) { CMatchingUtils::addLogDetailsToList(log, cs, info % QStringLiteral(" cannot reduce by '%1'/'%2'").arg(airlineName, telephony), getLogCategories()); }
|
||||||
|
return inList;
|
||||||
|
}
|
||||||
|
|
||||||
|
reduced = true;
|
||||||
|
return reducedModels;
|
||||||
|
**/
|
||||||
|
}
|
||||||
|
|
||||||
|
CAirlineIcaoCodeList CAircraftMatcher::ifPossibleReduceIcaoByAirlineNameTelephonyDesignator(const CCallsign &cs, const QString &airlineName, const QString &telephony, const CAirlineIcaoCodeList &inList, const QString &info, bool &reduced, CStatusMessageList *log)
|
||||||
|
{
|
||||||
|
reduced = false;
|
||||||
|
if (inList.isEmpty())
|
||||||
|
{
|
||||||
|
if (log) { CMatchingUtils::addLogDetailsToList(log, cs, info % u" Empty input list, cannot reduce", getLogCategories()); }
|
||||||
|
return inList;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (telephony.isEmpty() && airlineName.isEmpty())
|
||||||
|
{
|
||||||
|
if (log) { CMatchingUtils::addLogDetailsToList(log, cs, info % u" No name/telephony, cannot reduce " % QString::number(inList.size()) % u" entries", getLogCategories()); }
|
||||||
|
return inList;
|
||||||
|
}
|
||||||
|
|
||||||
|
CAirlineIcaoCodeList step1Data = inList.findByNamesOrTelephonyDesignator(airlineName);
|
||||||
|
if (step1Data.size() < 1 || step1Data.size() == inList.size())
|
||||||
|
{
|
||||||
|
if (log) { CMatchingUtils::addLogDetailsToList(log, cs, info % QStringLiteral(" cannot reduce by '%1'").arg(airlineName), getLogCategories()); }
|
||||||
|
step1Data = inList;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
reduced = true;
|
||||||
|
if (log) { CMatchingUtils::addLogDetailsToList(log, cs, info % QStringLiteral(" reduced by '%1'").arg(airlineName), getLogCategories()); }
|
||||||
|
}
|
||||||
|
if (step1Data.size() == 1) { return step1Data; }
|
||||||
|
|
||||||
|
CAirlineIcaoCodeList step2Data = inList.findByNamesOrTelephonyDesignator(telephony);
|
||||||
|
if (step2Data.size() < 1 || step2Data.size() == inList.size())
|
||||||
|
{
|
||||||
|
if (log) { CMatchingUtils::addLogDetailsToList(log, cs, info % QStringLiteral(" cannot reduce by '%1'").arg(telephony), getLogCategories()); }
|
||||||
|
step2Data = step1Data;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
reduced = true;
|
||||||
|
if (log) { CMatchingUtils::addLogDetailsToList(log, cs, info % QStringLiteral(" reduced by '%1'").arg(telephony), getLogCategories()); }
|
||||||
|
}
|
||||||
|
return step2Data;
|
||||||
}
|
}
|
||||||
|
|
||||||
CAircraftModelList CAircraftMatcher::ifPossibleReduceByCombinedType(const CSimulatedAircraft &remoteAircraft, const CAircraftModelList &inList, const CAircraftMatcherSetup &setup, bool &reduced, CStatusMessageList *log)
|
CAircraftModelList CAircraftMatcher::ifPossibleReduceByCombinedType(const CSimulatedAircraft &remoteAircraft, const CAircraftModelList &inList, const CAircraftMatcherSetup &setup, bool &reduced, CStatusMessageList *log)
|
||||||
@@ -1812,12 +1895,19 @@ namespace BlackCore
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
CAirlineIcaoCode CAircraftMatcher::stringToAirlineIcaoObject(const QString &designator, bool useSwiftDbData)
|
CAirlineIcaoCode CAircraftMatcher::stringToAirlineIcaoObject(const CCallsign &cs, const QString &designator, const QString &airlineName, const QString &airlineTelephony, bool useSwiftDbData, CStatusMessageList *log)
|
||||||
{
|
{
|
||||||
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); }
|
||||||
const CAirlineIcaoCode code = sApp->getWebDataServices()->getAirlineIcaoCodeForUniqueDesignatorOrDefault(designator, true);
|
const CAirlineIcaoCodeList codes = sApp->getWebDataServices()->getAirlineIcaoCodesForDesignator(designator);
|
||||||
return code.isLoadedFromDb() ? code : CAirlineIcaoCode(designator);
|
if (codes.isEmpty()) { return CAirlineIcaoCode(designator); }
|
||||||
|
if (codes.size() == 1) { return codes.front(); }
|
||||||
|
|
||||||
|
// more than 1
|
||||||
|
bool reduced = false;
|
||||||
|
static const QString info("Try reducing airline '%1' by name/telephony '%2'/'%3'");
|
||||||
|
const CAirlineIcaoCodeList reducedIcaos = codes.ifPossibleReduceNameTelephonyCountry(cs, airlineName, airlineTelephony, QString(), reduced, info, log);
|
||||||
|
return reducedIcaos.frontOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CAircraftMatcher::isValidAirlineIcaoDesignator(const QString &designator, bool checkAgainstSwiftDb)
|
bool CAircraftMatcher::isValidAirlineIcaoDesignator(const QString &designator, bool checkAgainstSwiftDb)
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ namespace BlackCore
|
|||||||
static BlackMisc::Aviation::CAirlineIcaoCode failoverValidAirlineIcaoDesignator(
|
static BlackMisc::Aviation::CAirlineIcaoCode failoverValidAirlineIcaoDesignator(
|
||||||
const BlackMisc::Aviation::CCallsign &callsign,
|
const BlackMisc::Aviation::CCallsign &callsign,
|
||||||
const QString &primaryIcao, const QString &secondaryIcao,
|
const QString &primaryIcao, const QString &secondaryIcao,
|
||||||
bool airlineFromCallsign, bool useWebServices, BlackMisc::CStatusMessageList *log = nullptr);
|
bool airlineFromCallsign, const QString &airlineName, const QString &airlineTelephony, bool useWebServices, BlackMisc::CStatusMessageList *log = nullptr);
|
||||||
|
|
||||||
//! Return an valid airline ICAO code from a given model list
|
//! Return an valid airline ICAO code from a given model list
|
||||||
//! \remarks model list could be the model set
|
//! \remarks model list could be the model set
|
||||||
@@ -358,7 +358,11 @@ namespace BlackCore
|
|||||||
|
|
||||||
//! Reduce by airline name/telephone designator
|
//! Reduce by airline name/telephone designator
|
||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
static BlackMisc::Simulation::CAircraftModelList ifPossibleReduceByAirlineNameTelephonyDesignator(const BlackMisc::Aviation::CCallsign &cs, const QString &airlineName, const QString &telephony, const BlackMisc::Simulation::CAircraftModelList &inList, const QString &info, bool &reduced, BlackMisc::CStatusMessageList *log);
|
static BlackMisc::Simulation::CAircraftModelList ifPossibleReduceModelsByAirlineNameTelephonyDesignator(const BlackMisc::Aviation::CCallsign &cs, const QString &airlineName, const QString &telephony, const BlackMisc::Simulation::CAircraftModelList &inList, const QString &info, bool &reduced, BlackMisc::CStatusMessageList *log);
|
||||||
|
|
||||||
|
//! Reduce by airline name/telephone designator
|
||||||
|
//! \threadsafe
|
||||||
|
static BlackMisc::Aviation::CAirlineIcaoCodeList ifPossibleReduceIcaoByAirlineNameTelephonyDesignator(const BlackMisc::Aviation::CCallsign &cs, const QString &airlineName, const QString &telephony, const BlackMisc::Aviation::CAirlineIcaoCodeList &inList, const QString &info, bool &reduced, BlackMisc::CStatusMessageList *log);
|
||||||
|
|
||||||
//! Installed models by combined code (ie L2J, L1P, ...)
|
//! Installed models by combined code (ie L2J, L1P, ...)
|
||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
@@ -378,7 +382,7 @@ namespace BlackCore
|
|||||||
|
|
||||||
//! Designator to object
|
//! Designator to object
|
||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
static BlackMisc::Aviation::CAirlineIcaoCode stringToAirlineIcaoObject(const QString &designator, bool useSwiftDbData);
|
static BlackMisc::Aviation::CAirlineIcaoCode stringToAirlineIcaoObject(const BlackMisc::Aviation::CCallsign &cs, const QString &designator, const QString &airlineName, const QString &airlineTelephony, bool useSwiftDbData, BlackMisc::CStatusMessageList *log);
|
||||||
|
|
||||||
//! Valid designator, allows to check against swift DB
|
//! Valid designator, allows to check against swift DB
|
||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
|
|||||||
@@ -190,6 +190,35 @@ namespace BlackMisc
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CAircraftModelList CAircraftModelList::findByAirlineNameAndTelephonyDesignator(const QString &name, const QString &telephony, bool onlyIfExistInModel) const
|
||||||
|
{
|
||||||
|
return this->findBy([ & ](const CAircraftModel & model)
|
||||||
|
{
|
||||||
|
if (!model.hasAirlineDesignator() || !model.hasValidDbKey()) { return false; }
|
||||||
|
const CAirlineIcaoCode &icao = model.getAirlineIcaoCode();
|
||||||
|
if (!name.isEmpty() && (icao.hasName() || !onlyIfExistInModel))
|
||||||
|
{
|
||||||
|
if (!icao.getName().contains(name, Qt::CaseInsensitive)) { return false; }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!telephony.isEmpty() && (icao.hasTelephonyDesignator() || !onlyIfExistInModel))
|
||||||
|
{
|
||||||
|
if (!icao.getTelephonyDesignator().contains(name, Qt::CaseInsensitive)) { return false; }
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
CAircraftModelList CAircraftModelList::findByAirlineNamesOrTelephonyDesignator(const QString &name) const
|
||||||
|
{
|
||||||
|
return this->findBy([ & ](const CAircraftModel & model)
|
||||||
|
{
|
||||||
|
if (!model.hasAirlineDesignator() || !model.hasValidDbKey()) { return false; }
|
||||||
|
const CAirlineIcaoCode &icao = model.getAirlineIcaoCode();
|
||||||
|
return icao.matchesNamesOrTelephonyDesignator(name);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
CAircraftModelList CAircraftModelList::findByLiveryCode(const CLivery &livery) const
|
CAircraftModelList CAircraftModelList::findByLiveryCode(const CLivery &livery) const
|
||||||
{
|
{
|
||||||
if (!livery.hasCombinedCode()) { return CAircraftModelList(); }
|
if (!livery.hasCombinedCode()) { return CAircraftModelList(); }
|
||||||
|
|||||||
@@ -154,6 +154,12 @@ namespace BlackMisc
|
|||||||
//! Find by the corresponding airline group
|
//! Find by the corresponding airline group
|
||||||
CAircraftModelList findByAirlineGroup(const BlackMisc::Aviation::CAirlineIcaoCode &airline) const;
|
CAircraftModelList findByAirlineGroup(const BlackMisc::Aviation::CAirlineIcaoCode &airline) const;
|
||||||
|
|
||||||
|
//! Find by airline name and telephony
|
||||||
|
CAircraftModelList findByAirlineNameAndTelephonyDesignator(const QString &name, const QString &telephony, bool onlyIfExistInModel = true) const;
|
||||||
|
|
||||||
|
//! Find by airline name and telephony, similar to CAirlineIcaoCodeList::findByNamesOrTelephonyDesignator
|
||||||
|
CAircraftModelList findByAirlineNamesOrTelephonyDesignator(const QString &name) const;
|
||||||
|
|
||||||
//! Find by livery code
|
//! Find by livery code
|
||||||
CAircraftModelList findByLiveryCode(const Aviation::CLivery &livery) const;
|
CAircraftModelList findByLiveryCode(const Aviation::CLivery &livery) const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user