swift
matchingstatistics.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2017 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 SWIFT_DEFINE_SEQUENCE_MIXINS(swift::misc::simulation, CMatchingStatisticsEntry, CMatchingStatistics)
7 
8 namespace swift::misc::simulation
9 {
11 
14  {}
15 
17  {
18  return this->findBy(&CMatchingStatisticsEntry::getSessionId, sessionId);
19  }
20 
22  {
23  return this->findBy(&CMatchingStatisticsEntry::isMissing, true);
24  }
25 
26  bool CMatchingStatistics::containsSessionId(const QString &sessionId) const
27  {
28  return this->contains(&CMatchingStatisticsEntry::getSessionId, sessionId);
29  }
30 
31  bool CMatchingStatistics::containsAircraftAirlineCombination(const QString &aircraftDesignator,
32  const QString &airlineDesignator) const
33  {
34  return aircraftDesignator.isEmpty() ?
35  this->contains(&CMatchingStatisticsEntry::getAircraftDesignator, aircraftDesignator) :
38  }
39 
41  const QString &aircraftDesignator,
42  const QString &airlineDesignator) const
43  {
44  return aircraftDesignator.isEmpty() ?
50  }
51 
53  const QString &aircraftDesignator, const QString &airlineDesignator)
54  {
55  bool found = false;
56  for (CMatchingStatisticsEntry &entry : *this)
57  {
58  if (entry.matches(type, sessionId, aircraftDesignator, airlineDesignator))
59  {
60  entry.increaseCount();
61  found = true;
62  }
63  }
64  return found;
65  }
66 
68  const QString &modelSetId, const QString &description,
69  const QString &aircraftDesignator, bool avoidDuplicates)
70  {
71  if (avoidDuplicates)
72  {
73  const bool didIncrease = this->increaseCountIfFound(type, sessionId, aircraftDesignator);
74  if (didIncrease) { return; }
75  }
76  this->push_back(CMatchingStatisticsEntry(type, sessionId, modelSetId, description, aircraftDesignator));
77  }
78 
80  const QString &sessionId, const QString &modelSetId,
81  const QString &description,
82  const QString &aircraftDesignator,
83  const QString &airlineDesignator, bool avoidDuplicates)
84  {
85  if (avoidDuplicates)
86  {
87  const bool didIncrease = this->increaseCountIfFound(type, sessionId, aircraftDesignator, airlineDesignator);
88  if (didIncrease) { return; }
89  }
90  this->push_back(
91  CMatchingStatisticsEntry(type, sessionId, modelSetId, description, aircraftDesignator, airlineDesignator));
92  }
93 } // namespace swift::misc::simulation
bool contains(const T &object) const
Return true if there is an element equal to given object. Uses the most efficient implementation avai...
Definition: range.h:109
CSequence findBy(Predicate p) const
Return a copy containing only those elements for which a given predicate returns true.
Definition: sequence.h:398
void push_back(const CMatchingStatisticsEntry &value)
Appends an element at the end of the sequence.
Definition: sequence.h:305
Value object for a matching statistics entry.
bool matches(EntryType type, const QString &sessionId, const QString &aircraftDesignator, const QString &airlineDesignator) const
Matches given value?
const QString & getSessionId() const
Session id.
bool isMissing() const
Missing entry?
const QString & getAirlineDesignator() const
Get missing airline designator.
EntryType
Represents type of entry.
const QString & getAircraftDesignator() const
Get missing aircraft designator.
void increaseCount()
Count increased by one.
Value object for matching statistics.
bool increaseCountIfFound(CMatchingStatisticsEntry::EntryType type, const QString &sessionId, const QString &aircraftDesignator, const QString &airlineDesignator={})
Increase count if found.
CMatchingStatistics findBySessionId(const QString &sessionId) const
Find by session id.
bool containsAircraftAirlineCombination(const QString &aircraftDesignator, const QString &airlineDesignator) const
Contains given aircraft / airline combination.
bool containsSessionId(const QString &sessionId) const
Contains session id.
void addAircraftAirlineCombination(CMatchingStatisticsEntry::EntryType type, const QString &sessionId, const QString &modelSetId, const QString &description, const QString &aircraftDesignator, const QString &airlineDesignator, bool avoidDuplicates=true)
Add a combination, normally with no duplicates (in that case count is increased.
CMatchingStatistics findMissingOnly() const
Find entires denoting missing entries only.
void addAircraft(CMatchingStatisticsEntry::EntryType type, const QString &sessionId, const QString &modelSetId, const QString &description, const QString &aircraftDesignator, bool avoidDuplicates=true)
Add a combination, normally with no duplicates (in that case count is increased.
#define SWIFT_DEFINE_SEQUENCE_MIXINS(Namespace, T, List)
Explicit template definition of mixins for a CSequence subclass.
Definition: sequence.h:63