swift
samplesjson.cpp
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
6 
7 #include "samplesjson.h"
8 
9 #include <stdio.h>
10 
11 #include <QDateTime>
12 #include <QDebug>
13 #include <QJsonDocument>
14 #include <QJsonObject>
15 #include <QTextStream>
16 #include <QtDebug>
17 
21 #include "misc/aviation/altitude.h"
24 #include "misc/aviation/callsign.h"
26 #include "misc/aviation/heading.h"
29 #include "misc/network/user.h"
30 #include "misc/pq/angle.h"
31 #include "misc/pq/frequency.h"
32 #include "misc/pq/length.h"
33 #include "misc/pq/speed.h"
34 #include "misc/pq/units.h"
36 #include "misc/stringutils.h"
37 #include "misc/test/testdata.h"
38 
39 using namespace swift::misc;
40 using namespace swift::misc::aviation;
41 using namespace swift::misc::simulation;
42 using namespace swift::misc::physical_quantities;
43 using namespace swift::misc::geo;
44 using namespace swift::misc::network;
45 using namespace swift::misc::test;
46 
47 namespace swift::sample
48 {
49  int CSamplesJson::samples()
50  {
51  QTextStream cin(stdin);
52  CLength l(123.456, CLengthUnit::NM());
53  QJsonObject json = l.toJson();
54  l = CLength(); // convert back
55  l.convertFromJson(json);
56  qDebug() << json << l;
57  qDebug() << "-------";
58  CAtcStation station = CTestData::getMunichTower();
59  json = station.toJson();
60  QJsonDocument doc(json);
61  qDebug().noquote() << doc.toJson(QJsonDocument::Indented);
62  qDebug() << "-------";
63 
64  station = CAtcStation();
65  station.convertFromJson(json);
66  qDebug() << station;
67  qDebug() << "------- Enter -----";
68  cin.readLine();
69 
70  CSimulatedAircraft aircraft(CCallsign("DAMBZ"), CUser("123456", "Joe Pilot"),
71  CTestData::getAircraftSituationAboveMunichTower());
72  aircraft.setCom1System(CComSystem::getCom1System(122.8, 118.75));
73  aircraft.setCom2System(CComSystem::getCom2System(123.8, 124.00));
74  aircraft.setTransponder(CTransponder::getStandardTransponder(7000, CTransponder::ModeC));
75  aircraft.setIcaoCodes(CTestData::getDBAircraftIcaoB737(), CAirlineIcaoCode("DLH"));
76 
77  json = aircraft.toJson();
78  doc = QJsonDocument(json);
79  qDebug() << doc.toJson(QJsonDocument::Indented);
80  qDebug() << "-------";
81 
82  aircraft = CSimulatedAircraft();
83  aircraft.convertFromJson(json);
84  qDebug() << aircraft;
85  qDebug() << "------- Enter -----";
86  cin.readLine();
87 
88  CAtcStationList stations = CTestData::getAtcStations();
89  json = stations.toJson();
90  doc.setObject(json);
91  qDebug() << doc.toJson(QJsonDocument::Indented);
92  qDebug() << "------- Enter -----";
93  cin.readLine();
94 
95  stations.clear();
96  stations.convertFromJson(json);
97  qDebug() << stations;
98  qDebug() << "------- Enter -----";
99  cin.readLine();
100 
101  // testing escaping special characters
102  CUser specialCharacters("123456", "With quote \"", "With double quote\"\"", "foobar");
103  json = specialCharacters.toJson();
104  doc.setObject(json);
105  qDebug() << doc.toJson(QJsonDocument::Indented);
106 
107  qDebug() << "------- Enter ---------------------------------";
108  cin.readLine();
109 
110  return 0;
111  }
112 } // namespace swift::sample
QJsonObject toJson() const
Cast to JSON object.
void convertFromJson(const QJsonObject &json)
Assign from JSON object.
void clear()
Removes all elements in the sequence.
Definition: sequence.h:288
Value object for ICAO classification.
Value object encapsulating information about an ATC station.
Definition: atcstation.h:38
Value object for a list of ATC stations.
Value object encapsulating information of a callsign.
Definition: callsign.h:30
static CComSystem getCom1System(double activeFrequencyMHz, double standbyFrequencyMHz=-1)
COM1 unit.
Definition: comsystem.cpp:64
static CComSystem getCom2System(double activeFrequencyMHz, double standbyFrequencyMHz=-1)
COM2 unit.
Definition: comsystem.cpp:79
static CTransponder getStandardTransponder(qint32 transponderCode, TransponderMode mode)
Transponder unit.
void convertFromJson(const QJsonObject &json)
Assign from JSON object.
Definition: mixinjson.h:153
QJsonObject toJson() const
Cast to JSON object.
Definition: mixinjson.h:132
Value object encapsulating information of a user.
Definition: user.h:28
Physical unit length (length)
Definition: length.h:18
QJsonObject toJson() const
Cast to JSON object.
void convertFromJson(const QJsonObject &json)
Assign from JSON object.
Comprehensive information of an aircraft.
void setCom1System(const aviation::CComSystem &comSystem)
Set COM1 system.
void setTransponder(const aviation::CTransponder &transponder)
Set transponder.
void setCom2System(const aviation::CComSystem &comSystem)
Set COM2 system.
bool setIcaoCodes(const aviation::CAircraftIcaoCode &aircraftIcaoCode, const aviation::CAirlineIcaoCode &airlineIcaoCode)
Set ICAO info.
Generate data for testing purposes.
Definition: testdata.h:45
Free functions in swift::misc.