v2.0.0
Loading...
Searching...
No Matches
bids_dataset_description.cpp
Go to the documentation of this file.
1//=============================================================================================================
34
35//=============================================================================================================
36// INCLUDES
37//=============================================================================================================
38
40
41//=============================================================================================================
42// QT INCLUDES
43//=============================================================================================================
44
45#include <QFile>
46#include <QJsonDocument>
47#include <QJsonObject>
48#include <QDebug>
49
50//=============================================================================================================
51// USED NAMESPACES
52//=============================================================================================================
53
54using namespace BIDSLIB;
55
56//=============================================================================================================
57// STATIC METHODS
58//=============================================================================================================
59
61{
63
64 QFile file(sFilePath);
65 if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
66 qWarning() << "[BidsDatasetDescription::read] Cannot open" << sFilePath;
67 return desc;
68 }
69
70 QJsonParseError error;
71 QJsonDocument doc = QJsonDocument::fromJson(file.readAll(), &error);
72 file.close();
73
74 if(error.error != QJsonParseError::NoError) {
75 qWarning() << "[BidsDatasetDescription::read] Parse error in" << sFilePath
76 << ":" << error.errorString();
77 return desc;
78 }
79
80 QJsonObject json = doc.object();
81 desc.name = json.value(QStringLiteral("Name")).toString();
82 desc.bidsVersion = json.value(QStringLiteral("BIDSVersion")).toString();
83 desc.datasetType = json.value(QStringLiteral("DatasetType")).toString();
84 desc.license = json.value(QStringLiteral("License")).toString();
85
86 return desc;
87}
88
89//=============================================================================================================
90
91bool BidsDatasetDescription::write(const QString& sFilePath,
92 const BidsDatasetDescription& desc)
93{
94 QJsonObject json;
95
96 json[QStringLiteral("Name")] = desc.name;
97 json[QStringLiteral("BIDSVersion")] = desc.bidsVersion;
98
99 if(!desc.datasetType.isEmpty())
100 json[QStringLiteral("DatasetType")] = desc.datasetType;
101 if(!desc.license.isEmpty())
102 json[QStringLiteral("License")] = desc.license;
103
104 QFile file(sFilePath);
105 if(!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
106 qWarning() << "[BidsDatasetDescription::write] Cannot open" << sFilePath << "for writing";
107 return false;
108 }
109
110 file.write(QJsonDocument(json).toJson(QJsonDocument::Indented));
111 file.close();
112 return true;
113}
BidsDatasetDescription struct — dataset_description.json I/O.
BIDS dataset reading, writing, path construction, and sidecar metadata handling for iEEG/EEG/MEG.
Dataset-level metadata from dataset_description.json.
static BidsDatasetDescription read(const QString &sFilePath)
Read a dataset_description.json file.
static bool write(const QString &sFilePath, const BidsDatasetDescription &desc)
Write a dataset_description.json file.