diff Framework/Loaders/LoaderCache.cpp @ 1413:cde379b9d1d2 loader-cache-refactoring

LoaderCache is now extensible + factored the uuid normalizing
author Benjamin Golinvaux <bgo@osimis.io>
date Mon, 04 May 2020 18:26:35 +0200
parents f4a06ad1580b
children 998697c5ec74
line wrap: on
line diff
--- a/Framework/Loaders/LoaderCache.cpp	Mon May 04 13:34:46 2020 +0200
+++ b/Framework/Loaders/LoaderCache.cpp	Mon May 04 18:26:35 2020 +0200
@@ -53,10 +53,8 @@
   {
     try
     {
-      
       // normalize keys a little
-      seriesUuid = Orthanc::Toolbox::StripSpaces(seriesUuid);
-      Orthanc::Toolbox::ToLowerCase(seriesUuid);
+      NormalizeUuid(seriesUuid);
 
       // find in cache
       if (seriesVolumeProgressiveLoaders_.find(seriesUuid) == seriesVolumeProgressiveLoaders_.end())
@@ -104,6 +102,9 @@
 
   boost::shared_ptr<OrthancMultiframeVolumeLoader> LoaderCache::GetMultiframeVolumeLoader(std::string instanceUuid)
   {
+    // normalize keys a little
+    NormalizeUuid(instanceUuid);
+
     // if the loader is not available, let's trigger its creation
     if(multiframeVolumeLoaders_.find(instanceUuid) == multiframeVolumeLoaders_.end())
     {
@@ -119,8 +120,7 @@
     try
     {
       // normalize keys a little
-      instanceUuid = Orthanc::Toolbox::StripSpaces(instanceUuid);
-      Orthanc::Toolbox::ToLowerCase(instanceUuid);
+      NormalizeUuid(instanceUuid);
 
       // find in cache
       if (dicomVolumeImageMPRSlicers_.find(instanceUuid) == dicomVolumeImageMPRSlicers_.end())
@@ -194,8 +194,7 @@
     try
     {
       // normalize keys a little
-      inInstanceUuid = Orthanc::Toolbox::StripSpaces(inInstanceUuid);
-      Orthanc::Toolbox::ToLowerCase(inInstanceUuid);
+      NormalizeUuid(inInstanceUuid);
 
       std::string initiallyVisibleStructuresKey = 
         SortAndJoin(initiallyVisibleStructures);
@@ -275,4 +274,15 @@
     DebugDisplayObjRefCountsInMap("dicomVolumeImageMPRSlicers_", dicomVolumeImageMPRSlicers_);
     DebugDisplayObjRefCountsInMap("dicomStructureSetLoaders_", dicomStructureSetLoaders_);
   }
+
+  /**
+  This method could have been called StripSpacesAndChangeToLower but we might want to 
+  add some UUID validation to the argument
+  */
+  void LoaderCache::NormalizeUuid(std::string& uuid)
+  {
+    std::string temp = Orthanc::Toolbox::StripSpaces(uuid);
+    Orthanc::Toolbox::ToLowerCase(temp);
+    uuid.swap(temp);
+  }
 }