Ref T310, utility functions for statistics (incl.renaming)

This commit is contained in:
Klaus Basan
2018-08-28 01:15:49 +02:00
parent 3ce6e230b2
commit 84bf19697c
7 changed files with 120 additions and 14 deletions

View File

@@ -9,8 +9,6 @@
#include "blackmisc/simulation/aircraftmodellist.h"
#include "blackmisc/simulation/matchingutils.h"
#include "blackmisc/aviation/aircrafticaocode.h"
#include "blackmisc/aviation/airlineicaocode.h"
#include "blackmisc/aviation/callsign.h"
#include "blackmisc/aviation/livery.h"
#include "blackmisc/math/mathutils.h"
@@ -732,6 +730,24 @@ namespace BlackMisc
return distributors;
}
CAircraftIcaoCodeList CAircraftModelList::getAircraftIcaoCodesFromDb() const
{
if (this->isEmpty()) { return CAircraftIcaoCodeList(); }
QSet<int> keys;
CAircraftIcaoCodeList icaos;
for (const CAircraftModel &model : *this)
{
const CAircraftIcaoCode icao = model.getAircraftIcaoCode();
if (!icao.hasValidDbKey()) { continue; }
const int key = icao.getDbKey();
if (keys.contains(key)) { continue; }
icaos.push_back(icao);
keys.insert(key);
}
return icaos;
}
QSet<QString> CAircraftModelList::getAircraftDesignators() const
{
QSet<QString> designators;
@@ -767,6 +783,24 @@ namespace BlackMisc
return icaos;
}
CAirlineIcaoCodeList CAircraftModelList::getAirlineIcaoCodesFromDb() const
{
if (this->isEmpty()) { return CAirlineIcaoCodeList(); }
QSet<int> keys;
CAirlineIcaoCodeList icaos;
for (const CAircraftModel &model : *this)
{
const CAirlineIcaoCode icao = model.getAirlineIcaoCode();
if (!icao.hasValidDbKey()) { continue; }
const int key = icao.getDbKey();
if (keys.contains(key)) { continue; }
icaos.push_back(icao);
keys.insert(key);
}
return icaos;
}
QSet<QString> CAircraftModelList::getAirlineDesignators() const
{
QSet<QString> designators;
@@ -1094,15 +1128,38 @@ namespace BlackMisc
);
}
QString CAircraftModelList::htmlStatistics() const
QString CAircraftModelList::htmlStatistics(bool aircraftStats, bool airlineStats) const
{
static const QString sep("<br>");
const bool notOnlyDb = this->containsAnyObjectWithoutKey();
QString stats = this->coverageSummary("<br>");
QString stats = this->coverageSummary(sep);
if (aircraftStats)
{
const CAircraftIcaoCodeList icaos = this->getAircraftIcaoCodesFromDb();
QStringList designators(icaos.allDesignators().toList());
designators.sort();
stats += sep % sep %
QStringLiteral("Aircraft ICAOs from DB: ") % sep %
designators.join(", ");
}
if (airlineStats)
{
const CAirlineIcaoCodeList icaos = this->getAirlineIcaoCodesFromDb();
const QStringList designators = icaos.toIcaoDesignatorCompleterStrings();
stats += sep % sep %
QStringLiteral("Airline ICAOs from DB: ") % sep %
designators.join(", ");
}
if (notOnlyDb)
{
const CAircraftModelList dbModels = this->findObjectsWithDbKey();
stats += QStringLiteral("<br><br>DB objects:<br>---------<br>") %
dbModels.coverageSummary("<br>");
stats += sep %
sep %
QStringLiteral("DB objects:<br>---------") %
sep %
dbModels.htmlStatistics(false, false);
}
return stats;
}

View File

@@ -16,6 +16,7 @@
#include "blackmisc/simulation/distributorlist.h"
#include "blackmisc/simulation/simulatorinfo.h"
#include "blackmisc/aviation/aircrafticaocodelist.h"
#include "blackmisc/aviation/airlineicaocodelist.h"
#include "blackmisc/db/datastoreobjectlist.h"
#include "blackmisc/blackmiscexport.h"
#include "blackmisc/collection.h"
@@ -282,6 +283,9 @@ namespace BlackMisc
//! All distributors used with models of this list
CDistributorList getDistributors(bool onlyDbDistributors = true) const;
//! Aircraft ICAO codes from DB, without duplicates
Aviation::CAircraftIcaoCodeList getAircraftIcaoCodesFromDb() const;
//! Aircraft designators
QSet<QString> getAircraftDesignators() const;
@@ -293,6 +297,9 @@ namespace BlackMisc
//! \remark gives all aircraft flown by an airline
Aviation::CAircraftIcaoCodeList getAicraftIcaoCodesForAirline(const Aviation::CAirlineIcaoCode &airlineCode) const;
//! Airline ICAO codes from DB, without duplicates
Aviation::CAirlineIcaoCodeList getAirlineIcaoCodesFromDb() const;
//! Airline designators
QSet<QString> getAirlineDesignators() const;
@@ -355,7 +362,7 @@ namespace BlackMisc
QString coverageSummaryForModel(const CAircraftModel &checkModel, const QString &separator = "\n") const;
//! A HTML summary of the data in the list
QString htmlStatistics() const;
QString htmlStatistics(bool aircraftStats, bool airlineStats) const;
};
//! Model per callsign