mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-05 01:05:34 +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;
|
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 CAircraftIcaoCodeList::fromDatabaseJson(const QJsonArray &array, bool ignoreIncompleteAndDuplicates)
|
||||||
{
|
{
|
||||||
CAircraftIcaoCodeList codes;
|
CAircraftIcaoCodeList codes;
|
||||||
@@ -361,7 +397,7 @@ namespace BlackMisc
|
|||||||
{
|
{
|
||||||
CAircraftIcaoCodeList copy(*this);
|
CAircraftIcaoCodeList copy(*this);
|
||||||
copy.sortByDesignatorManufacturerAndRank();
|
copy.sortByDesignatorManufacturerAndRank();
|
||||||
CAircraftIcaoCodeList grouped;
|
CAircraftIcaoCodeList grouped; // will contain the entries with the best rank
|
||||||
QString designator;
|
QString designator;
|
||||||
QString manufacturer;
|
QString manufacturer;
|
||||||
for (const CAircraftIcaoCode &code : as_const(copy))
|
for (const CAircraftIcaoCode &code : as_const(copy))
|
||||||
|
|||||||
@@ -124,6 +124,12 @@ namespace BlackMisc
|
|||||||
//! All manufacturers
|
//! All manufacturers
|
||||||
QSet<QString> allManufacturers(bool onlyKnownDesignators = true) const;
|
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
|
//! From our database JSON format
|
||||||
static CAircraftIcaoCodeList fromDatabaseJson(const QJsonArray &array, bool ignoreIncompleteAndDuplicates = true);
|
static CAircraftIcaoCodeList fromDatabaseJson(const QJsonArray &array, bool ignoreIncompleteAndDuplicates = true);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user