mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-31 12:55:33 +08:00
Ref T26, find most important manufacturer for an ICAO code
This commit is contained in:
committed by
Mathew Sutcliffe
parent
5270dce266
commit
fa5ee8e22f
@@ -264,6 +264,42 @@ namespace BlackMisc
|
||||
return c;
|
||||
}
|
||||
|
||||
QMap<QString, int> CAircraftIcaoCodeList::countManufacturers() const
|
||||
{
|
||||
QMap<QString, int> count;
|
||||
for (const CAircraftIcaoCode &icao : *this)
|
||||
{
|
||||
if (!icao.hasManufacturer()) continue;
|
||||
const QString m(icao.getManufacturer());
|
||||
if (count.contains(m))
|
||||
{
|
||||
count[m]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
count[m] = 1;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
QPair<QString, int> CAircraftIcaoCodeList::maxCountManufacturer() const
|
||||
{
|
||||
if (this->isEmpty()) return QPair<QString, int>("", 0);
|
||||
const QMap<QString, int> counts(countManufacturers());
|
||||
QPair<QString, int> max;
|
||||
for (const QString &m : counts.keys())
|
||||
{
|
||||
const int mv = counts[m];
|
||||
if (mv > max.second)
|
||||
{
|
||||
max.first = m;
|
||||
max.second = mv;
|
||||
}
|
||||
}
|
||||
return max;
|
||||
}
|
||||
|
||||
CAircraftIcaoCodeList CAircraftIcaoCodeList::fromDatabaseJson(const QJsonArray &array, bool ignoreIncompleteAndDuplicates)
|
||||
{
|
||||
CAircraftIcaoCodeList codes;
|
||||
@@ -361,7 +397,7 @@ namespace BlackMisc
|
||||
{
|
||||
CAircraftIcaoCodeList copy(*this);
|
||||
copy.sortByDesignatorManufacturerAndRank();
|
||||
CAircraftIcaoCodeList grouped;
|
||||
CAircraftIcaoCodeList grouped; // will contain the entries with the best rank
|
||||
QString designator;
|
||||
QString manufacturer;
|
||||
for (const CAircraftIcaoCode &code : as_const(copy))
|
||||
|
||||
@@ -124,6 +124,12 @@ namespace BlackMisc
|
||||
//! All manufacturers
|
||||
QSet<QString> allManufacturers(bool onlyKnownDesignators = true) const;
|
||||
|
||||
//! Count by manufacturer
|
||||
QMap<QString, int> countManufacturers() const;
|
||||
|
||||
//! Uses countManufacturers to find "most important" manufacturer
|
||||
QPair<QString, int> maxCountManufacturer() const;
|
||||
|
||||
//! From our database JSON format
|
||||
static CAircraftIcaoCodeList fromDatabaseJson(const QJsonArray &array, bool ignoreIncompleteAndDuplicates = true);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user