comparison Core/SerializationToolbox.cpp @ 2662:47d812308d63 jobs

serialization of DicomModification
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 07 Jun 2018 17:47:41 +0200
parents 5eea2f11e8df
children 218e2c864d1d
comparison
equal deleted inserted replaced
2660:27b7884512be 2662:47d812308d63
162 target.insert(tmp[i]); 162 target.insert(tmp[i]);
163 } 163 }
164 } 164 }
165 165
166 166
167 void ReadSetOfTags(std::set<DicomTag>& target,
168 const Json::Value& value,
169 const std::string& field)
170 {
171 if (value.type() != Json::objectValue ||
172 !value.isMember(field.c_str()) ||
173 value[field.c_str()].type() != Json::arrayValue)
174 {
175 throw OrthancException(ErrorCode_BadFileFormat);
176 }
177
178 const Json::Value& arr = value[field.c_str()];
179
180 target.clear();
181
182 for (Json::Value::ArrayIndex i = 0; i < arr.size(); i++)
183 {
184 DicomTag tag(0, 0);
185
186 if (arr[i].type() != Json::stringValue ||
187 !DicomTag::ParseHexadecimal(tag, arr[i].asCString()))
188 {
189 throw OrthancException(ErrorCode_BadFileFormat);
190 }
191 else
192 {
193 target.insert(tag);
194 }
195 }
196 }
197
198
167 void WriteArrayOfStrings(Json::Value& target, 199 void WriteArrayOfStrings(Json::Value& target,
168 const std::vector<std::string>& values, 200 const std::vector<std::string>& values,
169 const std::string& field) 201 const std::string& field)
170 { 202 {
171 if (target.type() != Json::objectValue || 203 if (target.type() != Json::objectValue ||
172 target.isMember(field.c_str())) 204 target.isMember(field.c_str()))
173 { 205 {
174 throw OrthancException(ErrorCode_BadFileFormat); 206 throw OrthancException(ErrorCode_BadFileFormat);
175 } 207 }
176 208
177 Json::Value tmp; 209 Json::Value& value = target[field];
178 210
179 tmp = Json::arrayValue; 211 value = Json::arrayValue;
180 for (size_t i = 0; i < values.size(); i++) 212 for (size_t i = 0; i < values.size(); i++)
181 { 213 {
182 tmp.append(values[i]); 214 value.append(values[i]);
183 } 215 }
184
185 target[field] = tmp;
186 } 216 }
187 217
188 218
189 void WriteSetOfStrings(Json::Value& target, 219 void WriteSetOfStrings(Json::Value& target,
190 const std::set<std::string>& values, 220 const std::set<std::string>& values,
191 const std::string& field) 221 const std::string& field)
192 { 222 {
193 Json::Value v = Json::arrayValue; 223 if (target.type() != Json::objectValue ||
224 target.isMember(field.c_str()))
225 {
226 throw OrthancException(ErrorCode_BadFileFormat);
227 }
228
229 Json::Value& value = target[field];
230
231 value = Json::arrayValue;
194 232
195 for (std::set<std::string>::const_iterator it = values.begin(); 233 for (std::set<std::string>::const_iterator it = values.begin();
196 it != values.end(); ++it) 234 it != values.end(); ++it)
197 { 235 {
198 v.append(*it); 236 value.append(*it);
199 } 237 }
200 238 }
201 target[field] = v; 239
240
241 void WriteSetOfTags(Json::Value& target,
242 const std::set<DicomTag>& tags,
243 const std::string& field)
244 {
245 if (target.type() != Json::objectValue ||
246 target.isMember(field.c_str()))
247 {
248 throw OrthancException(ErrorCode_BadFileFormat);
249 }
250
251 Json::Value& value = target[field];
252
253 value = Json::arrayValue;
254
255 for (std::set<DicomTag>::const_iterator it = tags.begin();
256 it != tags.end(); ++it)
257 {
258 value.append(it->Format());
259 }
202 } 260 }
203 } 261 }
204 } 262 }