Mercurial > hg > orthanc
comparison OrthancServer/ServerContext.cpp @ 304:4eea080e6e7a
refactoring
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 19 Dec 2012 14:57:18 +0100 |
parents | 4d7469f72a0b |
children | 1b0ffed55ab0 |
comparison
equal
deleted
inserted
replaced
303:c76a35a85c69 | 304:4eea080e6e7a |
---|---|
74 void ServerContext::RemoveFile(const std::string& fileUuid) | 74 void ServerContext::RemoveFile(const std::string& fileUuid) |
75 { | 75 { |
76 storage_.Remove(fileUuid); | 76 storage_.Remove(fileUuid); |
77 } | 77 } |
78 | 78 |
79 StoreStatus ServerContext::Store(const char* dicomFile, | 79 StoreStatus ServerContext::Store(const char* dicomInstance, |
80 size_t dicomSize, | 80 size_t dicomSize, |
81 const DicomMap& dicomSummary, | 81 const DicomMap& dicomSummary, |
82 const Json::Value& dicomJson, | 82 const Json::Value& dicomJson, |
83 const std::string& remoteAet) | 83 const std::string& remoteAet) |
84 { | 84 { |
89 else | 89 else |
90 { | 90 { |
91 accessor_.SetCompressionForNextOperations(CompressionType_None); | 91 accessor_.SetCompressionForNextOperations(CompressionType_None); |
92 } | 92 } |
93 | 93 |
94 FileInfo dicomInfo = accessor_.Write(dicomFile, dicomSize, FileContentType_Dicom); | 94 FileInfo dicomInfo = accessor_.Write(dicomInstance, dicomSize, FileContentType_Dicom); |
95 FileInfo jsonInfo = accessor_.Write(dicomJson.toStyledString(), FileContentType_Json); | 95 FileInfo jsonInfo = accessor_.Write(dicomJson.toStyledString(), FileContentType_Json); |
96 | 96 |
97 ServerIndex::Attachments attachments; | 97 ServerIndex::Attachments attachments; |
98 attachments.push_back(dicomInfo); | 98 attachments.push_back(dicomInfo); |
99 attachments.push_back(jsonInfo); | 99 attachments.push_back(jsonInfo); |
186 return dynamic_cast<ParsedDicomFile&>(*p); | 186 return dynamic_cast<ParsedDicomFile&>(*p); |
187 #else | 187 #else |
188 return dynamic_cast<ParsedDicomFile&>(dicomCache_.Access(instancePublicId)); | 188 return dynamic_cast<ParsedDicomFile&>(dicomCache_.Access(instancePublicId)); |
189 #endif | 189 #endif |
190 } | 190 } |
191 | |
192 | |
193 StoreStatus ServerContext::Store(std::string& resultPublicId, | |
194 DcmFileFormat& dicomInstance, | |
195 const char* dicomBuffer, | |
196 size_t dicomSize) | |
197 { | |
198 DicomMap dicomSummary; | |
199 FromDcmtkBridge::Convert(dicomSummary, *dicomInstance.getDataset()); | |
200 | |
201 DicomInstanceHasher hasher(dicomSummary); | |
202 resultPublicId = hasher.HashInstance(); | |
203 | |
204 Json::Value dicomJson; | |
205 FromDcmtkBridge::ToJson(dicomJson, *dicomInstance.getDataset()); | |
206 | |
207 StoreStatus status = StoreStatus_Failure; | |
208 if (dicomSize > 0) | |
209 { | |
210 status = Store(dicomBuffer, dicomSize, dicomSummary, dicomJson, ""); | |
211 } | |
212 | |
213 return status; | |
214 } | |
215 | |
216 | |
217 StoreStatus ServerContext::Store(std::string& resultPublicId, | |
218 DcmFileFormat& dicomInstance) | |
219 { | |
220 std::string buffer; | |
221 if (!FromDcmtkBridge::SaveToMemoryBuffer(buffer, dicomInstance.getDataset())) | |
222 { | |
223 throw OrthancException(ErrorCode_InternalError); | |
224 } | |
225 | |
226 if (buffer.size() == 0) | |
227 return Store(resultPublicId, dicomInstance, NULL, 0); | |
228 else | |
229 return Store(resultPublicId, dicomInstance, &buffer[0], buffer.size()); | |
230 } | |
231 | |
232 | |
233 StoreStatus ServerContext::Store(std::string& resultPublicId, | |
234 const char* dicomBuffer, | |
235 size_t dicomSize) | |
236 { | |
237 ParsedDicomFile dicom(dicomBuffer, dicomSize); | |
238 return Store(resultPublicId, dicom.GetDicom(), dicomBuffer, dicomSize); | |
239 } | |
240 | |
191 } | 241 } |