Ref T701, do NOT use FsInn data if model string iis unknown

* this can overrride "swift livery strings"
* FsInn only is useful with a known model string
This commit is contained in:
Klaus Basan
2019-07-07 16:43:55 +02:00
parent b4cb6606d6
commit bfc1c7bda9
3 changed files with 27 additions and 2 deletions

View File

@@ -697,9 +697,10 @@ namespace BlackCore
return CAircraftModel(); return CAircraftModel();
} }
CAircraftModel model = sApp->getWebDataServices()->getModelForModelString(modelString); CAircraftModel model = sApp->getWebDataServices()->getModelForModelString(modelString);
const bool isDBModel = model.hasValidDbKey();
if (log) if (log)
{ {
if (model.hasValidDbKey()) if (isDBModel)
{ {
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Found model in DB for model string '%1'").arg(model.getModelStringAndDbKey())); CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Found model in DB for model string '%1'").arg(model.getModelStringAndDbKey()));
} }
@@ -708,6 +709,10 @@ namespace BlackCore
CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Did not find model in DB for model string '%1'").arg(modelString)); CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Did not find model in DB for model string '%1'").arg(modelString));
} }
} }
if (!isDBModel) { return CAircraftModel(); } // not found
// found
model.setCallsign(callsign); model.setCallsign(callsign);
model.setModelType(CAircraftModel::TypeReverseLookup); model.setModelType(CAircraftModel::TypeReverseLookup);
return model; return model;
@@ -931,6 +936,16 @@ namespace BlackCore
return known; return known;
} }
bool CAircraftMatcher::isKnownModelString(const QString &candidate, const CCallsign &callsign, CStatusMessageList *log)
{
if (!sApp || sApp->isShuttingDown() || !sApp->hasWebDataServices()) { return false; }
const bool known = sApp->getWebDataServices()->containsModelString(candidate);
static const QString sKnown("Known modelstring '%1'");
static const QString sUnknown("Unknown modelstring '%1'");
CMatchingUtils::addLogDetailsToList(log, callsign, known ? sKnown.arg(candidate) : sUnknown.arg(candidate));
return known;
}
CAircraftIcaoCode CAircraftMatcher::searchAmongAirlineAircraft(const QString &candidateString, const CAirlineIcaoCode &airline, const CCallsign &callsign, CStatusMessageList *log) CAircraftIcaoCode CAircraftMatcher::searchAmongAirlineAircraft(const QString &candidateString, const CAirlineIcaoCode &airline, const CCallsign &callsign, CStatusMessageList *log)
{ {
if (!sApp || sApp->isShuttingDown() || !sApp->hasWebDataServices()) { return CAircraftIcaoCode(); } if (!sApp || sApp->isShuttingDown() || !sApp->hasWebDataServices()) { return CAircraftIcaoCode(); }

View File

@@ -205,6 +205,9 @@ namespace BlackCore
const QString &candidate, const BlackMisc::Aviation::CCallsign &callsign = {}, const QString &candidate, const BlackMisc::Aviation::CCallsign &callsign = {},
BlackMisc::CStatusMessageList *log = nullptr); BlackMisc::CStatusMessageList *log = nullptr);
//! Is this aircraft designator known?
//! \threadsafe
static bool isKnownModelString(
const QString &candidate, const BlackMisc::Aviation::CCallsign &callsign = {}, const QString &candidate, const BlackMisc::Aviation::CCallsign &callsign = {},
BlackMisc::CStatusMessageList *log = nullptr); BlackMisc::CStatusMessageList *log = nullptr);

View File

@@ -708,10 +708,17 @@ namespace BlackCore
const ReverseLookupLogging reverseLookupEnabled = this->isReverseLookupMessagesEnabled(); const ReverseLookupLogging reverseLookupEnabled = this->isReverseLookupMessagesEnabled();
CStatusMessageList reverseLookupMessages; CStatusMessageList reverseLookupMessages;
CStatusMessageList *pReverseLookupMessages = reverseLookupEnabled.testFlag(RevLogEnabled) ? &reverseLookupMessages : nullptr; CStatusMessageList *pReverseLookupMessages = reverseLookupEnabled.testFlag(RevLogEnabled) ? &reverseLookupMessages : nullptr;
if (!CAircraftMatcher::isKnownModelString(modelString, callsign, pReverseLookupMessages))
{
// from the T701 test, do NOT use if model string is unknown
// this can overrride "swift livery strings", FsInn here only is useful with a known model string
CMatchingUtils::addLogDetailsToList(pReverseLookupMessages, callsign,
QStringLiteral("FsInn data ignored, as modelstring '%1' is not known").arg(modelString));
return;
}
CMatchingUtils::addLogDetailsToList(pReverseLookupMessages, callsign, CMatchingUtils::addLogDetailsToList(pReverseLookupMessages, callsign,
QStringLiteral("FsInn data from network: aircraft '%1', airline '%2', model '%3', combined '%4'"). QStringLiteral("FsInn data from network: aircraft '%1', airline '%2', model '%3', combined '%4'").
arg(aircraftIcaoDesignator, airlineIcaoDesignator, modelString, combinedAircraftType)); arg(aircraftIcaoDesignator, airlineIcaoDesignator, modelString, combinedAircraftType));
this->addOrUpdateAircraftInRange(callsign, aircraftIcaoDesignator, airlineIcaoDesignator, "", modelString, CAircraftModel::TypeFSInnData, pReverseLookupMessages); this->addOrUpdateAircraftInRange(callsign, aircraftIcaoDesignator, airlineIcaoDesignator, "", modelString, CAircraftModel::TypeFSInnData, pReverseLookupMessages);
this->addReverseLookupMessages(callsign, reverseLookupMessages); this->addReverseLookupMessages(callsign, reverseLookupMessages);
this->sendReadyForModelMatching(callsign); // from FSInn this->sendReadyForModelMatching(callsign); // from FSInn