diff OrthancServer/Search/Compatibility/DatabaseLookup.cpp @ 3084:195ba4cbac3f db-changes

reorganization
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 04 Jan 2019 16:42:55 +0100
parents ead8576a02ef
children c829758b9ca0
line wrap: on
line diff
--- a/OrthancServer/Search/Compatibility/DatabaseLookup.cpp	Fri Jan 04 15:52:19 2019 +0100
+++ b/OrthancServer/Search/Compatibility/DatabaseLookup.cpp	Fri Jan 04 16:42:55 2019 +0100
@@ -92,7 +92,7 @@
     
     
     static void ApplyIdentifierConstraint(SetOfResources& candidates,
-                                          CompatibilityDatabaseWrapper& database,
+                                          CompatibilityDatabaseWrapper& compatibility,
                                           const DatabaseConstraint& constraint,
                                           ResourceType level)
     {
@@ -101,23 +101,23 @@
       switch (constraint.GetConstraintType())
       {
         case ConstraintType_Equal:
-          database.LookupIdentifier(matches, level, constraint.GetTag(),
+          compatibility.LookupIdentifier(matches, level, constraint.GetTag(),
                                     IdentifierConstraintType_Equal, constraint.GetSingleValue());
           break;
           
         case ConstraintType_SmallerOrEqual:
-          database.LookupIdentifier(matches, level, constraint.GetTag(),
+          compatibility.LookupIdentifier(matches, level, constraint.GetTag(),
                                     IdentifierConstraintType_SmallerOrEqual, constraint.GetSingleValue());
           break;
           
         case ConstraintType_GreaterOrEqual:
-          database.LookupIdentifier(matches, level, constraint.GetTag(),
+          compatibility.LookupIdentifier(matches, level, constraint.GetTag(),
                                     IdentifierConstraintType_GreaterOrEqual, constraint.GetSingleValue());
 
           break;
           
         case ConstraintType_Wildcard:
-          database.LookupIdentifier(matches, level, constraint.GetTag(),
+          compatibility.LookupIdentifier(matches, level, constraint.GetTag(),
                                     IdentifierConstraintType_Wildcard, constraint.GetSingleValue());
 
           break;
@@ -126,7 +126,7 @@
           for (size_t i = 0; i < constraint.GetValuesCount(); i++)
           {
             std::list<int64_t> tmp;
-            database.LookupIdentifier(tmp, level, constraint.GetTag(),
+            compatibility.LookupIdentifier(tmp, level, constraint.GetTag(),
                                       IdentifierConstraintType_Wildcard, constraint.GetValue(i));
             matches.splice(matches.end(), tmp);
           }
@@ -142,7 +142,7 @@
 
     
     static void ApplyIdentifierRange(SetOfResources& candidates,
-                                     CompatibilityDatabaseWrapper& database,
+                                     CompatibilityDatabaseWrapper& compatibility,
                                      const DatabaseConstraint& smaller,
                                      const DatabaseConstraint& greater,
                                      ResourceType level)
@@ -153,14 +153,15 @@
              ServerToolbox::IsIdentifier(smaller.GetTag(), level));
 
       std::list<int64_t> matches;
-      database.LookupIdentifierRange(matches, level, smaller.GetTag(),
+      compatibility.LookupIdentifierRange(matches, level, smaller.GetTag(),
                                      greater.GetSingleValue(), smaller.GetSingleValue());
       candidates.Intersect(matches);
     }
 
     
     static void ApplyLevel(SetOfResources& candidates,
-                           CompatibilityDatabaseWrapper& database,
+                           IDatabaseWrapper& database,
+                           CompatibilityDatabaseWrapper& compatibility,
                            const std::vector<DatabaseConstraint>& lookup,
                            ResourceType level)
     {
@@ -220,7 +221,7 @@
             greater != NULL)
         {
           // There is a range constraint: Apply it, as it is more efficient
-          ApplyIdentifierRange(candidates, database, *smaller, *greater, level);
+          ApplyIdentifierRange(candidates, compatibility, *smaller, *greater, level);
         }
         else
         {
@@ -235,7 +236,7 @@
           if (*it2 != smaller &&
               *it2 != greater)
           {
-            ApplyIdentifierConstraint(candidates, database, **it2, level);
+            ApplyIdentifierConstraint(candidates, compatibility, **it2, level);
           }
         }
       }
@@ -257,7 +258,7 @@
         }
 
         std::list<int64_t>  source;
-        candidates.Flatten(source);
+        candidates.Flatten(compatibility, source);
         candidates.Clear();
 
         std::list<int64_t>  filtered;
@@ -289,16 +290,16 @@
     }
 
 
-    static std::string GetOneInstance(IDatabaseWrapper& database,
+    static std::string GetOneInstance(IDatabaseWrapper& compatibility,
                                       int64_t resource,
                                       ResourceType level)
     {
       for (int i = level; i < ResourceType_Instance; i++)
       {
-        assert(database.GetResourceType(resource) == static_cast<ResourceType>(i));
+        assert(compatibility.GetResourceType(resource) == static_cast<ResourceType>(i));
 
         std::list<int64_t> children;
-        database.GetChildrenInternalId(children, resource);
+        compatibility.GetChildrenInternalId(children, resource);
           
         if (children.empty())
         {
@@ -308,7 +309,7 @@
         resource = children.front();
       }
 
-      return database.GetPublicId(resource);
+      return compatibility.GetPublicId(resource);
     }
                            
 
@@ -350,7 +351,7 @@
 
       for (int level = upperLevel; level <= lowerLevel; level++)
       {
-        ApplyLevel(candidates, database_, lookup, static_cast<ResourceType>(level));
+        ApplyLevel(candidates, database_, compatibility_, lookup, static_cast<ResourceType>(level));
 
         if (level != lowerLevel)
         {
@@ -359,7 +360,7 @@
       }
 
       std::list<int64_t> resources;
-      candidates.Flatten(resources);
+      candidates.Flatten(compatibility_, resources);
 
       // Climb up, up to queryLevel