refs #706, callsign to airline plus testing resulting in multiple smaller improvements (refs #707)

* added functions to callsign / callsign list
* used in aircraft matcher
* also resolve std.livery in matcher
* also allow to find aircraft ICAO designator ending with string (e.g. 737 for B737)
* renamed CAircraftMatcher::reverseLookup -> CAircraftMatcher::reverselLookupModel
* threadsafe isInRange (CAIrspaceMonitor)
This commit is contained in:
Klaus Basan
2016-07-09 18:29:37 +02:00
parent 19040af654
commit 64cee7fba8
16 changed files with 196 additions and 47 deletions

View File

@@ -119,12 +119,23 @@ namespace BlackMisc
return icaoPattern;
}
CAirlineIcaoCode CAirlineIcaoCodeList::findBestMatchByCallsign(const CCallsign &callsign) const
{
if (this->isEmpty() || callsign.isEmpty()) { return CAirlineIcaoCode(); }
const QString airline = callsign.getAirlineSuffix().toUpper();
if (airline.isEmpty()) { return CAirlineIcaoCode(); }
const CAirlineIcaoCode airlineCode = (airline.length() == 3) ?
this->findFirstByOrDefault(&CAirlineIcaoCode::getDesignator, airline) :
this->findFirstByOrDefault(&CAirlineIcaoCode::getVDesignator, airline);
return airlineCode;
}
CAirlineIcaoCodeList CAirlineIcaoCodeList::fromDatabaseJson(const QJsonArray &array, bool ignoreIncomplete)
{
CAirlineIcaoCodeList codes;
for (const QJsonValue &value : array)
{
CAirlineIcaoCode icao(CAirlineIcaoCode::fromDatabaseJson(value.toObject()));
const CAirlineIcaoCode icao(CAirlineIcaoCode::fromDatabaseJson(value.toObject()));
if (ignoreIncomplete && !icao.hasCompleteData()) { continue; }
codes.push_back(icao);
}