diff Framework/Plugins/OrthancCppDatabasePlugin.h @ 1:d17b2631bb67

starting StorageBackend
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 04 Jul 2018 18:05:24 +0200
parents 7cea966b6829
children 9e419261f1c9
line wrap: on
line diff
--- a/Framework/Plugins/OrthancCppDatabasePlugin.h	Wed Jul 04 08:16:29 2018 +0200
+++ b/Framework/Plugins/OrthancCppDatabasePlugin.h	Wed Jul 04 18:05:24 2018 +0200
@@ -28,34 +28,30 @@
 
 #pragma once
 
-#include <orthanc/OrthancCDatabasePlugin.h>
+#if HAS_ORTHANC_EXCEPTION != 1
+#  error HAS_ORTHANC_EXCEPTION must be set to 1
+#endif
+
 
-#define ORTHANC_PLUGINS_DATABASE_CATCH_COMMON           \
-  catch (::std::runtime_error& e)                       \
-  {                                                     \
-    LogError(backend, e);                               \
-    return OrthancPluginErrorCode_DatabasePlugin;       \
-  }                                                     \
-  catch (::OrthancPlugins::DatabaseException& e)        \
-  {                                                     \
-    return e.GetErrorCode();                            \
-  }                                                     \
-  catch (...)                                           \
-  {                                                     \
-    backend->GetOutput().LogError("Native exception");  \
-    return OrthancPluginErrorCode_DatabasePlugin;       \
-  }
+#include <orthanc/OrthancCDatabasePlugin.h>
+#include <Core/OrthancException.h>
 
-#if HAS_ORTHANC_EXCEPTION == 1
-#  include <Core/OrthancException.h>
-#  define ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC                  \
+
+#define ORTHANC_PLUGINS_DATABASE_CATCH                            \
   catch (::Orthanc::OrthancException& e)                          \
   {                                                               \
     return static_cast<OrthancPluginErrorCode>(e.GetErrorCode()); \
+  }                                                               \
+  catch (::std::runtime_error& e)                                 \
+  {                                                               \
+    LogError(backend, e);                                         \
+    return OrthancPluginErrorCode_DatabasePlugin;                 \
+  }                                                               \
+  catch (...)                                                     \
+  {                                                               \
+    backend->GetOutput().LogError("Native exception");            \
+    return OrthancPluginErrorCode_DatabasePlugin;                 \
   }
-#else
-#  define ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-#endif
 
 
 #include <stdexcept>
@@ -64,55 +60,10 @@
 
 namespace OrthancPlugins
 {
-//! @cond Doxygen_Suppress
-  // This class mimics "boost::noncopyable"
-  class NonCopyable
-  {
-  private:
-    NonCopyable(const NonCopyable&);
-
-    NonCopyable& operator= (const NonCopyable&);
-
-  protected:
-    NonCopyable()
-    {
-    }
-
-    ~NonCopyable()
-    {
-    }
-  };
-//! @endcond
-
-
   /**
    * @ingroup Callbacks
    **/
-  class DatabaseException
-  {
-  private:
-    OrthancPluginErrorCode  code_;
-
-  public:
-    DatabaseException() : code_(OrthancPluginErrorCode_DatabasePlugin)
-    {
-    }
-
-    DatabaseException(OrthancPluginErrorCode code) : code_(code)
-    {
-    }
-
-    OrthancPluginErrorCode  GetErrorCode() const
-    {
-      return code_;
-    }
-  };
-
-
-  /**
-   * @ingroup Callbacks
-   **/
-  class DatabaseBackendOutput : public NonCopyable
+  class DatabaseBackendOutput : public boost::noncopyable
   {
     friend class DatabaseBackendAdapter;
 
@@ -298,7 +249,7 @@
   /**
    * @ingroup Callbacks
    **/
-  class IDatabaseBackend : public NonCopyable
+  class IDatabaseBackend : public boost::noncopyable
   {
     friend class DatabaseBackendAdapter;
 
@@ -536,8 +487,7 @@
         backend->AddAttachment(id, *attachment);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
                              
@@ -553,8 +503,7 @@
         backend->AttachChild(parent, child);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
           
                    
@@ -568,8 +517,7 @@
         backend->ClearChanges();
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
                              
 
@@ -583,8 +531,7 @@
         backend->ClearExportedResources();
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -601,8 +548,7 @@
         *id = backend->CreateResource(publicId, resourceType);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
           
          
@@ -618,8 +564,7 @@
         backend->DeleteAttachment(id, contentType);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
    
 
@@ -635,8 +580,7 @@
         backend->DeleteMetadata(id, metadataType);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
    
 
@@ -651,8 +595,7 @@
         backend->DeleteResource(id);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -677,8 +620,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -704,8 +646,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -733,8 +674,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -759,8 +699,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -785,8 +724,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
           
          
@@ -812,8 +750,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -837,8 +774,7 @@
         }
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
           
          
@@ -853,8 +789,7 @@
         backend->GetLastChange();
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -869,8 +804,7 @@
         backend->GetLastExportedResource();
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
     
                
@@ -886,8 +820,7 @@
         backend->GetMainDicomTags(id);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
           
          
@@ -907,8 +840,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -924,8 +856,7 @@
         *target = backend->GetResourceCount(resourceType);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
                    
 
@@ -941,8 +872,7 @@
         *resourceType = backend->GetResourceType(id);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -957,8 +887,7 @@
         *target = backend->GetTotalCompressedSize();
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
           
          
@@ -973,8 +902,7 @@
         *target = backend->GetTotalUncompressedSize();
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
                    
 
@@ -990,8 +918,7 @@
         *existing = backend->IsExistingResource(id);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1007,8 +934,7 @@
         *isProtected = backend->IsProtectedPatient(id);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1034,8 +960,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
           
          
@@ -1061,8 +986,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1077,8 +1001,7 @@
         backend->LogChange(*change);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
           
          
@@ -1093,8 +1016,7 @@
         backend->LogExportedResource(*exported);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
           
          
@@ -1111,8 +1033,7 @@
         backend->LookupAttachment(id, contentType);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1135,8 +1056,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1163,8 +1083,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1193,8 +1112,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1217,8 +1135,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1240,8 +1157,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1265,8 +1181,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1287,8 +1202,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1310,8 +1224,7 @@
 
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1327,8 +1240,7 @@
         backend->SetGlobalProperty(property, value);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1344,8 +1256,7 @@
         backend->SetMainDicomTag(id, tag->group, tag->element, tag->value);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1361,8 +1272,7 @@
         backend->SetIdentifierTag(id, tag->group, tag->element, tag->value);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1379,8 +1289,7 @@
         backend->SetMetadata(id, metadata, value);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1396,8 +1305,7 @@
         backend->SetProtectedPatient(id, (isProtected != 0));
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1411,8 +1319,7 @@
         backend->StartTransaction();
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1426,8 +1333,7 @@
         backend->RollbackTransaction();
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1441,8 +1347,7 @@
         backend->CommitTransaction();
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1456,8 +1361,7 @@
         backend->Open();
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1471,8 +1375,7 @@
         backend->Close();
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1486,8 +1389,7 @@
         *version = backend->GetDatabaseVersion();
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
 
@@ -1502,8 +1404,7 @@
         backend->UpgradeDatabase(targetVersion, storageArea);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
     
@@ -1517,8 +1418,7 @@
         backend->ClearMainDicomTags(internalId);
         return OrthancPluginErrorCode_Success;
       }
-      ORTHANC_PLUGINS_DATABASE_CATCH_ORTHANC
-      ORTHANC_PLUGINS_DATABASE_CATCH_COMMON
+      ORTHANC_PLUGINS_DATABASE_CATCH
     }
 
     
@@ -1608,7 +1508,8 @@
                                 "against an old version of the Orthanc SDK, consider upgrading");
       }
 
-      OrthancPluginDatabaseContext* database = OrthancPluginRegisterDatabaseBackendV2(context, &params, &extensions, &backend);
+      OrthancPluginDatabaseContext* database =
+        OrthancPluginRegisterDatabaseBackendV2(context, &params, &extensions, &backend);
       if (!context)
       {
         throw std::runtime_error("Unable to register the database backend");