mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-05 09:15:34 +08:00
refs #748 Support database format in CAirportDataReader
* CAirport is now database object * CAirportList is now datastore object list * CAirportDataReader adjustments
This commit is contained in:
committed by
Mathew Sutcliffe
parent
a4b5b28cc1
commit
cf3e9f1f67
@@ -74,6 +74,24 @@ namespace BlackMisc
|
||||
setPosition(pos);
|
||||
}
|
||||
|
||||
CAirport CAirport::fromDatabaseJson(const QJsonObject &json, const QString &prefix)
|
||||
{
|
||||
CAirport airport(json.value("icao").toString());
|
||||
airport.setDescriptiveName(json.value("name").toString());
|
||||
airport.setElevation(CLength(json.value("altitude").toInt(), CLengthUnit::ft()));
|
||||
CCoordinateGeodetic pos(json.value("latitude").toDouble(), json.value("longitude").toDouble(), 0);
|
||||
airport.setPosition(pos);
|
||||
|
||||
if (json.value("alpha3").isString() && json.value("country").isString())
|
||||
{
|
||||
CCountry country(json.value("alpha3").toString(), json.value("country").toString());
|
||||
airport.setCountry(country);
|
||||
}
|
||||
|
||||
airport.setKeyAndTimestampFromDatabaseJson(json, prefix);
|
||||
return airport;
|
||||
}
|
||||
|
||||
CVariant CAirport::propertyByIndex(const BlackMisc::CPropertyIndex &index) const
|
||||
{
|
||||
if (index.isMyself()) { return CVariant::from(*this); }
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
#include "blackmisc/aviation/airporticaocode.h"
|
||||
#include "blackmisc/blackmiscexport.h"
|
||||
#include "blackmisc/db/datastore.h"
|
||||
#include "blackmisc/geo/coordinategeodetic.h"
|
||||
#include "blackmisc/geo/latitude.h"
|
||||
#include "blackmisc/geo/longitude.h"
|
||||
@@ -34,7 +35,10 @@ namespace BlackMisc
|
||||
namespace Aviation
|
||||
{
|
||||
//! Value object encapsulating information about an airpot.
|
||||
class BLACKMISC_EXPORT CAirport : public CValueObject<CAirport>, public Geo::ICoordinateWithRelativePosition
|
||||
class BLACKMISC_EXPORT CAirport :
|
||||
public CValueObject<CAirport>,
|
||||
public BlackMisc::Db::IDatastoreObjectWithIntegerKey,
|
||||
public Geo::ICoordinateWithRelativePosition
|
||||
{
|
||||
public:
|
||||
//! Properties by index
|
||||
@@ -134,6 +138,9 @@ namespace BlackMisc
|
||||
//! \copydoc BlackMisc::CValueObject::convertFromJson
|
||||
void convertFromDatabaseJson(const QJsonObject &json);
|
||||
|
||||
//! Object from JSON
|
||||
static CAirport fromDatabaseJson(const QJsonObject &json, const QString &prefix = QString("apt_"));
|
||||
|
||||
private:
|
||||
CAirportIcaoCode m_icao;
|
||||
QString m_descriptiveName;
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "blackmisc/aviation/airporticaocode.h"
|
||||
#include "blackmisc/blackmiscexport.h"
|
||||
#include "blackmisc/collection.h"
|
||||
#include "blackmisc/db/datastoreobjectlist.h"
|
||||
#include "blackmisc/geo/geoobjectlist.h"
|
||||
#include "blackmisc/sequence.h"
|
||||
#include "blackmisc/variant.h"
|
||||
@@ -29,6 +30,7 @@ namespace BlackMisc
|
||||
//! Value object for a list of airports.
|
||||
class BLACKMISC_EXPORT CAirportList :
|
||||
public CSequence<CAirport>,
|
||||
public BlackMisc::Db::IDatastoreObjectList<CAirport, CAirportList, int>,
|
||||
public BlackMisc::Geo::IGeoObjectWithRelativePositionList<CAirport, CAirportList>,
|
||||
public BlackMisc::Mixin::MetaType<CAirportList>
|
||||
{
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
#include "blackmisc/db/datastoreobjectlist.h"
|
||||
#include "blackmisc/predicates.h"
|
||||
#include "blackmisc/countrylist.h"
|
||||
#include "blackmisc/aviation/airport.h"
|
||||
#include "blackmisc/aviation/airportlist.h"
|
||||
#include "blackmisc/aviation/liverylist.h"
|
||||
#include "blackmisc/aviation/aircrafticaocodelist.h"
|
||||
#include "blackmisc/aviation/airlineicaocodelist.h"
|
||||
@@ -170,6 +172,7 @@ namespace BlackMisc
|
||||
template class IDatastoreObjectList<BlackMisc::Simulation::CAircraftModel, BlackMisc::Simulation::CAircraftModelList, int>;
|
||||
template class IDatastoreObjectList<BlackMisc::Simulation::CDistributor, BlackMisc::Simulation::CDistributorList, QString>;
|
||||
template class IDatastoreObjectList<BlackMisc::CCountry, BlackMisc::CCountryList, QString>;
|
||||
template class IDatastoreObjectList<BlackMisc::Aviation::CAirport, BlackMisc::Aviation::CAirportList, int>;
|
||||
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
@@ -66,20 +66,6 @@ namespace BlackMisc
|
||||
class CDbInfo;
|
||||
class CDbInfoList;
|
||||
|
||||
namespace Aviation
|
||||
{
|
||||
class CLivery;
|
||||
class CLiveryList;
|
||||
}
|
||||
|
||||
namespace Simulation
|
||||
{
|
||||
class CDistributor;
|
||||
class CDistributorList;
|
||||
class CAircraftModel;
|
||||
class CAircraftModelList;
|
||||
}
|
||||
|
||||
extern template class BLACKMISC_EXPORT_TEMPLATE IDatastoreObjectList<BlackMisc::Aviation::CLivery, BlackMisc::Aviation::CLiveryList, int>;
|
||||
extern template class BLACKMISC_EXPORT_TEMPLATE IDatastoreObjectList<BlackMisc::Aviation::CAircraftIcaoCode, BlackMisc::Aviation::CAircraftIcaoCodeList, int>;
|
||||
extern template class BLACKMISC_EXPORT_TEMPLATE IDatastoreObjectList<BlackMisc::Aviation::CAirlineIcaoCode, BlackMisc::Aviation::CAirlineIcaoCodeList, int>;
|
||||
@@ -87,6 +73,7 @@ namespace BlackMisc
|
||||
extern template class BLACKMISC_EXPORT_TEMPLATE IDatastoreObjectList<BlackMisc::Simulation::CAircraftModel, BlackMisc::Simulation::CAircraftModelList, int>;
|
||||
extern template class BLACKMISC_EXPORT_TEMPLATE IDatastoreObjectList<BlackMisc::Simulation::CDistributor, BlackMisc::Simulation::CDistributorList, QString>;
|
||||
extern template class BLACKMISC_EXPORT_TEMPLATE IDatastoreObjectList<BlackMisc::CCountry, BlackMisc::CCountryList, QString>;
|
||||
extern template class BLACKMISC_EXPORT_TEMPLATE IDatastoreObjectList<BlackMisc::Aviation::CAirport, BlackMisc::Aviation::CAirportList, int>;
|
||||
//! \endcond
|
||||
|
||||
} // ns
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
#include "blackmisc/aviation/liverylist.h"
|
||||
#include "blackmisc/aviation/aircrafticaocodelist.h"
|
||||
#include "blackmisc/aviation/airlineicaocodelist.h"
|
||||
#include "blackmisc/aviation/airport.h"
|
||||
#include "blackmisc/aviation/airportlist.h"
|
||||
#include "blackmisc/db/dbinfolist.h"
|
||||
#include "blackmisc/network/textmessage.h"
|
||||
#include "blackmisc/network/textmessagelist.h"
|
||||
@@ -208,6 +210,7 @@ namespace BlackMisc
|
||||
template class ITimestampObjectList<BlackMisc::Aviation::CLivery, BlackMisc::Aviation::CLiveryList>;
|
||||
template class ITimestampObjectList<BlackMisc::Aviation::CAircraftIcaoCode, BlackMisc::Aviation::CAircraftIcaoCodeList>;
|
||||
template class ITimestampObjectList<BlackMisc::Aviation::CAirlineIcaoCode, BlackMisc::Aviation::CAirlineIcaoCodeList>;
|
||||
template class ITimestampObjectList<BlackMisc::Aviation::CAirport, BlackMisc::Aviation::CAirportList>;
|
||||
template class ITimestampObjectList<BlackMisc::Db::CDbInfo, BlackMisc::Db::CDbInfoList>;
|
||||
template class ITimestampObjectList<BlackMisc::Simulation::CAircraftModel, BlackMisc::Simulation::CAircraftModelList>;
|
||||
template class ITimestampObjectList<BlackMisc::Simulation::CDistributor, BlackMisc::Simulation::CDistributorList>;
|
||||
|
||||
@@ -104,6 +104,8 @@ namespace BlackMisc
|
||||
class CAircraftSituationList;
|
||||
class CAircraftParts;
|
||||
class CAircraftPartsList;
|
||||
class CAirport;
|
||||
class CAirportList;
|
||||
class CLivery;
|
||||
class CLiveryList;
|
||||
class CAircraftIcaoCode;
|
||||
@@ -144,6 +146,7 @@ namespace BlackMisc
|
||||
extern template class BLACKMISC_EXPORT_TEMPLATE ITimestampObjectList<BlackMisc::Aviation::CLivery, BlackMisc::Aviation::CLiveryList>;
|
||||
extern template class BLACKMISC_EXPORT_TEMPLATE ITimestampObjectList<BlackMisc::Aviation::CAircraftIcaoCode, BlackMisc::Aviation::CAircraftIcaoCodeList>;
|
||||
extern template class BLACKMISC_EXPORT_TEMPLATE ITimestampObjectList<BlackMisc::Aviation::CAirlineIcaoCode, BlackMisc::Aviation::CAirlineIcaoCodeList>;
|
||||
extern template class BLACKMISC_EXPORT_TEMPLATE ITimestampObjectList<BlackMisc::Aviation::CAirport, BlackMisc::Aviation::CAirportList>;
|
||||
extern template class BLACKMISC_EXPORT_TEMPLATE ITimestampObjectList<BlackMisc::Db::CDbInfo, BlackMisc::Db::CDbInfoList>;
|
||||
extern template class BLACKMISC_EXPORT_TEMPLATE ITimestampObjectList<BlackMisc::Simulation::CAircraftModel, BlackMisc::Simulation::CAircraftModelList>;
|
||||
extern template class BLACKMISC_EXPORT_TEMPLATE ITimestampObjectList<BlackMisc::Simulation::CDistributor, BlackMisc::Simulation::CDistributorList>;
|
||||
|
||||
Reference in New Issue
Block a user