diff Framework/Plugins/StorageBackend.cpp @ 226:a4918d57435c

DatabaseManager doesn't IDatabaseFactory anymore
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 02 Apr 2021 19:23:36 +0200
parents dd6cfc250747
children 675f8322eb7c
line wrap: on
line diff
--- a/Framework/Plugins/StorageBackend.cpp	Thu Apr 01 19:18:19 2021 +0200
+++ b/Framework/Plugins/StorageBackend.cpp	Fri Apr 02 19:23:36 2021 +0200
@@ -54,11 +54,35 @@
 
 namespace OrthancDatabases
 {
-  StorageBackend::StorageBackend(IDatabaseFactory* factory) :
-    manager_(factory)
+  void StorageBackend::SetDatabase(IDatabase* database)
   {
+    if (database == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+    else if (manager_.get() != NULL)
+    {
+      delete database;
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      manager_.reset(new DatabaseManager(database));
+    }
   }
-
+  
+  DatabaseManager& StorageBackend::GetManager()
+  {
+    if (manager_.get() == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      return *manager_;
+    }
+  }
+    
 
   void StorageBackend::Create(DatabaseManager::Transaction& transaction,
                               const std::string& uuid,
@@ -387,7 +411,6 @@
     {
       context_ = context;
       backend_.reset(backend);
-      backend_->GetManager().Open();
 
       bool hasLoadedV2 = false;