swift
aircrafticaocodelist.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2015 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_AVIATION_AIRCRAFTICAOCODELIST_H
7 #define SWIFT_MISC_AVIATION_AIRCRAFTICAOCODELIST_H
8 
9 #include <tuple>
10 
11 #include <QJsonArray>
12 #include <QMetaType>
13 #include <QStringList>
14 
16 #include "misc/collection.h"
18 #include "misc/sequence.h"
19 #include "misc/swiftmiscexport.h"
20 
21 SWIFT_DECLARE_SEQUENCE_MIXINS(swift::misc::aviation, CAircraftIcaoCode, CAircraftIcaoCodeList)
22 
23 namespace swift::misc::aviation
24 {
25  class CAircraftCategoryList;
26 
29  public CSequence<CAircraftIcaoCode>,
30  public db::IDatastoreObjectList<CAircraftIcaoCode, CAircraftIcaoCodeList, int>,
31  public mixin::MetaType<CAircraftIcaoCodeList>
32  {
33  public:
36 
39 
42 
44  CAircraftIcaoCodeList(std::initializer_list<CAircraftIcaoCode> il);
45 
47  CAircraftIcaoCodeList findByDesignator(const QString &designator, int fuzzySearch = -1) const;
48 
50  CAircraftIcaoCode findBestFuzzyMatchOrDefault(const QString &designator, int cutoff = 50) const;
51 
53  CAircraftIcaoCodeList findByIataCode(const QString &iata, int fuzzySearch = -1) const;
54 
56  CAircraftIcaoCodeList findByFamily(const QString &family, int fuzzySearch = -1) const;
57 
59  CAircraftIcaoCodeList findByValidDesignator() const;
60 
62  CAircraftIcaoCodeList findByInvalidDesignator() const;
63 
65  CAircraftIcaoCodeList findByDesignatorOrIataCode(const QString &icaoOrIata) const;
66 
68  CAircraftIcaoCodeList findByDesignatorIataOrFamily(const QString &icaoIataOrFamily) const;
69 
73  CAircraftIcaoCodeList findEndingWith(const QString &icaoEnding) const;
74 
76  CAircraftIcaoCodeList findByManufacturer(const QString &manufacturer) const;
77 
79  CAircraftIcaoCodeList findByDescription(const QString &description) const;
80 
82  CAircraftIcaoCodeList findMatchingByAnyDescription(const QString &description) const;
83 
85  CAircraftIcaoCodeList findWithIataCode(bool removeWhenSameAsDesignator) const;
86 
88  CAircraftIcaoCodeList findWithFamily(bool removeWhenSameAsDesignator) const;
89 
91  CAircraftIcaoCodeList findByMilitaryFlag(bool military) const;
92 
94  CAircraftIcaoCode findFirstByDesignatorAndRank(const QString &designator) const;
95 
97  bool containsDesignator(const QString &designator) const;
98 
100  CAircraftIcaoCode smartAircraftIcaoSelector(const CAircraftIcaoCode &icaoPattern) const;
101 
103  CAircraftIcaoCodeList groupByDesignatorAndManufacturer() const;
104 
106  void sortByRank();
107 
109  void sortByDesignatorAndRank();
110 
112  void sortByDesignatorManufacturerAndRank();
113 
115  void removeInvalidCombinedCodes();
116 
118  void removeDuplicates();
119 
121  QStringList toCompleterStrings(bool withIataCodes = false, bool withFamily = false, bool withCategory = true,
122  bool sort = true) const;
123 
125  QSet<QString> allDesignators(bool noUnspecified = true) const;
126 
128  QSet<QString> allDesignatorsAndKey(bool noUnspecified = true) const;
129 
131  QSet<QString> allFamilies() const;
132 
134  QSet<QString> allManufacturers(bool onlyKnownDesignators = true) const;
135 
137  QMap<QString, int> countManufacturers() const;
138 
140  QPair<QString, int> maxCountManufacturer() const;
141 
143  static CAircraftIcaoCodeList fromDatabaseJson(const QJsonArray &array, const CAircraftCategoryList &categories,
144  bool ignoreIncompleteAndDuplicates = true,
145  CAircraftIcaoCodeList *inconsistent = nullptr);
146  };
147 } // namespace swift::misc::aviation
148 
151 
152 #endif // SWIFT_MISC_AVIATION_AIRCRAFTICAOCODELIST_H
Generic ordered container with value semantics.
Definition: collection.h:107
Generic sequential container with value semantics.
Definition: sequence.h:86
CSequence()=default
Default constructor.
Value object encapsulating a list of ICAO codes.
Value object for ICAO classification.
Value object encapsulating a list of ICAO codes.
List of objects read from database. Such objects should implement.
CRTP class template from which a derived class can inherit common methods dealing with the metatype o...
Definition: mixinmetatype.h:29
#define SWIFT_MISC_DECLARE_USING_MIXIN_METATYPE(DERIVED)
When a derived class and a base class both inherit from mixin::MetaType, the derived class uses this ...
#define SWIFT_DECLARE_SEQUENCE_MIXINS(Namespace, T, List)
Explicit template declaration of mixins for a CSequence subclass to be placed near the top of the hea...
Definition: sequence.h:62
#define SWIFT_MISC_EXPORT
Export a class or function from the library.