diff OrthancServer/Sources/ServerJobs/ResourceModificationJob.h @ 4693:45bce660ce3a

added routes for bulk anonymization/modification
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 16 Jun 2021 16:44:04 +0200
parents d9473bd5ed43
children f0038043fb97 7053502fbf97
line wrap: on
line diff
--- a/OrthancServer/Sources/ServerJobs/ResourceModificationJob.h	Fri Jun 11 10:48:28 2021 +0200
+++ b/OrthancServer/Sources/ServerJobs/ResourceModificationJob.h	Wed Jun 16 16:44:04 2021 +0200
@@ -44,10 +44,25 @@
   class ResourceModificationJob : public CleaningInstancesJob
   {
   private:
-    class Output;
+    class IOutput : public boost::noncopyable
+    {
+    public:
+      virtual ~IOutput()
+      {
+      }
+
+      virtual void Update(DicomInstanceHasher& hasher) = 0;
+
+      virtual void Format(Json::Value& target) const = 0;
+
+      virtual bool IsSingleResource() const = 0;
+    };
+    
+    class SingleOutput;
+    class MultipleOutputs;
     
     std::unique_ptr<DicomModification>  modification_;
-    boost::shared_ptr<Output>           output_;
+    boost::shared_ptr<IOutput>          output_;
     bool                                isAnonymization_;
     DicomInstanceOrigin                 origin_;
     bool                                transcode_;
@@ -62,9 +77,14 @@
     ResourceModificationJob(ServerContext& context,
                             const Json::Value& serialized);
 
-    void SetModification(DicomModification* modification,   // Takes ownership
-                         ResourceType level,
-                         bool isAnonymization);
+    // NB: The "outputLevel" only controls the output format, and
+    // might *not* be the same as "modification->GetLevel()"
+    void SetSingleResourceModification(DicomModification* modification,   // Takes ownership
+                                       ResourceType outputLevel,
+                                       bool isAnonymization);
+
+    void SetMultipleResourcesModification(DicomModification* modification,   // Takes ownership
+                                          bool isAnonymization);
 
     void SetOrigin(const DicomInstanceOrigin& origin);
 
@@ -95,6 +115,11 @@
 
     void ClearTranscode();
 
+    bool IsSingleResourceModification() const;
+
+    // Only possible if "IsSingleResourceModification()"
+    ResourceType GetOutputLevel() const;
+
     virtual void Stop(JobStopReason reason) ORTHANC_OVERRIDE
     {
     }