Mercurial > hg > orthanc
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 } |