diff OrthancServer/ServerContext.cpp @ 3033:5da6d1063d8f db-changes

effectively replacing LookupResource by DatabaseLookup in searches
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 19 Dec 2018 13:58:28 +0100
parents 18a2d196414b
children 54e422fe31ce
line wrap: on
line diff
--- a/OrthancServer/ServerContext.cpp	Wed Dec 19 13:10:48 2018 +0100
+++ b/OrthancServer/ServerContext.cpp	Wed Dec 19 13:58:28 2018 +0100
@@ -774,8 +774,8 @@
 
 
   void ServerContext::Apply(ILookupVisitor& visitor,
-                            const ::Orthanc::LookupResource& lookup,
-                            const DatabaseLookup& lookup2,
+                            const DatabaseLookup& lookup,
+                            ResourceType queryLevel,
                             size_t since,
                             size_t limit)
   {
@@ -807,7 +807,7 @@
                                "should be \"Always\", \"Never\" or \"Answers\": " + value);
       }
 
-      if (lookup.GetLevel() == ResourceType_Instance)
+      if (queryLevel == ResourceType_Instance)
       {
         databaseLimit = lock.GetConfiguration().GetUnsignedIntegerParameter("LimitFindInstances", 0);
       }
@@ -817,42 +817,14 @@
       }
     }      
 
-
     std::vector<std::string> resources, instances;
-    GetIndex().FindCandidates(resources, instances, lookup);
-
-    bool complete = true;
-
-#if 1
-    {
-      std::vector<std::string> resources2, instances2;
-
-      size_t lookupLimit = (databaseLimit == 0 ? 0 : databaseLimit + 1);      
-      GetIndex().ApplyLookupResources(resources2, instances2, lookup2, lookup.GetLevel(), lookupLimit);
 
-      if (databaseLimit != 0 &&
-          resources2.size() > databaseLimit)
-      {
-        complete = false;
-      }
-      
-      // Sanity checks
-      std::set<std::string> r;
-      for (size_t i = 0; i < resources2.size(); i++)
-      {
-        r.insert(resources2[i]);
-      }
+    const size_t lookupLimit = (databaseLimit == 0 ? 0 : databaseLimit + 1);      
+    GetIndex().ApplyLookupResources(resources, instances, lookup, queryLevel, lookupLimit);
 
-      printf("%d %d\n", resources2.size(), resources.size());
-      assert(resources2.size() >= resources.size());
-      
-      for (size_t i = 0; i < resources.size(); i++)
-      {
-        assert(r.find(resources[i]) != r.end());
-      }
-    }
-#endif
-    
+    bool complete = (databaseLimit == 0 ||
+                     resources.size() > databaseLimit);
+
     LOG(INFO) << "Number of candidate resources after fast DB filtering on main DICOM tags: " << resources.size();
 
     assert(resources.size() == instances.size());