swift
autopublishdata.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2019 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_SIMULATION_AUTOPUBLISH_H
7 #define SWIFT_MISC_SIMULATION_AUTOPUBLISH_H
8 
9 #include <QMap>
10 #include <QSet>
11 
12 #include "aircraftmodellist.h"
13 #include "simulatorinfo.h"
14 
15 #include "misc/datacache.h"
16 #include "misc/directoryutils.h"
17 #include "misc/pq/length.h"
18 #include "misc/statusmessagelist.h"
19 #include "misc/swiftdirectories.h"
20 #include "misc/swiftmiscexport.h"
21 
22 namespace swift::misc::simulation
23 {
24  namespace data
25  {
27  struct TLastAutoPublish : public TDataTrait<qint64>
28  {
30  static constexpr bool isPinned() { return true; }
31 
33  static const qint64 &defaultValue()
34  {
35  static constexpr qint64 d = -1;
36  return d;
37  }
38 
40  static const char *key() { return "autopublishlast"; }
41  };
42  } // namespace data
43 
46  {
47  bool modelKnown = false;
48  bool changedCG = false;
49  bool changedSim = false;
50 
52  void setAllTrue()
53  {
54  modelKnown = true;
55  changedCG = true;
56  changedSim = true;
57  }
58  };
59 
63  {
64  public:
67  void insert(const QString &modelString, const physical_quantities::CLength &cg);
68  void insert(const QString &modelString, const CSimulatorInfo &simulator);
70 
72  void clear();
73 
75  bool isEmpty() const;
76 
78  QString toDatabaseJson() const;
79 
81  int fromDatabaseJson(const QString &jsonData, bool clear = true);
82 
85  bool writeJsonToFile() const;
86  bool writeJsonToFile(const QString &pathAndFile) const;
88 
90  bool readFromJsonFile(const QString &fileAndPath, bool clear = true);
91 
93  int readFromJsonFiles(const QString &dirPath = CSwiftDirectories::logDirectory());
94 
96  CStatusMessageList analyzeAgainstDBData(const CAircraftModelList &dbModels);
97 
99  QString getSummary() const;
100 
102  QSet<QString> allModelStrings() const;
103 
105  static const QString &fileBaseName();
106 
108  static const QString &fileAppendix();
109 
111  static bool existAutoPublishFiles(const QString &dirPath = CSwiftDirectories::logDirectory());
112 
114  static int deleteAutoPublishFiles(const QString &dirPath = CSwiftDirectories::logDirectory());
115 
116  // ----------------- testing only ---------------
117 
120  void testData();
121 
122  private:
124  static QStringList findAndCleanupPublishFiles(const QString &dirPath);
125 
127  QMap<QString, CSimulatorInfo> m_modelStringVsSimulatorInfo;
128  };
129 } // namespace swift::misc::simulation
130 
131 #endif // SWIFT_MISC_SIMULATION_AUTOPUBLISH_H
Status messages, e.g. from Core -> GUI.
static const QString & logDirectory()
Directory for log files.
Physical unit length (length)
Definition: length.h:18
Value object encapsulating a list of aircraft models.
Objects that can be use for auto-publishing. Auto publishing means we sent those data to the DB.
Simple hardcoded info about the corresponding simulator.
Definition: simulatorinfo.h:41
Base class for traits to be used as template argument to swift::misc::CData.
Definition: datacache.h:459
static constexpr bool isPinned()
First load is synchronous.
static const qint64 & defaultValue()
Default simulator.
#define SWIFT_MISC_EXPORT
Export a class or function from the library.