refs #590, military flag in airline ICAO

(plus fixes in prefix of aircraft ICAO)
This commit is contained in:
Klaus Basan
2016-02-04 17:54:56 +01:00
parent 2662f03e81
commit de27c2af8a
6 changed files with 41 additions and 9 deletions

View File

@@ -29,7 +29,8 @@ namespace BlackGui
col.setSortPropertyIndex(CAirlineIcaoCode::IndexAirlineDesignator); col.setSortPropertyIndex(CAirlineIcaoCode::IndexAirlineDesignator);
this->m_columns.addColumn(col); this->m_columns.addColumn(col);
this->m_columns.addColumn(CColumn("VA", "Virtual airline", CAirlineIcaoCode::IndexIsVirtualAirline, new CBoolIconFormatter("VA", "real airline"))); this->m_columns.addColumn(CColumn("VA", "virtual airline", CAirlineIcaoCode::IndexIsVirtualAirline, new CBoolIconFormatter("VA", "real airline")));
this->m_columns.addColumn(CColumn("mil.", "military (air force)", CAirlineIcaoCode::IndexIsMilitary, new CBoolIconFormatter("military", "civilian")));
this->m_columns.addColumn(CColumn("op.", "operating", CAirlineIcaoCode::IndexIsOperating, new CBoolIconFormatter("operating", "ceased"))); this->m_columns.addColumn(CColumn("op.", "operating", CAirlineIcaoCode::IndexIsOperating, new CBoolIconFormatter("operating", "ceased")));
this->m_columns.addColumn(CColumn::standardValueObject("name", CAirlineIcaoCode::IndexAirlineName)); this->m_columns.addColumn(CColumn::standardValueObject("name", CAirlineIcaoCode::IndexAirlineName));

View File

@@ -451,7 +451,7 @@ namespace BlackMisc
const QStringList &CAircraftIcaoCode::getSpecialDesignators() const QStringList &CAircraftIcaoCode::getSpecialDesignators()
{ {
static const QStringList s({ "ZZZZ", "SHIP", "BALL", "GLID", "ULAC", "GYRO", "UHEL", "GLID", "ULAC", "GYRO", "UHEL"}); static const QStringList s({ "ZZZZ", "SHIP", "BALL", "GLID", "ULAC", "GYRO", "UHEL" });
return s; return s;
} }
@@ -483,18 +483,18 @@ namespace BlackMisc
QString engine(json.value(prefix + "engine").toString()); QString engine(json.value(prefix + "engine").toString());
int engineCount(json.value(prefix + "enginecount").toInt(-1)); int engineCount(json.value(prefix + "enginecount").toInt(-1));
QString combined(createdCombinedString(type, engineCount, engine)); QString combined(createdCombinedString(type, engineCount, engine));
QString wtc(json.value("wtc").toString()); QString wtc(json.value(prefix + "wtc").toString());
if (wtc.length() > 1 && wtc.contains("/")) if (wtc.length() > 1 && wtc.contains("/"))
{ {
// "L/M" -> "M" // "L/M" -> "M"
wtc = wtc.right(1); wtc = wtc.right(1);
} }
Q_ASSERT_X(wtc.length() < 2, Q_FUNC_INFO, "WTC too long");
bool real = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "realworld").toString()); bool real = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "realworld").toString());
bool legacy = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "legacy").toString()); bool legacy = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "legacy").toString());
bool military = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "military").toString()); bool military = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "military").toString());
int rank(json.value("rank").toInt(10)); int rank(json.value(prefix + "rank").toInt(10));
Q_ASSERT_X(wtc.length() < 2, Q_FUNC_INFO, "WTC too long");
CAircraftIcaoCode code( CAircraftIcaoCode code(
designator, iata, combined, designator, iata, combined,

View File

@@ -12,6 +12,7 @@
#include "blackmisc/blackmiscfreefunctions.h" #include "blackmisc/blackmiscfreefunctions.h"
#include "blackmisc/variant.h" #include "blackmisc/variant.h"
#include "blackmisc/comparefunctions.h" #include "blackmisc/comparefunctions.h"
#include "blackmisc/datastoreutility.h"
#include <tuple> #include <tuple>
#include <QThreadStorage> #include <QThreadStorage>
@@ -153,6 +154,8 @@ namespace BlackMisc
return CVariant::fromValue(this->m_isVa); return CVariant::fromValue(this->m_isVa);
case IndexIsOperating: case IndexIsOperating:
return CVariant::fromValue(this->m_isOperating); return CVariant::fromValue(this->m_isOperating);
case IndexIsMilitary:
return CVariant::fromValue(this->m_isMilitary);
case IndexDesignatorNameCountry: case IndexDesignatorNameCountry:
return CVariant::fromValue(this->getDesignatorNameCountry()); return CVariant::fromValue(this->getDesignatorNameCountry());
default: default:
@@ -188,6 +191,9 @@ namespace BlackMisc
case IndexIsOperating: case IndexIsOperating:
this->setOperating(variant.toBool()); this->setOperating(variant.toBool());
break; break;
case IndexIsMilitary:
this->setMilitary(variant.toBool());
break;
default: default:
CValueObject::setPropertyByIndex(variant, index); CValueObject::setPropertyByIndex(variant, index);
break; break;
@@ -217,6 +223,8 @@ namespace BlackMisc
return Compare::compare(this->isVirtualAirline(), compareValue.isVirtualAirline()); return Compare::compare(this->isVirtualAirline(), compareValue.isVirtualAirline());
case IndexIsOperating: case IndexIsOperating:
return Compare::compare(this->isOperating(), compareValue.isOperating()); return Compare::compare(this->isOperating(), compareValue.isOperating());
case IndexIsMilitary:
return Compare::compare(this->isMilitary(), compareValue.isMilitary());
default: default:
break; break;
} }
@@ -301,14 +309,17 @@ namespace BlackMisc
QString name(json.value(prefix + "name").toString()); QString name(json.value(prefix + "name").toString());
QString countryIso(json.value(prefix + "country").toString()); QString countryIso(json.value(prefix + "country").toString());
QString countryName(json.value(prefix + "countryname").toString()); QString countryName(json.value(prefix + "countryname").toString());
bool va = json.value(prefix + "va").toString().startsWith("Y", Qt::CaseInsensitive); // VA bool va = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "va").toString());
bool operating = json.value(prefix + "operating").toString().startsWith("Y", Qt::CaseInsensitive); // operating bool operating = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "operating").toString());
bool military = CDatastoreUtility::dbBoolStringToBool(json.value(prefix + "military").toString());
CAirlineIcaoCode code( CAirlineIcaoCode code(
designator, name, designator, name,
CCountry(countryIso, countryName), CCountry(countryIso, countryName),
telephony, va, operating telephony, va, operating
); );
code.setIataCode(iata); code.setIataCode(iata);
code.setMilitary(military);
code.setKeyAndTimestampFromDatabaseJson(json, prefix); code.setKeyAndTimestampFromDatabaseJson(json, prefix);
return code; return code;
} }

View File

@@ -41,6 +41,7 @@ namespace BlackMisc
IndexTelephonyDesignator, IndexTelephonyDesignator,
IndexIsVirtualAirline, IndexIsVirtualAirline,
IndexIsOperating, IndexIsOperating,
IndexIsMilitary,
IndexDesignatorNameCountry, IndexDesignatorNameCountry,
}; };
@@ -107,6 +108,12 @@ namespace BlackMisc
//! Operating airline? //! Operating airline?
void setOperating(bool operating) { m_isOperating = operating; } void setOperating(bool operating) { m_isOperating = operating; }
//! Military, air force or such?
bool isMilitary() const { return m_isMilitary; }
//! Military, air force or such?
void setMilitary(bool military) { m_isMilitary = military; }
//! Country? //! Country?
bool hasValidCountry() const; bool hasValidCountry() const;
@@ -179,6 +186,7 @@ namespace BlackMisc
QString m_telephonyDesignator; //!< "Speedbird" QString m_telephonyDesignator; //!< "Speedbird"
bool m_isVa = false; //!< virtual airline bool m_isVa = false; //!< virtual airline
bool m_isOperating = true; //!< still operating? bool m_isOperating = true; //!< still operating?
bool m_isMilitary = false; //!< air force or such
}; };
} // namespace } // namespace
} // namespace } // namespace
@@ -192,7 +200,8 @@ BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::Aviation::CAirlineIcaoCode, (
o.m_country, o.m_country,
o.m_telephonyDesignator, o.m_telephonyDesignator,
o.m_isVa, o.m_isVa,
o.m_isOperating o.m_isOperating,
o.m_isMilitary
)) ))
#endif // guard #endif // guard

View File

@@ -72,6 +72,14 @@ namespace BlackMisc
}); });
} }
CAirlineIcaoCodeList CAirlineIcaoCodeList::findByMilitary(bool military) const
{
return this->findBy([&](const CAirlineIcaoCode & code)
{
return code.isMilitary() == military;
});
}
CAirlineIcaoCode CAirlineIcaoCodeList::smartAirlineIcaoSelector(const CAirlineIcaoCode &icaoPattern) const CAirlineIcaoCode CAirlineIcaoCodeList::smartAirlineIcaoSelector(const CAirlineIcaoCode &icaoPattern) const
{ {
if (icaoPattern.hasValidDbKey()) if (icaoPattern.hasValidDbKey())

View File

@@ -59,6 +59,9 @@ namespace BlackMisc
//! Find by country code //! Find by country code
CAirlineIcaoCodeList findByCountryIsoCode(const QString &isoCode) const; CAirlineIcaoCodeList findByCountryIsoCode(const QString &isoCode) const;
//! Find by military flag
CAirlineIcaoCodeList findByMilitary(bool military) const;
//! Best selection by given pattern //! Best selection by given pattern
CAirlineIcaoCode smartAirlineIcaoSelector(const CAirlineIcaoCode &icaoPattern) const; CAirlineIcaoCode smartAirlineIcaoSelector(const CAirlineIcaoCode &icaoPattern) const;