mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-09 05:28:09 +08:00
refs #678, fixes bug reported by MS + improvements
* made clients threadsafe * use clients to decide if model string is queried * init aircraft/airline ICAO codes with DB data where possible * Allow acces to log utility functions of matcher
This commit is contained in:
@@ -166,11 +166,17 @@ namespace BlackCore
|
||||
return matchedModel;
|
||||
}
|
||||
|
||||
CAircraftModel CAircraftMatcher::reverseLookup(const CAircraftModel &modelToLookup, const QString &liveryInfo, CStatusMessageList *log)
|
||||
CAircraftModel CAircraftMatcher::reverseLookup(const CAircraftModel &modelToLookup, const QString &networkLiveryInfo, CStatusMessageList *log)
|
||||
{
|
||||
Q_ASSERT_X(sApp, Q_FUNC_INFO, "Missing sApp");
|
||||
Q_ASSERT_X(sApp->getWebDataServices(), Q_FUNC_INFO, "No web services");
|
||||
|
||||
// already DB model?
|
||||
if (modelToLookup.hasValidDbKey() && modelToLookup.getModelType() == CAircraftModel::TypeDatabaseEntry) { return modelToLookup; }
|
||||
|
||||
CAircraftModel model(modelToLookup);
|
||||
const CCallsign callsign(model.getCallsign());
|
||||
const QStringList liveryModelStrings = CAircraftModel::splitNetworkLiveryString(liveryInfo);
|
||||
const QStringList liveryModelStrings = CAircraftModel::splitNetworkLiveryString(networkLiveryInfo);
|
||||
const QString modelString(modelToLookup.hasModelString() ? modelToLookup.getModelString() : liveryModelStrings[1]);
|
||||
QString liveryCode(liveryModelStrings[0]);
|
||||
|
||||
@@ -263,6 +269,36 @@ namespace BlackCore
|
||||
return model;
|
||||
}
|
||||
|
||||
CAircraftIcaoCode CAircraftMatcher::reverseLookupAircraftIcao(const QString &icaoDesignator, const CCallsign &callsign, CStatusMessageList *log)
|
||||
{
|
||||
Q_ASSERT_X(sApp, Q_FUNC_INFO, "Missing sApp");
|
||||
Q_ASSERT_X(sApp->getWebDataServices(), Q_FUNC_INFO, "No web services");
|
||||
|
||||
const QString designator(icaoDesignator.trimmed().toUpper());
|
||||
const CAircraftIcaoCode icao = sApp->getWebDataServices()->smartAircraftIcaoSelector(designator);
|
||||
if (log)
|
||||
{
|
||||
if (icao.hasValidDbKey()) { logDetails(log, callsign, QString("Reverse lookup ICAO %1, found `%2`").arg(designator).arg(icao.getDesignator())); }
|
||||
else { logDetails(log, callsign, QString("Reverse lookup ICAO %1, nothing found").arg(designator)); }
|
||||
}
|
||||
return icao;
|
||||
}
|
||||
|
||||
CAirlineIcaoCode BlackCore::CAircraftMatcher::reverseLookupAirlineIcao(const QString &icaoDesignator, const CCallsign &callsign, CStatusMessageList *log)
|
||||
{
|
||||
Q_ASSERT_X(sApp, Q_FUNC_INFO, "Missing sApp");
|
||||
Q_ASSERT_X(sApp->getWebDataServices(), Q_FUNC_INFO, "No web services");
|
||||
|
||||
const QString designator(icaoDesignator.trimmed().toUpper());
|
||||
const CAirlineIcaoCode icao = sApp->getWebDataServices()->smartAirlineIcaoSelector(designator);
|
||||
if (log)
|
||||
{
|
||||
if (icao.hasValidDbKey()) { logDetails(log, callsign, QString("Reverse lookup airline %1, found `%2`").arg(designator).arg(icao.getDesignator())); }
|
||||
else { logDetails(log, callsign, QString("Reverse lookup airline %1, nothing found").arg(designator)); }
|
||||
}
|
||||
return icao;
|
||||
}
|
||||
|
||||
int CAircraftMatcher::setModelSet(const CAircraftModelList &models)
|
||||
{
|
||||
CAircraftModelList modelsCleaned(models);
|
||||
|
||||
Reference in New Issue
Block a user