From 33d4cf82eab42bc04a56e1db826842fad257e757 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 7 Feb 2018 05:23:25 +0100 Subject: [PATCH] Ref T242, null functions for livery, airline, aircraft --- src/blackmisc/aviation/aircrafticaocode.cpp | 11 +++++++++++ src/blackmisc/aviation/aircrafticaocode.h | 6 ++++++ src/blackmisc/aviation/airlineicaocode.cpp | 11 +++++++++++ src/blackmisc/aviation/airlineicaocode.h | 6 ++++++ src/blackmisc/aviation/livery.cpp | 11 +++++++++++ src/blackmisc/aviation/livery.h | 6 ++++++ 6 files changed, 51 insertions(+) diff --git a/src/blackmisc/aviation/aircrafticaocode.cpp b/src/blackmisc/aviation/aircrafticaocode.cpp index 1d5dec8be..a1391c62b 100644 --- a/src/blackmisc/aviation/aircrafticaocode.cpp +++ b/src/blackmisc/aviation/aircrafticaocode.cpp @@ -196,6 +196,17 @@ namespace BlackMisc return score; } + bool CAircraftIcaoCode::isNull() const + { + return m_designator.isEmpty() && m_manufacturer.isEmpty() && m_modelDescription.isEmpty(); + } + + const CAircraftIcaoCode &CAircraftIcaoCode::null() + { + static const CAircraftIcaoCode null; + return null; + } + bool CAircraftIcaoCode::hasDesignator() const { return !m_designator.isEmpty(); diff --git a/src/blackmisc/aviation/aircrafticaocode.h b/src/blackmisc/aviation/aircrafticaocode.h index ef75a0ae0..3e04e766f 100644 --- a/src/blackmisc/aviation/aircrafticaocode.h +++ b/src/blackmisc/aviation/aircrafticaocode.h @@ -291,6 +291,12 @@ namespace BlackMisc //! \remark normally used with a selected set of ICAO codes or combined types int calculateScore(const CAircraftIcaoCode &otherCode, CStatusMessageList *log = nullptr) const; + //! Null ICAO? + bool isNull() const; + + //! NULL object + static const CAircraftIcaoCode &null(); + //! Valid designator? static bool isValidDesignator(const QString &designator); diff --git a/src/blackmisc/aviation/airlineicaocode.cpp b/src/blackmisc/aviation/airlineicaocode.cpp index a7e0c4e17..6111e373c 100644 --- a/src/blackmisc/aviation/airlineicaocode.cpp +++ b/src/blackmisc/aviation/airlineicaocode.cpp @@ -410,6 +410,17 @@ namespace BlackMisc return score; } + bool CAirlineIcaoCode::isNull() const + { + return m_designator.isNull() && m_iataCode.isNull() && m_telephonyDesignator.isNull(); + } + + const CAirlineIcaoCode &CAirlineIcaoCode::null() + { + static const CAirlineIcaoCode null; + return null; + } + CAirlineIcaoCode CAirlineIcaoCode::fromDatabaseJson(const QJsonObject &json, const QString &prefix) { if (!existsKey(json, prefix)) diff --git a/src/blackmisc/aviation/airlineicaocode.h b/src/blackmisc/aviation/airlineicaocode.h index 82e9d59bd..5773d82ed 100644 --- a/src/blackmisc/aviation/airlineicaocode.h +++ b/src/blackmisc/aviation/airlineicaocode.h @@ -228,6 +228,12 @@ namespace BlackMisc //! Score against other code 0..100 int calculateScore(const CAirlineIcaoCode &otherCode, CStatusMessageList *log = nullptr) const; + //! Null ICAO? + bool isNull() const; + + //! NULL object + static const CAirlineIcaoCode &null(); + //! Valid designator? static bool isValidAirlineDesignator(const QString &airline); diff --git a/src/blackmisc/aviation/livery.cpp b/src/blackmisc/aviation/livery.cpp index ad3a51e0f..c8c923bf0 100644 --- a/src/blackmisc/aviation/livery.cpp +++ b/src/blackmisc/aviation/livery.cpp @@ -423,5 +423,16 @@ namespace BlackMisc } return score; } + + bool CLivery::isNull() const + { + return m_airline.isNull() && m_combinedCode.isEmpty() && m_description.isEmpty(); + } + + const CLivery &CLivery::null() + { + static const CLivery null; + return null; + } } // namespace } // namespace diff --git a/src/blackmisc/aviation/livery.h b/src/blackmisc/aviation/livery.h index 1fd254a9a..ea17bda4c 100644 --- a/src/blackmisc/aviation/livery.h +++ b/src/blackmisc/aviation/livery.h @@ -180,6 +180,12 @@ namespace BlackMisc //! \remark normally used with liveries preselect by airline ICAO code int calculateScore(const CLivery &otherLivery, bool preferColorLiveries = false, CStatusMessageList *log = nullptr) const; + //! Null livery? + bool isNull() const; + + //! NULL object + static const CLivery &null(); + //! Object from JSON static CLivery fromDatabaseJson(const QJsonObject &json, const QString &prefix = QString("liv_"));