changeset 119:260fc55f10cd OrthancMySQL-2.0

cancelling changesets 116 and 117 in OrthancMySQL-2.0 branch
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 04 Feb 2019 16:32:45 +0100
parents ca0ecd412988
children
files Framework/Common/DatabaseManager.cpp Framework/Plugins/IndexBackend.cpp Framework/Plugins/IndexBackend.h Framework/Plugins/OrthancCppDatabasePlugin.h Framework/PostgreSQL/PostgreSQLTransaction.cpp MySQL/NEWS PostgreSQL/NEWS
diffstat 7 files changed, 9 insertions(+), 244 deletions(-) [+]
line wrap: on
line diff
--- a/Framework/Common/DatabaseManager.cpp	Mon Feb 04 16:03:17 2019 +0100
+++ b/Framework/Common/DatabaseManager.cpp	Mon Feb 04 16:32:45 2019 +0100
@@ -21,8 +21,6 @@
 
 #include "DatabaseManager.h"
 
-#include <Plugins/Samples/Common/OrthancPluginCppWrapper.h>
-
 #include <Core/Logging.h>
 #include <Core/OrthancException.h>
 
@@ -512,18 +510,6 @@
       }
         
       assert(statement_ != NULL);
-
-      /*
-        TODO - Sample code to monitor the execution time of each
-        cached statement, and publish it as an Orthanc metrics
-
-        #if HAS_ORTHANC_PLUGIN_METRICS == 1
-        std::string name = (std::string(location_.GetFile()) + "_" +
-        boost::lexical_cast<std::string>(location_.GetLine()));
-        OrthancPlugins::MetricsTimer timer(name.c_str());
-        #endif
-      */
-
       SetResult(GetTransaction().Execute(*statement_, parameters));
     }
     catch (Orthanc::OrthancException& e)
--- a/Framework/Plugins/IndexBackend.cpp	Mon Feb 04 16:03:17 2019 +0100
+++ b/Framework/Plugins/IndexBackend.cpp	Mon Feb 04 16:32:45 2019 +0100
@@ -1739,9 +1739,9 @@
       args.SetUtf8Value(name, tags[i].value);
       
       std::string insert = ("(" + boost::lexical_cast<std::string>(tags[i].resource) + ", " +
-                            boost::lexical_cast<std::string>(tags[i].group) + ", " +
-                            boost::lexical_cast<std::string>(tags[i].element) + ", " +
-                            "${" + name + "})");
+                           boost::lexical_cast<std::string>(tags[i].group) + ", " +
+                           boost::lexical_cast<std::string>(tags[i].element) + ", " +
+                           "${" + name + "})");
 
       if (sql.empty())
       {
@@ -1787,7 +1787,7 @@
       
       std::string insert = ("(" + boost::lexical_cast<std::string>(metadata[i].resource) + ", " +
                             boost::lexical_cast<std::string>(metadata[i].metadata) + ", " +
-                            "${" + name + "})");
+                           "${" + name + "})");
 
       std::string remove = ("(id=" + boost::lexical_cast<std::string>(metadata[i].resource) +
                             " AND type=" + boost::lexical_cast<std::string>(metadata[i].metadata)
@@ -1951,108 +1951,4 @@
       statement.Execute(args);
     }
   }
-
-
-#if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE)      // Macro introduced in 1.3.1
-#  if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4)
-  // New primitive since Orthanc 1.5.4
-  bool IndexBackend::LookupResourceAndParent(int64_t& id,
-                                             OrthancPluginResourceType& type,
-                                             std::string& parentPublicId,
-                                             const char* publicId)
-  {
-    DatabaseManager::CachedStatement statement(
-      STATEMENT_FROM_HERE, manager_,
-      "SELECT resource.internalId, resource.resourceType, parent.publicId "
-      "FROM Resources AS resource LEFT JOIN Resources parent ON parent.internalId=resource.parentId "
-      "WHERE resource.publicId=${id}");
-
-    statement.SetParameterType("id", ValueType_Utf8String);
-        
-    Dictionary args;
-    args.SetUtf8Value("id", publicId);
-
-    statement.Execute(args);
-
-    if (statement.IsDone())
-    {
-      return false;
-    }
-    else
-    {
-      if (statement.GetResultFieldsCount() != 3)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-
-      statement.SetResultFieldType(0, ValueType_Integer64);
-      statement.SetResultFieldType(1, ValueType_Integer64);      
-      statement.SetResultFieldType(2, ValueType_Utf8String);
-
-      id = ReadInteger64(statement, 0);
-      type = static_cast<OrthancPluginResourceType>(ReadInteger32(statement, 1));
-
-      const IValue& value = statement.GetResultField(2);
-      
-      switch (value.GetType())
-      {
-        case ValueType_Null:
-          parentPublicId.clear();
-          break;
-
-        case ValueType_Utf8String:
-          parentPublicId = dynamic_cast<const Utf8StringValue&>(value).GetContent();
-          break;
-
-        default:
-          throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-      
-      assert((statement.Next(), statement.IsDone()));
-      return true;
-    }
-  }
-#  endif
-#endif
-  
-
-#if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE)      // Macro introduced in 1.3.1
-#  if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4)
-  // New primitive since Orthanc 1.5.4
-  void IndexBackend::GetAllMetadata(std::map<int32_t, std::string>& result,
-                                    int64_t id)
-  {
-    DatabaseManager::CachedStatement statement(
-      STATEMENT_FROM_HERE, manager_,
-      "SELECT type, value FROM Metadata WHERE id=${id}");
-      
-    statement.SetReadOnly(true);
-    statement.SetParameterType("id", ValueType_Integer64);
-
-    Dictionary args;
-    args.SetIntegerValue("id", id);
-
-    statement.Execute(args);
-      
-    result.clear();
-
-    if (!statement.IsDone())
-    {
-      if (statement.GetResultFieldsCount() != 2)
-      {
-        throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
-      }
-      
-      statement.SetResultFieldType(0, ValueType_Integer64);
-      statement.SetResultFieldType(1, ValueType_Utf8String);
-
-      while (!statement.IsDone())
-      {
-        result[ReadInteger32(statement, 0)] = ReadString(statement, 1);
-        statement.Next();
-      }
-    }
-  }
-#  endif
-#endif
 }
--- a/Framework/Plugins/IndexBackend.h	Mon Feb 04 16:03:17 2019 +0100
+++ b/Framework/Plugins/IndexBackend.h	Mon Feb 04 16:32:45 2019 +0100
@@ -283,23 +283,5 @@
                                      int32_t metadata);
 
     virtual void TagMostRecentPatient(int64_t patient);
-
-#if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE)      // Macro introduced in 1.3.1
-#  if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4)
-    // New primitive since Orthanc 1.5.4
-    virtual bool LookupResourceAndParent(int64_t& id,
-                                         OrthancPluginResourceType& type,
-                                         std::string& parentPublicId,
-                                         const char* publicId);
-#  endif
-#endif
-
-#if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE)      // Macro introduced in 1.3.1
-#  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,
-                                int64_t id);
-#  endif
-#endif
   };
 }
--- a/Framework/Plugins/OrthancCppDatabasePlugin.h	Mon Feb 04 16:03:17 2019 +0100
+++ b/Framework/Plugins/OrthancCppDatabasePlugin.h	Mon Feb 04 16:32:45 2019 +0100
@@ -82,8 +82,7 @@
       AllowedAnswers_DicomTag,
       AllowedAnswers_ExportedResource,
       AllowedAnswers_MatchingResource,
-      AllowedAnswers_String,
-      AllowedAnswers_Metadata
+      AllowedAnswers_String
     };
 
     OrthancPluginContext*         context_;
@@ -535,23 +534,6 @@
     virtual int64_t GetLastChangeIndex() = 0;
 
     virtual void TagMostRecentPatient(int64_t patientId) = 0;
-
-#if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE)      // Macro introduced in 1.3.1
-#  if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4)
-    // NB: "parentPublicId" must be cleared if the resource has no parent
-    virtual bool LookupResourceAndParent(int64_t& id,
-      OrthancPluginResourceType& type,
-      std::string& parentPublicId,
-      const char* publicId) = 0;
-#  endif
-#endif
-
-#if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE)      // Macro introduced in 1.3.1
-#  if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4)
-  virtual void GetAllMetadata(std::map<int32_t, std::string>& result,
-                              int64_t id) = 0;
-#  endif
-#endif
   };
 
 
@@ -1668,77 +1650,6 @@
     }
    
 
-#if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE)      // Macro introduced in 1.3.1
-#  if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4)
-    // New primitive since Orthanc 1.5.4
-    static OrthancPluginErrorCode GetAllMetadata(OrthancPluginDatabaseContext* context,
-                                                 void* payload,
-                                                 int64_t resourceId)
-    {
-      IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload);
-      backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_Metadata);
-
-      try
-      {
-        std::map<int32_t, std::string> result;
-        backend->GetAllMetadata(result, resourceId);
-
-        for (std::map<int32_t, std::string>::const_iterator
-               it = result.begin(); it != result.end(); ++it)
-        {
-          OrthancPluginDatabaseAnswerMetadata(backend->GetOutput().context_,
-                                            backend->GetOutput().database_,
-                                            resourceId, it->first, it->second.c_str());
-        }
-        
-        return OrthancPluginErrorCode_Success;
-      }
-      ORTHANC_PLUGINS_DATABASE_CATCH      
-    }
-#  endif
-#endif
-   
-
-#if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE)      // Macro introduced in 1.3.1
-#  if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4)
-    // New primitive since Orthanc 1.5.4
-    static OrthancPluginErrorCode LookupResourceAndParent(OrthancPluginDatabaseContext* context,
-                                                          uint8_t* isExisting,
-                                                          int64_t* id,
-                                                          OrthancPluginResourceType* type,
-                                                          void* payload,
-                                                          const char* publicId)
-    {
-      IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload);
-      backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_String);
-
-      try
-      {
-        std::string parent;
-        if (backend->LookupResourceAndParent(*id, *type, parent, publicId))
-        {
-          *isExisting = 1;
-
-          if (!parent.empty())
-          {
-            OrthancPluginDatabaseAnswerString(backend->GetOutput().context_,
-                                              backend->GetOutput().database_,
-                                              parent.c_str());
-          }
-        }
-        else
-        {
-          *isExisting = 0;
-        }
-        
-        return OrthancPluginErrorCode_Success;
-      }
-      ORTHANC_PLUGINS_DATABASE_CATCH      
-    }
-#  endif
-#endif
-   
-
   public:
     /**
      * Register a custom database back-end written in C++.
@@ -1830,18 +1741,11 @@
       {
         extensions.createInstance = CreateInstance;          // Fast creation of resources
       }
+      
+      performanceWarning = false;
 #endif      
 
-#if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE)      // Macro introduced in 1.3.1
-#  if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4)
-      // Optimizations brought by Orthanc 1.5.4
-      extensions.lookupResourceAndParent = LookupResourceAndParent;
-      extensions.getAllMetadata = GetAllMetadata;
-      performanceWarning = false;
-#  endif
-#endif
-
-  if (performanceWarning)
+      if (performanceWarning)
       {
         char info[1024];
         sprintf(info, 
--- a/Framework/PostgreSQL/PostgreSQLTransaction.cpp	Mon Feb 04 16:03:17 2019 +0100
+++ b/Framework/PostgreSQL/PostgreSQLTransaction.cpp	Mon Feb 04 16:32:45 2019 +0100
@@ -108,7 +108,7 @@
       readOnly_ = false;
     }
 
-    return result.release();
+  return result.release();
   }
 
 
--- a/MySQL/NEWS	Mon Feb 04 16:03:17 2019 +0100
+++ b/MySQL/NEWS	Mon Feb 04 16:32:45 2019 +0100
@@ -1,8 +1,6 @@
 Pending changes in the mainline
 ===============================
 
-* Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
-
 
 Release 2.0 (2019-01-23)
 ========================
--- a/PostgreSQL/NEWS	Mon Feb 04 16:03:17 2019 +0100
+++ b/PostgreSQL/NEWS	Mon Feb 04 16:32:45 2019 +0100
@@ -3,7 +3,6 @@
 
 * Fix build on Debian Buster
 * Remove "ASSERT" in SQL for compatibility with older releases of PostgreSQL
-* Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
 
 
 Release 3.0 (2019-01-21)