diff 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
line wrap: on
line diff
--- a/OrthancStone/Sources/Oracle/ParseDicomFromWadoCommand.cpp	Tue Dec 01 17:43:31 2020 +0100
+++ b/OrthancStone/Sources/Oracle/ParseDicomFromWadoCommand.cpp	Tue Dec 01 18:01:42 2020 +0100
@@ -30,16 +30,20 @@
 {
   ParseDicomFromWadoCommand::ParseDicomFromWadoCommand(const DicomSource& source,
                                                        const std::string& sopInstanceUid,
+                                                       bool transcode,
+                                                       Orthanc::DicomTransferSyntax transferSyntax,
                                                        IOracleCommand* restCommand) :
     source_(source),
     sopInstanceUid_(sopInstanceUid),
+    transcode_(transcode),
+    transferSyntax_(transferSyntax),
     restCommand_(restCommand)
   {
     if (restCommand == NULL)
     {
       throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
     }
-
+    
     if (restCommand_->GetType() != Type_Http &&
         restCommand_->GetType() != Type_OrthancRestApi)
     {
@@ -51,10 +55,46 @@
   IOracleCommand* ParseDicomFromWadoCommand::Clone() const
   {
     assert(restCommand_.get() != NULL);
-    return new ParseDicomFromWadoCommand(source_, sopInstanceUid_, restCommand_->Clone());
+    return new ParseDicomFromWadoCommand(source_, sopInstanceUid_, transcode_, transferSyntax_, restCommand_->Clone());
   }
 
 
+  Orthanc::DicomTransferSyntax ParseDicomFromWadoCommand::GetTranscodeTransferSyntax() const
+  {
+    if (transcode_)
+    {
+      return transferSyntax_;
+    }
+    else
+    {
+      // "IsTranscode()" should have been called
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+  }
+  
+
+  bool ParseDicomFromWadoCommand::IsSameCommand(const ParseDicomFromWadoCommand& other) const
+  {
+    if (source_.IsSameSource(other.source_) &&
+        sopInstanceUid_ == other.sopInstanceUid_ &&
+        transcode_ == other.transcode_)
+    {
+      if (transcode_)
+      {
+        return transferSyntax_ == other.transferSyntax_;
+      }
+      else
+      {
+        return true;
+      }
+    }
+    else
+    {
+      return false;
+    }      
+  }    
+
+  
   const IOracleCommand& ParseDicomFromWadoCommand::GetRestCommand() const
   {
     assert(restCommand_.get() != NULL);
@@ -94,7 +134,7 @@
       source.CreateDicomWebCommand(uri, arguments, headers, NULL));
 
     std::unique_ptr<ParseDicomFromWadoCommand> command(
-      new ParseDicomFromWadoCommand(source, sopInstanceUid, rest.release()));
+      new ParseDicomFromWadoCommand(source, sopInstanceUid, transcode, transferSyntax, rest.release()));
 
     if (protection.get() != NULL)
     {