refs #784 Use CMemoTable to implement a compact JSON schema for CAircraftModelList.

This commit is contained in:
Mathew Sutcliffe
2016-10-25 22:42:34 +01:00
committed by Klaus Basan
parent f6f2d38821
commit 45bb9a2737
4 changed files with 70 additions and 1 deletions

View File

@@ -13,7 +13,6 @@
#include "blackmisc/aviation/livery.h"
#include "blackmisc/compare.h"
#include "blackmisc/iterator.h"
#include "blackmisc/metaclassprivate.h"
#include "blackmisc/range.h"
#include "blackmisc/statusmessage.h"
@@ -614,6 +613,38 @@ namespace BlackMisc
return msgs;
}
QJsonObject CAircraftModelList::toMemoizedJson() const
{
CAircraftModel::MemoHelper::CMemoizer helper;
QJsonArray array;
for (auto it = cbegin(); it != cend(); ++it)
{
array << it->toMemoizedJson(helper);
}
QJsonObject json;
json.insert("containerbase", array);
json.insert("aircraftIcaos", helper.getTable<CAircraftIcaoCode>().toJson());
json.insert("liveries", helper.getTable<CLivery>().toJson());
json.insert("distributors", helper.getTable<CDistributor>().toJson());
return json;
}
void CAircraftModelList::convertFromMemoizedJson(const QJsonObject &json)
{
clear();
QJsonArray array = json.value("containerbase").toArray();
CAircraftModel::MemoHelper::CUnmemoizer helper;
helper.getTable<CAircraftIcaoCode>().convertFromJson(json.value("aircraftIcaos").toObject());
helper.getTable<CLivery>().convertFromJson(json.value("liveries").toObject());
helper.getTable<CDistributor>().convertFromJson(json.value("distributors").toObject());
for (auto i = array.begin(); i != array.end(); ++i)
{
CAircraftModel value;
value.convertFromMemoizedJson(i->toObject(), helper);
insert(value);
}
}
QJsonArray CAircraftModelList::toDatabaseJson() const
{
QJsonArray array;