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 }