mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-03 07:35:48 +08:00
Ref T242, utility functions for matching
* search among airline aircraft * improved logging information * search among airline ICAO aircraft (which aircraft does the airline use?) * check ecosystem before merging with VATSIM data
This commit is contained in:
@@ -59,11 +59,11 @@ namespace BlackMisc
|
||||
QString CAircraftModel::convertToQString(bool i18n) const
|
||||
{
|
||||
const QString s =
|
||||
m_modelString %
|
||||
QLatin1String(" type: '") % this->getModelTypeAsString() %
|
||||
QLatin1String("' ICAO: '") % this->getAircraftIcaoCode().toQString(i18n) %
|
||||
QLatin1String("' {") % m_livery.toQString(i18n) %
|
||||
QLatin1String("} file: '") % m_fileName % QLatin1String("'");
|
||||
(this->hasModelString() ? inApostrophes(m_modelString, true) % QStringLiteral(" ") : QStringLiteral("")) %
|
||||
QStringLiteral(" type: '") % this->getModelTypeAsString() %
|
||||
QStringLiteral("' ICAO: '") % this->getAircraftIcaoCode().toQString(i18n) %
|
||||
QStringLiteral("' {") % m_livery.toQString(i18n) %
|
||||
QStringLiteral("} file: '") % m_fileName % QStringLiteral("'");
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
@@ -82,6 +82,12 @@ namespace BlackMisc
|
||||
return this->contains(&CAircraftModel::getAircraftIcaoCodeDesignator, aircraftDesignator, &CAircraftModel::getAirlineIcaoCodeDesignator, airlineDesignator);
|
||||
}
|
||||
|
||||
bool CAircraftModelList::containsAirlineLivery(const CAirlineIcaoCode &airline) const
|
||||
{
|
||||
if (!airline.hasValidDesignator()) { return false; }
|
||||
return this->contains(&CAircraftModel::getAirlineIcaoCode, airline);
|
||||
}
|
||||
|
||||
CAircraftModelList CAircraftModelList::findByModelString(const QString &modelString, Qt::CaseSensitivity sensitivity) const
|
||||
{
|
||||
return this->findBy([ & ](const CAircraftModel & model)
|
||||
@@ -726,6 +732,18 @@ namespace BlackMisc
|
||||
return designators;
|
||||
}
|
||||
|
||||
CAircraftIcaoCodeList CAircraftModelList::getAicraftIcaoCodesForAirline(const CAirlineIcaoCode &airlineCode) const
|
||||
{
|
||||
CAircraftIcaoCodeList icaos;
|
||||
if (!airlineCode.hasValidDesignator()) { return icaos; }
|
||||
for (const CAircraftModel &model : *this)
|
||||
{
|
||||
if (model.getAirlineIcaoCode() != airlineCode) { continue; }
|
||||
icaos.insert(model.getAircraftIcaoCode());
|
||||
}
|
||||
return icaos;
|
||||
}
|
||||
|
||||
QSet<QString> CAircraftModelList::getAirlineDesignators() const
|
||||
{
|
||||
QSet<QString> designators;
|
||||
@@ -807,7 +825,7 @@ namespace BlackMisc
|
||||
// normally prefer colors if there is no airline
|
||||
CMatchingUtils::addLogDetailsToList(log, remoteModel.getCallsign(), QString("Prefer color liveries: '%1', airline: '%2', ignore zero scores: '%3'").arg(boolToYesNo(preferColorLiveries), remoteModel.getAirlineIcaoCodeDesignator(), boolToYesNo(ignoreZeroScores)));
|
||||
CMatchingUtils::addLogDetailsToList(log, remoteModel.getCallsign(), QString("--- Start scoring in list with %1 models").arg(this->size()));
|
||||
CMatchingUtils::addLogDetailsToList(log, remoteModel.getCallsign(), this->coverageSummary());
|
||||
CMatchingUtils::addLogDetailsToList(log, remoteModel.getCallsign(), this->extCoverageSummary(remoteModel));
|
||||
|
||||
int c = 1;
|
||||
for (const CAircraftModel &model : *this)
|
||||
@@ -1015,5 +1033,18 @@ namespace BlackMisc
|
||||
QStringLiteral("Different airlines: ") % QString::number(this->countDifferentAirlines()) % separator %
|
||||
QStringLiteral("Combined types: ") % this->getCombinedTypesAsString();
|
||||
}
|
||||
|
||||
QString CAircraftModelList::extCoverageSummary(const CAircraftModel &checkModel, const QString &separator) const
|
||||
{
|
||||
const bool combined = this->containsCombinedType(checkModel.getAircraftIcaoCode().getCombinedType());
|
||||
const bool airline = checkModel.hasAirlineDesignator() && this->containsAirlineLivery(checkModel.getAirlineIcaoCode());
|
||||
return coverageSummary(separator) % separator %
|
||||
QStringLiteral("Has combined: ") % boolToYesNo(combined) %
|
||||
(
|
||||
checkModel.hasAirlineDesignator() ?
|
||||
QStringLiteral(" airline '") % checkModel.getAirlineIcaoCodeDesignator() % QStringLiteral("': ") % boolToYesNo(airline) :
|
||||
QStringLiteral("")
|
||||
);
|
||||
}
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -15,9 +15,10 @@
|
||||
#include "blackmisc/simulation/aircraftmodel.h"
|
||||
#include "blackmisc/simulation/distributorlist.h"
|
||||
#include "blackmisc/simulation/simulatorinfo.h"
|
||||
#include "blackmisc/aviation/aircrafticaocodelist.h"
|
||||
#include "blackmisc/db/datastoreobjectlist.h"
|
||||
#include "blackmisc/blackmiscexport.h"
|
||||
#include "blackmisc/collection.h"
|
||||
#include "blackmisc/db/datastoreobjectlist.h"
|
||||
#include "blackmisc/orderablelist.h"
|
||||
#include "blackmisc/sequence.h"
|
||||
#include "blackmisc/statusmessagelist.h"
|
||||
@@ -36,7 +37,7 @@ namespace BlackMisc
|
||||
{
|
||||
class CCallsign;
|
||||
class CLivery;
|
||||
class CAirlineIcao;
|
||||
class CAirlineIcaoCode;
|
||||
}
|
||||
|
||||
namespace Simulation
|
||||
@@ -78,6 +79,9 @@ namespace BlackMisc
|
||||
//! Contains any model with aircraft and airline ICAO designator?
|
||||
bool containsModelsWithAircraftAndAirlineIcaoDesignator(const QString &aircraftDesignator, const QString &airlineDesignator) const;
|
||||
|
||||
//! Contains airline livery for given airline
|
||||
bool containsAirlineLivery(const Aviation::CAirlineIcaoCode &airline) const;
|
||||
|
||||
//! Contains any model matching any of of passed simulators?
|
||||
bool containsMatchingSimulator(const CSimulatorInfo &simulators) const;
|
||||
|
||||
@@ -275,6 +279,10 @@ namespace BlackMisc
|
||||
//! \remark gives all aircraft flown by an airline
|
||||
QSet<QString> getAircraftDesignatorsForAirline(const Aviation::CAirlineIcaoCode &airlineCode) const;
|
||||
|
||||
//! Aircraft ICAO codes for airline
|
||||
//! \remark gives all aircraft flown by an airline
|
||||
Aviation::CAircraftIcaoCodeList getAicraftIcaoCodesForAirline(const Aviation::CAirlineIcaoCode &airlineCode) const;
|
||||
|
||||
//! Airline designators
|
||||
QSet<QString> getAirlineDesignators() const;
|
||||
|
||||
@@ -329,8 +337,12 @@ namespace BlackMisc
|
||||
//! As HTML summary
|
||||
QString asHtmlSummary() const;
|
||||
|
||||
//! What kind of models are represented here
|
||||
//! What kind of models are represented here?
|
||||
QString coverageSummary(const QString &separator = "\n") const;
|
||||
|
||||
//! What kind of models are represented here?
|
||||
//! \remark checking for some criteria in the given model
|
||||
QString extCoverageSummary(const CAircraftModel &checkModel, const QString &separator = "\n") const;
|
||||
};
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
Reference in New Issue
Block a user