mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-05 01:05:34 +08:00
refs #445, value objects and containers
* common base class for DB based classes * common base class for DB based containers * Livery, distributor value class * adjusted value classes to livery * utility functions for DB values (blackmisc free functions) * register new objects with metadata system
This commit is contained in:
committed by
Mathew Sutcliffe
parent
99b7c52383
commit
25fd0f4f2d
@@ -15,6 +15,9 @@
|
||||
#include <tuple>
|
||||
#include <QRegularExpression>
|
||||
|
||||
|
||||
using namespace BlackMisc;
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
namespace Aviation
|
||||
@@ -24,10 +27,21 @@ namespace BlackMisc
|
||||
: m_designator(airlineDesignator.trimmed().toUpper())
|
||||
{}
|
||||
|
||||
CAirlineIcaoCode::CAirlineIcaoCode(const QString &airlineDesignator, const QString &airlineName, const QString &country, const QString &telephony, bool virtualAirline)
|
||||
: m_designator(airlineDesignator), m_name(airlineName), m_country(country), m_telephonyDesignator(telephony), m_isVa(virtualAirline)
|
||||
CAirlineIcaoCode::CAirlineIcaoCode(const QString &airlineDesignator, const QString &airlineName, const QString &countryIso, const QString &country, const QString &telephony, bool virtualAirline)
|
||||
: m_designator(airlineDesignator.trimmed().toUpper()), m_name(airlineName), m_countryIso(countryIso.trimmed().toUpper()), m_country(country), m_telephonyDesignator(telephony), m_isVa(virtualAirline)
|
||||
{}
|
||||
|
||||
const QString CAirlineIcaoCode::getVDesignator() const
|
||||
{
|
||||
if (!isVirtualAirline()) { return this->m_designator; }
|
||||
return QString("V").append(this->m_designator);
|
||||
}
|
||||
|
||||
bool CAirlineIcaoCode::hasCompleteData() const
|
||||
{
|
||||
return this->hasDesignator() && this->hasCountryIso() && this->hasName();
|
||||
}
|
||||
|
||||
QString CAirlineIcaoCode::convertToQString(bool i18n) const
|
||||
{
|
||||
Q_UNUSED(i18n);
|
||||
@@ -38,11 +52,14 @@ namespace BlackMisc
|
||||
CVariant CAirlineIcaoCode::propertyByIndex(const BlackMisc::CPropertyIndex &index) const
|
||||
{
|
||||
if (index.isMyself()) { return CVariant::from(*this); }
|
||||
if (IDatastoreObjectWithIntegerKey::canHandleIndex(index)) { return IDatastoreObjectWithIntegerKey::propertyByIndex(index); }
|
||||
ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
switch (i)
|
||||
{
|
||||
case IndexAirlineDesignator:
|
||||
return CVariant::fromValue(this->m_designator);
|
||||
case IndexAirlineCountryIso:
|
||||
return CVariant::fromValue(this->m_countryIso);
|
||||
case IndexAirlineCountry:
|
||||
return CVariant::fromValue(this->m_country);
|
||||
case IndexAirlineName:
|
||||
@@ -59,12 +76,16 @@ namespace BlackMisc
|
||||
void CAirlineIcaoCode::setPropertyByIndex(const CVariant &variant, const BlackMisc::CPropertyIndex &index)
|
||||
{
|
||||
if (index.isMyself()) { (*this) = variant.to<CAirlineIcaoCode>(); return; }
|
||||
if (IDatastoreObjectWithIntegerKey::canHandleIndex(index)) { IDatastoreObjectWithIntegerKey::setPropertyByIndex(variant, index); return; }
|
||||
ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
switch (i)
|
||||
{
|
||||
case IndexAirlineDesignator:
|
||||
this->setDesignator(variant.value<QString>());
|
||||
break;
|
||||
case IndexAirlineCountryIso:
|
||||
this->setCountryIso(variant.value<QString>());
|
||||
break;
|
||||
case IndexAirlineCountry:
|
||||
this->setCountry(variant.value<QString>());
|
||||
break;
|
||||
@@ -92,15 +113,25 @@ namespace BlackMisc
|
||||
|
||||
CAirlineIcaoCode CAirlineIcaoCode::fromDatabaseJson(const QJsonObject &json)
|
||||
{
|
||||
// https://ubuntu12/vatrep/public/service/allairlineicao.php?rows=10
|
||||
QJsonArray inner = json["cell"].toArray();
|
||||
Q_ASSERT_X(!inner.isEmpty(), Q_FUNC_INFO, "Missing JSON");
|
||||
if (inner.isEmpty()) { return CAirlineIcaoCode(); }
|
||||
|
||||
int i = 0;
|
||||
int dbKey = inner.at(i++).toInt(-1);
|
||||
QString designator(inner.at(i++).toString());
|
||||
QString vDesignator(inner.at(i++).toString());
|
||||
Q_UNUSED(vDesignator);
|
||||
QString telephony(inner.at(i++).toString());
|
||||
QString name(inner.at(i++).toString());
|
||||
QString countryIso(inner.at(i++).toString());
|
||||
QString country(inner.at(i++).toString());
|
||||
bool va = inner.at(i++).toString().startsWith("Y", Qt::CaseInsensitive); // VA
|
||||
CAirlineIcaoCode code(
|
||||
inner.at(1).toString(),
|
||||
inner.at(3).toString(), // name
|
||||
inner.at(4).toString(), // country
|
||||
inner.at(2).toString(), // telephony
|
||||
inner.at(5).toString().startsWith("Y") // VA
|
||||
designator, name, countryIso, country, telephony, va
|
||||
);
|
||||
code.setDbKey(dbKey);
|
||||
return code;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user