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 {
12  {}
13 
15  {
16  return this->findBy(&CMatchingStatisticsEntry::getSessionId, sessionId);
17  }
18 
20  {
21  return this->findBy(&CMatchingStatisticsEntry::isMissing, true);
22  }
23 
24  bool CMatchingStatistics::containsSessionId(const QString &sessionId) const
25  {
26  return this->contains(&CMatchingStatisticsEntry::getSessionId, sessionId);
27  }
28 
30  const QString &airlineDesignator) const
31  {
32  return aircraftDesignator.isEmpty() ?
33  this->contains(&CMatchingStatisticsEntry::getAircraftDesignator, aircraftDesignator) :
36  }
37 
39  const QString &aircraftDesignator,
40  const QString &airlineDesignator) const
41  {
42  return aircraftDesignator.isEmpty() ?
48  }
49 
51  const QString &aircraftDesignator, const QString &airlineDesignator)
52  {
53  bool found = false;
54  for (CMatchingStatisticsEntry &entry : *this)
55  {
56  if (entry.matches(type, sessionId, aircraftDesignator, airlineDesignator))
57  {
58  entry.increaseCount();
59  found = true;
60  }
61  }
62  return found;
63  }
64 
66  const QString &modelSetId, const QString &description,
67  const QString &aircraftDesignator, bool avoidDuplicates)
68  {
69  if (avoidDuplicates)
70  {
71  const bool didIncrease = this->increaseCountIfFound(type, sessionId, aircraftDesignator);
72  if (didIncrease) { return; }
73  }
74  this->push_back(CMatchingStatisticsEntry(type, sessionId, modelSetId, description, aircraftDesignator));
75  }
76 
78  const QString &sessionId, const QString &modelSetId,
79  const QString &description,
80  const QString &aircraftDesignator,
81  const QString &airlineDesignator, bool avoidDuplicates)
82  {
83  if (avoidDuplicates)
84  {
85  const bool didIncrease = this->increaseCountIfFound(type, sessionId, aircraftDesignator, airlineDesignator);
86  if (didIncrease) { return; }
87  }
88  this->push_back(
89  CMatchingStatisticsEntry(type, sessionId, modelSetId, description, aircraftDesignator, airlineDesignator));
90  }
91 } // 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.
CMatchingStatistics()=default
Default constructor.
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.
bool isEmpty() const const
#define SWIFT_DEFINE_SEQUENCE_MIXINS(Namespace, T, List)
Explicit template definition of mixins for a CSequence subclass.
Definition: sequence.h:63