changeset 299:70685295a373

added OrthancDatabases::EnumerationToString(ValueType)
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 01 Jul 2021 16:25:41 +0200
parents 8f655f308de9
children a116dbdf9118
files Framework/Common/DatabasesEnumerations.cpp Framework/Common/DatabasesEnumerations.h Framework/Common/GenericFormatter.cpp Framework/Common/GenericFormatter.h Resources/CMake/DatabasesFrameworkConfiguration.cmake
diffstat 5 files changed, 68 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Framework/Common/DatabasesEnumerations.cpp	Thu Jul 01 16:25:41 2021 +0200
@@ -0,0 +1,54 @@
+/**
+ * Orthanc - A Lightweight, RESTful DICOM Store
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2021 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#include "DatabasesEnumerations.h"
+
+#include <OrthancException.h>
+
+namespace OrthancDatabases
+{
+  const char* EnumerationToString(ValueType type)
+  {
+    switch (type)
+    {
+      case ValueType_BinaryString:
+        return "BinaryString";
+        
+      case ValueType_InputFile:
+        return "InputFile";
+        
+      case ValueType_Integer64:
+        return "Integer64";
+        
+      case ValueType_Null:
+        return "Null";
+        
+      case ValueType_ResultFile:
+        return "ResultFile";
+        
+      case ValueType_Utf8String:
+        return "Utf8String";
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
+    }
+  }   
+}
--- a/Framework/Common/DatabasesEnumerations.h	Thu Jul 01 14:39:27 2021 +0200
+++ b/Framework/Common/DatabasesEnumerations.h	Thu Jul 01 16:25:41 2021 +0200
@@ -49,4 +49,6 @@
     TransactionType_ReadOnly,  // Should only arise with Orthanc SDK >= 1.9.2 in the index plugin
     TransactionType_Implicit   // Should only arise with Orthanc SDK <= 1.9.1
   };
+
+  const char* EnumerationToString(ValueType type);
 }
--- a/Framework/Common/GenericFormatter.cpp	Thu Jul 01 14:39:27 2021 +0200
+++ b/Framework/Common/GenericFormatter.cpp	Thu Jul 01 16:25:41 2021 +0200
@@ -51,6 +51,14 @@
     }
     else
     {
+      if (allNames_.find(source) != allNames_.end())
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls,
+                                        "Parameter ${" + source + "} registered twice");
+      }
+
+      allNames_.insert(source);
+      
       switch (dialect_)
       {
         case Dialect_PostgreSQL:
--- a/Framework/Common/GenericFormatter.h	Thu Jul 01 14:39:27 2021 +0200
+++ b/Framework/Common/GenericFormatter.h	Thu Jul 01 16:25:41 2021 +0200
@@ -25,6 +25,8 @@
 
 #include <Compatibility.h>
 
+#include <set>
+
 namespace OrthancDatabases
 {
   class GenericFormatter : public Query::IParameterFormatter
@@ -33,6 +35,7 @@
     Dialect                   dialect_;
     std::vector<std::string>  parametersName_;
     std::vector<ValueType>    parametersType_;
+    std::set<std::string>     allNames_;
       
   public:
     explicit GenericFormatter(Dialect dialect) :
--- a/Resources/CMake/DatabasesFrameworkConfiguration.cmake	Thu Jul 01 14:39:27 2021 +0200
+++ b/Resources/CMake/DatabasesFrameworkConfiguration.cmake	Thu Jul 01 16:25:41 2021 +0200
@@ -97,6 +97,7 @@
 set(DATABASES_SOURCES
   ${ORTHANC_DATABASES_ROOT}/Framework/Common/BinaryStringValue.cpp
   ${ORTHANC_DATABASES_ROOT}/Framework/Common/DatabaseManager.cpp
+  ${ORTHANC_DATABASES_ROOT}/Framework/Common/DatabasesEnumerations.cpp
   ${ORTHANC_DATABASES_ROOT}/Framework/Common/Dictionary.cpp
   ${ORTHANC_DATABASES_ROOT}/Framework/Common/GenericFormatter.cpp
   ${ORTHANC_DATABASES_ROOT}/Framework/Common/IResult.cpp