57 ,
created(QDateTime::currentDateTimeUtc())
58 ,
modified(QDateTime::currentDateTimeUtc())
68 json[QLatin1String(
"mna_version")] =
mnaVersion;
69 json[QLatin1String(
"name")] =
name;
71 json[QLatin1String(
"created")] =
created.toString(Qt::ISODate);
72 json[QLatin1String(
"modified")] =
modified.toString(Qt::ISODate);
76 subjArr.append(s.toJson());
78 json[QLatin1String(
"subjects")] = subjArr;
82 pipeArr.append(nd.toJson());
84 json[QLatin1String(
"pipeline")] = pipeArr;
94 proj.
mnaVersion = json[QLatin1String(
"mna_version")].toString();
95 proj.
name = json[QLatin1String(
"name")].toString();
96 proj.
description = json[QLatin1String(
"description")].toString();
97 proj.
created = QDateTime::fromString(json[QLatin1String(
"created")].toString(), Qt::ISODate);
98 proj.
modified = QDateTime::fromString(json[QLatin1String(
"modified")].toString(), Qt::ISODate);
100 const QJsonArray subjArr = json[QLatin1String(
"subjects")].toArray();
101 for(
const QJsonValue& v : subjArr) {
105 const QJsonArray pipeArr = json[QLatin1String(
"pipeline")].toArray();
106 for(
const QJsonValue& v : pipeArr) {
111 static const QSet<QString> knownKeys = {
112 QStringLiteral(
"mna_version"), QStringLiteral(
"name"),
113 QStringLiteral(
"description"), QStringLiteral(
"created"),
114 QStringLiteral(
"modified"), QStringLiteral(
"subjects"),
115 QStringLiteral(
"pipeline")
117 for (
auto it = json.constBegin(); it != json.constEnd(); ++it) {
118 if (!knownKeys.contains(it.key()))
119 proj.
extras.insert(it.key(), it.value());
130 QCborMap cbor = QCborMap::fromJsonObject(
extras);
131 cbor[QLatin1String(
"mna_version")] =
mnaVersion;
132 cbor[QLatin1String(
"name")] =
name;
134 cbor[QLatin1String(
"created")] = QCborValue(
created);
135 cbor[QLatin1String(
"modified")] = QCborValue(
modified);
139 subjArr.append(s.toCbor());
141 cbor[QLatin1String(
"subjects")] = subjArr;
145 pipeArr.append(nd.toCbor());
147 cbor[QLatin1String(
"pipeline")] = pipeArr;
157 proj.
mnaVersion = cbor[QLatin1String(
"mna_version")].toString();
158 proj.
name = cbor[QLatin1String(
"name")].toString();
159 proj.
description = cbor[QLatin1String(
"description")].toString();
160 proj.
created = cbor[QLatin1String(
"created")].toDateTime();
161 proj.
modified = cbor[QLatin1String(
"modified")].toDateTime();
163 const QCborArray subjArr = cbor[QLatin1String(
"subjects")].toArray();
164 for(
const QCborValue& v : subjArr) {
168 const QCborArray pipeArr = cbor[QLatin1String(
"pipeline")].toArray();
169 for(
const QCborValue& v : pipeArr) {
174 static const QSet<QString> knownKeys = {
175 QStringLiteral(
"mna_version"), QStringLiteral(
"name"),
176 QStringLiteral(
"description"), QStringLiteral(
"created"),
177 QStringLiteral(
"modified"), QStringLiteral(
"subjects"),
178 QStringLiteral(
"pipeline")
180 QJsonObject cborJson = cbor.toJsonObject();
181 for (
auto it = cborJson.constBegin(); it != cborJson.constEnd(); ++it) {
182 if (!knownKeys.contains(it.key()))
183 proj.
extras.insert(it.key(), it.value());
MnaProject class declaration.
MNE Analysis Container Format (mna/mnx).
static bool write(const MnaProject &project, const QString &path)
static MnaProject read(const QString &path)
Graph node representing a processing step.
static MnaNode fromJson(const QJsonObject &json)
static MnaNode fromCbor(const QCborMap &cbor)
QList< MnaSubject > subjects
QJsonObject toJson() const
static bool write(const MnaProject &project, const QString &path)
static MnaProject fromJson(const QJsonObject &json)
static MnaProject read(const QString &path)
static MnaProject fromCbor(const QCborMap &cbor)
static constexpr const char * CURRENT_SCHEMA_VERSION
QList< MnaNode > pipeline
static MnaSubject fromJson(const QJsonObject &json)
static MnaSubject fromCbor(const QCborMap &cbor)