Mercurial > hg > orthanc-stone
comparison OrthancStone/Sources/Oracle/ParseDicomFromWadoCommand.cpp @ 1726:0257339b0884
new method ParseDicomFromWadoCommand::IsSameCommand()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 01 Dec 2020 18:01:42 +0100 |
parents | 59f95b9ea858 |
children | 9ac2a65d4172 |
comparison
equal
deleted
inserted
replaced
1725:c8d0ffb3047d | 1726:0257339b0884 |
---|---|
28 | 28 |
29 namespace OrthancStone | 29 namespace OrthancStone |
30 { | 30 { |
31 ParseDicomFromWadoCommand::ParseDicomFromWadoCommand(const DicomSource& source, | 31 ParseDicomFromWadoCommand::ParseDicomFromWadoCommand(const DicomSource& source, |
32 const std::string& sopInstanceUid, | 32 const std::string& sopInstanceUid, |
33 bool transcode, | |
34 Orthanc::DicomTransferSyntax transferSyntax, | |
33 IOracleCommand* restCommand) : | 35 IOracleCommand* restCommand) : |
34 source_(source), | 36 source_(source), |
35 sopInstanceUid_(sopInstanceUid), | 37 sopInstanceUid_(sopInstanceUid), |
38 transcode_(transcode), | |
39 transferSyntax_(transferSyntax), | |
36 restCommand_(restCommand) | 40 restCommand_(restCommand) |
37 { | 41 { |
38 if (restCommand == NULL) | 42 if (restCommand == NULL) |
39 { | 43 { |
40 throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer); | 44 throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer); |
41 } | 45 } |
42 | 46 |
43 if (restCommand_->GetType() != Type_Http && | 47 if (restCommand_->GetType() != Type_Http && |
44 restCommand_->GetType() != Type_OrthancRestApi) | 48 restCommand_->GetType() != Type_OrthancRestApi) |
45 { | 49 { |
46 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadParameterType); | 50 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadParameterType); |
47 } | 51 } |
49 | 53 |
50 | 54 |
51 IOracleCommand* ParseDicomFromWadoCommand::Clone() const | 55 IOracleCommand* ParseDicomFromWadoCommand::Clone() const |
52 { | 56 { |
53 assert(restCommand_.get() != NULL); | 57 assert(restCommand_.get() != NULL); |
54 return new ParseDicomFromWadoCommand(source_, sopInstanceUid_, restCommand_->Clone()); | 58 return new ParseDicomFromWadoCommand(source_, sopInstanceUid_, transcode_, transferSyntax_, restCommand_->Clone()); |
55 } | 59 } |
56 | 60 |
57 | 61 |
62 Orthanc::DicomTransferSyntax ParseDicomFromWadoCommand::GetTranscodeTransferSyntax() const | |
63 { | |
64 if (transcode_) | |
65 { | |
66 return transferSyntax_; | |
67 } | |
68 else | |
69 { | |
70 // "IsTranscode()" should have been called | |
71 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | |
72 } | |
73 } | |
74 | |
75 | |
76 bool ParseDicomFromWadoCommand::IsSameCommand(const ParseDicomFromWadoCommand& other) const | |
77 { | |
78 if (source_.IsSameSource(other.source_) && | |
79 sopInstanceUid_ == other.sopInstanceUid_ && | |
80 transcode_ == other.transcode_) | |
81 { | |
82 if (transcode_) | |
83 { | |
84 return transferSyntax_ == other.transferSyntax_; | |
85 } | |
86 else | |
87 { | |
88 return true; | |
89 } | |
90 } | |
91 else | |
92 { | |
93 return false; | |
94 } | |
95 } | |
96 | |
97 | |
58 const IOracleCommand& ParseDicomFromWadoCommand::GetRestCommand() const | 98 const IOracleCommand& ParseDicomFromWadoCommand::GetRestCommand() const |
59 { | 99 { |
60 assert(restCommand_.get() != NULL); | 100 assert(restCommand_.get() != NULL); |
61 return *restCommand_; | 101 return *restCommand_; |
62 } | 102 } |
92 | 132 |
93 std::unique_ptr<IOracleCommand> rest( | 133 std::unique_ptr<IOracleCommand> rest( |
94 source.CreateDicomWebCommand(uri, arguments, headers, NULL)); | 134 source.CreateDicomWebCommand(uri, arguments, headers, NULL)); |
95 | 135 |
96 std::unique_ptr<ParseDicomFromWadoCommand> command( | 136 std::unique_ptr<ParseDicomFromWadoCommand> command( |
97 new ParseDicomFromWadoCommand(source, sopInstanceUid, rest.release())); | 137 new ParseDicomFromWadoCommand(source, sopInstanceUid, transcode, transferSyntax, rest.release())); |
98 | 138 |
99 if (protection.get() != NULL) | 139 if (protection.get() != NULL) |
100 { | 140 { |
101 command->AcquirePayload(protection.release()); | 141 command->AcquirePayload(protection.release()); |
102 } | 142 } |