# HG changeset patch # User Sebastien Jodogne # Date 1625149541 -7200 # Node ID 70685295a3733dd10c827823bb71b088a3b516b3 # Parent 8f655f308de9d6ea822471f84e70e9b5a0d79ea5 added OrthancDatabases::EnumerationToString(ValueType) diff -r 8f655f308de9 -r 70685295a373 Framework/Common/DatabasesEnumerations.cpp --- /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 . + **/ + + +#include "DatabasesEnumerations.h" + +#include + +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); + } + } +} diff -r 8f655f308de9 -r 70685295a373 Framework/Common/DatabasesEnumerations.h --- 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); } diff -r 8f655f308de9 -r 70685295a373 Framework/Common/GenericFormatter.cpp --- 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: diff -r 8f655f308de9 -r 70685295a373 Framework/Common/GenericFormatter.h --- 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 +#include + namespace OrthancDatabases { class GenericFormatter : public Query::IParameterFormatter @@ -33,6 +35,7 @@ Dialect dialect_; std::vector parametersName_; std::vector parametersType_; + std::set allNames_; public: explicit GenericFormatter(Dialect dialect) : diff -r 8f655f308de9 -r 70685295a373 Resources/CMake/DatabasesFrameworkConfiguration.cmake --- 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