diff Framework/Plugins/IndexBackend.h @ 225:94c9908e6aca

removed DatabaseManager member out of class IndexBackend
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 01 Apr 2021 19:18:19 +0200
parents c8e06b41feec
children a4918d57435c
line wrap: on
line diff
--- a/Framework/Plugins/IndexBackend.h	Thu Apr 01 16:09:59 2021 +0200
+++ b/Framework/Plugins/IndexBackend.h	Thu Apr 01 19:18:19 2021 +0200
@@ -21,7 +21,6 @@
 
 #pragma once
 
-#include "../Common/DatabaseManager.h"
 #include "IDatabaseBackend.h"
 
 #include <OrthancException.h>
@@ -35,16 +34,10 @@
     class LookupFormatter;
 
     OrthancPluginContext*  context_;
-    DatabaseManager        manager_;
 
     std::unique_ptr<IDatabaseBackendOutput::IFactory>  outputFactory_;
     
   protected:
-    DatabaseManager& GetManager()
-    {
-      return manager_;
-    }
-    
     static int64_t ReadInteger64(const DatabaseManager::StatementBase& statement,
                                  size_t field);
 
@@ -63,17 +56,20 @@
                                   DatabaseManager::CachedStatement& statement,
                                   const Dictionary& args);
 
-    void ClearDeletedFiles();
+    void ClearDeletedFiles(DatabaseManager& manager);
 
-    void ClearDeletedResources();
+    void ClearDeletedResources(DatabaseManager& manager);
 
-    void SignalDeletedFiles(IDatabaseBackendOutput& output);
+    void SignalDeletedFiles(IDatabaseBackendOutput& output,
+                            DatabaseManager& manager);
 
-    void SignalDeletedResources(IDatabaseBackendOutput& output);
+    void SignalDeletedResources(IDatabaseBackendOutput& output,
+                                DatabaseManager& manager);
 
   private:
     void ReadChangesInternal(IDatabaseBackendOutput& output,
                              bool& done,
+                             DatabaseManager& manager,
                              DatabaseManager::CachedStatement& statement,
                              const Dictionary& args,
                              uint32_t maxResults);
@@ -85,8 +81,7 @@
                                        uint32_t maxResults);
 
   public:
-    IndexBackend(OrthancPluginContext* context,
-                 IDatabaseFactory* factory);
+    IndexBackend(OrthancPluginContext* context);
 
     virtual OrthancPluginContext* GetContext() ORTHANC_OVERRIDE
     {
@@ -97,106 +92,123 @@
     
     virtual IDatabaseBackendOutput* CreateOutput() ORTHANC_OVERRIDE;
     
-    virtual void Open() ORTHANC_OVERRIDE
-    {
-      manager_.Open();
-    }
-    
-    virtual void Close() ORTHANC_OVERRIDE
-    {
-      manager_.Close();
-    }
-    
-    virtual void AddAttachment(int64_t id,
+    virtual void AddAttachment(DatabaseManager& manager,
+                               int64_t id,
                                const OrthancPluginAttachment& attachment) ORTHANC_OVERRIDE;
     
-    virtual void AttachChild(int64_t parent,
+    virtual void AttachChild(DatabaseManager& manager,
+                             int64_t parent,
                              int64_t child) ORTHANC_OVERRIDE;
     
-    virtual void ClearChanges() ORTHANC_OVERRIDE;
+    virtual void ClearChanges(DatabaseManager& manager) ORTHANC_OVERRIDE;
     
-    virtual void ClearExportedResources() ORTHANC_OVERRIDE;
+    virtual void ClearExportedResources(DatabaseManager& manager) ORTHANC_OVERRIDE;
 
     virtual void DeleteAttachment(IDatabaseBackendOutput& output,
+                                  DatabaseManager& manager,
                                   int64_t id,
                                   int32_t attachment) ORTHANC_OVERRIDE;
     
-    virtual void DeleteMetadata(int64_t id,
+    virtual void DeleteMetadata(DatabaseManager& manager,
+                                int64_t id,
                                 int32_t metadataType) ORTHANC_OVERRIDE;
     
     virtual void DeleteResource(IDatabaseBackendOutput& output,
+                                DatabaseManager& manager,
                                 int64_t id) ORTHANC_OVERRIDE;
 
     virtual void GetAllInternalIds(std::list<int64_t>& target,
+                                   DatabaseManager& manager,
                                    OrthancPluginResourceType resourceType) ORTHANC_OVERRIDE;
     
     virtual void GetAllPublicIds(std::list<std::string>& target,
+                                 DatabaseManager& manager,
                                  OrthancPluginResourceType resourceType) ORTHANC_OVERRIDE;
     
     virtual void GetAllPublicIds(std::list<std::string>& target,
+                                 DatabaseManager& manager,
                                  OrthancPluginResourceType resourceType,
                                  uint64_t since,
                                  uint64_t limit) ORTHANC_OVERRIDE;
     
     virtual void GetChanges(IDatabaseBackendOutput& output,
                             bool& done /*out*/,
+                            DatabaseManager& manager,
                             int64_t since,
                             uint32_t maxResults) ORTHANC_OVERRIDE;
     
     virtual void GetChildrenInternalId(std::list<int64_t>& target /*out*/,
+                                       DatabaseManager& manager,
                                        int64_t id) ORTHANC_OVERRIDE;
     
     virtual void GetChildrenPublicId(std::list<std::string>& target /*out*/,
+                                     DatabaseManager& manager,
                                      int64_t id) ORTHANC_OVERRIDE;
     
     virtual void GetExportedResources(IDatabaseBackendOutput& output,
                                       bool& done /*out*/,
+                                      DatabaseManager& manager,
                                       int64_t since,
                                       uint32_t maxResults) ORTHANC_OVERRIDE;
     
-    virtual void GetLastChange(IDatabaseBackendOutput& output) ORTHANC_OVERRIDE;
+    virtual void GetLastChange(IDatabaseBackendOutput& output,
+                               DatabaseManager& manager) ORTHANC_OVERRIDE;
     
-    virtual void GetLastExportedResource(IDatabaseBackendOutput& output) ORTHANC_OVERRIDE;
+    virtual void GetLastExportedResource(IDatabaseBackendOutput& output,
+                                         DatabaseManager& manager) ORTHANC_OVERRIDE;
     
     virtual void GetMainDicomTags(IDatabaseBackendOutput& output,
+                                  DatabaseManager& manager,
                                   int64_t id) ORTHANC_OVERRIDE;
     
-    virtual std::string GetPublicId(int64_t resourceId) ORTHANC_OVERRIDE;
+    virtual std::string GetPublicId(DatabaseManager& manager,
+                                    int64_t resourceId) ORTHANC_OVERRIDE;
     
-    virtual uint64_t GetResourcesCount(OrthancPluginResourceType resourceType) ORTHANC_OVERRIDE;
+    virtual uint64_t GetResourcesCount(DatabaseManager& manager,
+                                       OrthancPluginResourceType resourceType) ORTHANC_OVERRIDE;
     
-    virtual OrthancPluginResourceType GetResourceType(int64_t resourceId) ORTHANC_OVERRIDE;
+    virtual OrthancPluginResourceType GetResourceType(DatabaseManager& manager,
+                                                      int64_t resourceId) ORTHANC_OVERRIDE;
     
-    virtual uint64_t GetTotalCompressedSize() ORTHANC_OVERRIDE;
+    virtual uint64_t GetTotalCompressedSize(DatabaseManager& manager) ORTHANC_OVERRIDE;
     
-    virtual uint64_t GetTotalUncompressedSize() ORTHANC_OVERRIDE;
+    virtual uint64_t GetTotalUncompressedSize(DatabaseManager& manager) ORTHANC_OVERRIDE;
     
-    virtual bool IsExistingResource(int64_t internalId) ORTHANC_OVERRIDE;
+    virtual bool IsExistingResource(DatabaseManager& manager,
+                                    int64_t internalId) ORTHANC_OVERRIDE;
     
-    virtual bool IsProtectedPatient(int64_t internalId) ORTHANC_OVERRIDE;
+    virtual bool IsProtectedPatient(DatabaseManager& manager,
+                                    int64_t internalId) ORTHANC_OVERRIDE;
     
     virtual void ListAvailableMetadata(std::list<int32_t>& target /*out*/,
+                                       DatabaseManager& manager,
                                        int64_t id) ORTHANC_OVERRIDE;
     
     virtual void ListAvailableAttachments(std::list<int32_t>& target /*out*/,
+                                          DatabaseManager& manager,
                                           int64_t id) ORTHANC_OVERRIDE;
     
-    virtual void LogChange(int32_t changeType,
+    virtual void LogChange(DatabaseManager& manager,
+                           int32_t changeType,
                            int64_t resourceId,
                            OrthancPluginResourceType resourceType,
                            const char* date) ORTHANC_OVERRIDE;
     
-    virtual void LogExportedResource(const OrthancPluginExportedResource& resource) ORTHANC_OVERRIDE;
+    virtual void LogExportedResource(DatabaseManager& manager,
+                                     const OrthancPluginExportedResource& resource) ORTHANC_OVERRIDE;
     
     virtual bool LookupAttachment(IDatabaseBackendOutput& output,
+                                  DatabaseManager& manager,
                                   int64_t id,
                                   int32_t contentType) ORTHANC_OVERRIDE;
     
     virtual bool LookupGlobalProperty(std::string& target /*out*/,
+                                      DatabaseManager& manager,
                                       const char* serverIdentifier,
                                       int32_t property) ORTHANC_OVERRIDE;
     
     virtual void LookupIdentifier(std::list<int64_t>& target /*out*/,
+                                  DatabaseManager& manager,
                                   OrthancPluginResourceType resourceType,
                                   uint16_t group,
                                   uint16_t element,
@@ -204,6 +216,7 @@
                                   const char* value) ORTHANC_OVERRIDE;
     
     virtual void LookupIdentifierRange(std::list<int64_t>& target /*out*/,
+                                       DatabaseManager& manager,
                                        OrthancPluginResourceType resourceType,
                                        uint16_t group,
                                        uint16_t element,
@@ -211,84 +224,81 @@
                                        const char* end) ORTHANC_OVERRIDE;
 
     virtual bool LookupMetadata(std::string& target /*out*/,
+                                DatabaseManager& manager,
                                 int64_t id,
                                 int32_t metadataType) ORTHANC_OVERRIDE;
 
     virtual bool LookupParent(int64_t& parentId /*out*/,
+                              DatabaseManager& manager,
                               int64_t resourceId) ORTHANC_OVERRIDE;
     
     virtual bool LookupResource(int64_t& id /*out*/,
                                 OrthancPluginResourceType& type /*out*/,
+                                DatabaseManager& manager,
                                 const char* publicId) ORTHANC_OVERRIDE;
     
-    virtual bool SelectPatientToRecycle(int64_t& internalId /*out*/) ORTHANC_OVERRIDE;
+    virtual bool SelectPatientToRecycle(int64_t& internalId /*out*/,
+                                        DatabaseManager& manager) ORTHANC_OVERRIDE;
     
     virtual bool SelectPatientToRecycle(int64_t& internalId /*out*/,
+                                        DatabaseManager& manager,
                                         int64_t patientIdToAvoid) ORTHANC_OVERRIDE;
     
-    virtual void SetGlobalProperty(const char* serverIdentifier,
+    virtual void SetGlobalProperty(DatabaseManager& manager,
+                                   const char* serverIdentifier,
                                    int32_t property,
                                    const char* value) ORTHANC_OVERRIDE;
 
-    virtual void SetMainDicomTag(int64_t id,
+    virtual void SetMainDicomTag(DatabaseManager& manager,
+                                 int64_t id,
                                  uint16_t group,
                                  uint16_t element,
                                  const char* value) ORTHANC_OVERRIDE;
     
-    virtual void SetIdentifierTag(int64_t id,
+    virtual void SetIdentifierTag(DatabaseManager& manager,
+                                  int64_t id,
                                   uint16_t group,
                                   uint16_t element,
                                   const char* value) ORTHANC_OVERRIDE;
 
-    virtual void SetMetadata(int64_t id,
+    virtual void SetMetadata(DatabaseManager& manager,
+                             int64_t id,
                              int32_t metadataType,
                              const char* value) ORTHANC_OVERRIDE;
     
-    virtual void SetProtectedPatient(int64_t internalId, 
+    virtual void SetProtectedPatient(DatabaseManager& manager,
+                                     int64_t internalId, 
                                      bool isProtected) ORTHANC_OVERRIDE;
     
-    virtual void StartTransaction(TransactionType type) ORTHANC_OVERRIDE
-    {
-      manager_.StartTransaction(type);
-    }
-
+    virtual uint32_t GetDatabaseVersion(DatabaseManager& manager) ORTHANC_OVERRIDE;
     
-    virtual void RollbackTransaction() ORTHANC_OVERRIDE
-    {
-      manager_.RollbackTransaction();
-    }
-
-    
-    virtual void CommitTransaction() ORTHANC_OVERRIDE
-    {
-      manager_.CommitTransaction();
-    }
-
-    
-    virtual uint32_t GetDatabaseVersion() ORTHANC_OVERRIDE;
-    
-    virtual void UpgradeDatabase(uint32_t  targetVersion,
+    virtual void UpgradeDatabase(DatabaseManager& manager,
+                                 uint32_t  targetVersion,
                                  OrthancPluginStorageArea* storageArea) ORTHANC_OVERRIDE;
     
-    virtual void ClearMainDicomTags(int64_t internalId) ORTHANC_OVERRIDE;
+    virtual void ClearMainDicomTags(DatabaseManager& manager,
+                                    int64_t internalId) ORTHANC_OVERRIDE;
 
     // For unit testing only!
-    virtual uint64_t GetAllResourcesCount();
+    virtual uint64_t GetAllResourcesCount(DatabaseManager& manager);
 
     // For unit testing only!
-    virtual uint64_t GetUnprotectedPatientsCount();
+    virtual uint64_t GetUnprotectedPatientsCount(DatabaseManager& manager);
 
     // For unit testing only!
     virtual bool GetParentPublicId(std::string& target,
+                                   DatabaseManager& manager,
                                    int64_t id);
 
     // For unit tests only!
     virtual void GetChildren(std::list<std::string>& childrenPublicIds,
+                             DatabaseManager& manager,
                              int64_t id);
 
 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
     // New primitive since Orthanc 1.5.2
     virtual void LookupResources(IDatabaseBackendOutput& output,
+                                 DatabaseManager& manager,
                                  const std::vector<Orthanc::DatabaseConstraint>& lookup,
                                  OrthancPluginResourceType queryLevel,
                                  uint32_t limit,
@@ -298,6 +308,7 @@
 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
     // New primitive since Orthanc 1.5.2
     virtual void SetResourcesContent(
+      DatabaseManager& manager,
       uint32_t countIdentifierTags,
       const OrthancPluginResourcesContentTags* identifierTags,
       uint32_t countMainDicomTags,
@@ -308,10 +319,12 @@
 
     // New primitive since Orthanc 1.5.2
     virtual void GetChildrenMetadata(std::list<std::string>& target,
+                                     DatabaseManager& manager,
                                      int64_t resourceId,
                                      int32_t metadata) ORTHANC_OVERRIDE;
 
-    virtual void TagMostRecentPatient(int64_t patient) ORTHANC_OVERRIDE;
+    virtual void TagMostRecentPatient(DatabaseManager& manager,
+                                      int64_t patient) ORTHANC_OVERRIDE;
 
 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE)      // Macro introduced in 1.3.1
 #  if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4)
@@ -319,6 +332,7 @@
     virtual bool LookupResourceAndParent(int64_t& id,
                                          OrthancPluginResourceType& type,
                                          std::string& parentPublicId,
+                                         DatabaseManager& manager,
                                          const char* publicId) ORTHANC_OVERRIDE;
 #  endif
 #endif
@@ -327,6 +341,7 @@
 #  if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4)
     // New primitive since Orthanc 1.5.4
     virtual void GetAllMetadata(std::map<int32_t, std::string>& result,
+                                DatabaseManager& manager,
                                 int64_t id) ORTHANC_OVERRIDE;
 #  endif
 #endif
@@ -340,6 +355,7 @@
       
 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
     virtual void CreateInstance(OrthancPluginCreateInstanceResult& result,
+                                DatabaseManager& manager,
                                 const char* hashPatient,
                                 const char* hashStudy,
                                 const char* hashSeries,
@@ -352,6 +368,7 @@
     // This function corresponds to
     // "Orthanc::Compatibility::ICreateInstance::Apply()"
     void CreateInstanceGeneric(OrthancPluginCreateInstanceResult& result,
+                               DatabaseManager& manager,
                                const char* hashPatient,
                                const char* hashStudy,
                                const char* hashSeries,