From 9e8e922b244d3484d277e94c83ca8407a8ebd8f6 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 02 Dec 2014 14:46:02 +0000
Subject: [PATCH] IndexFilter.java: Renamed pp() to evaluate(). In evaluateLogicalAndFilter(), extracted evaluateFilters().

---
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexFilter.java |   70 +++++++++++++----------------------
 1 files changed, 26 insertions(+), 44 deletions(-)

diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexFilter.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexFilter.java
index 43aa8bf..d417187 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexFilter.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexFilter.java
@@ -115,7 +115,7 @@
    */
   private EntryIDSet evaluateFilter(SearchFilter filter)
   {
-    EntryIDSet candidates = pp(filter);
+    EntryIDSet candidates = evaluate(filter);
     if (buffer != null)
     {
       candidates.toString(buffer);
@@ -123,11 +123,7 @@
     return candidates;
   }
 
-  /**
-   * @param filter
-   * @return
-   */
-  private EntryIDSet pp(SearchFilter filter)
+  private EntryIDSet evaluate(SearchFilter filter)
   {
     switch (filter.getFilterType())
     {
@@ -239,32 +235,16 @@
     }
 
     // First, process the fast components.
-    for (SearchFilter filter : fastComps)
-    {
-      EntryIDSet set = evaluateFilter(filter);
-      if (retainAll(results, set))
-      {
-        return results;
-      }
-    }
-
-    // Next, process the other (non-range) components.
-    for (SearchFilter filter : otherComps)
-    {
-      EntryIDSet set = evaluateFilter(filter);
-      if (retainAll(results, set))
-      {
-        return results;
-      }
-    }
-
-    // Next, process range component pairs like (cn>=A)(cn<=B).
-
-    if (rangeComps.isEmpty())
+    if (evaluateFilters(results, fastComps)
+        // Next, process the other (non-range) components.
+        || evaluateFilters(results, otherComps)
+        // Are there any range component pairs like (cn>=A)(cn<=B) ?
+        || rangeComps.isEmpty())
     {
       return results;
     }
 
+    // Next, process range component pairs like (cn>=A)(cn<=B).
     ArrayList<SearchFilter> remainComps = new ArrayList<SearchFilter>();
     for (Map.Entry<AttributeType, ArrayList<SearchFilter>> rangeEntry : rangeComps.entrySet())
     {
@@ -285,40 +265,43 @@
           }
           continue;
         }
-        EntryIDSet set = attributeIndex.evaluateBoundedRange(filter1, filter2, buffer, monitor);
 
+        EntryIDSet set = attributeIndex.evaluateBoundedRange(filter1, filter2, buffer, monitor);
         if(monitor.isFilterUseEnabled() && set.isDefined())
         {
           monitor.updateStats(SearchFilter.createANDFilter(rangeList), set.size());
         }
-
         if (retainAll(results, set))
         {
           return results;
         }
-        continue;
       }
-
-      // Add to the remaining range components to be processed.
-      for (SearchFilter filter : rangeList)
+      else
       {
-        remainComps.add(filter);
+        // Add to the remaining range components to be processed.
+        remainComps.addAll(rangeList);
       }
     }
 
     // Finally, process the remaining slow range components.
-    for (SearchFilter filter : remainComps)
-    {
-      EntryIDSet set = evaluateFilter(filter);
-      if (retainAll(results, set))
-      {
-        return results;
-      }
-    }
+    evaluateFilters(results, remainComps);
 
     return results;
   }
 
+  private boolean evaluateFilters(EntryIDSet results, ArrayList<SearchFilter> filters)
+  {
+    for (SearchFilter filter : filters)
+    {
+      final EntryIDSet filteredSet = evaluateFilter(filter);
+      if (retainAll(results, filteredSet))
+      {
+        return true;
+      }
+    }
+    return false;
+  }
+
   /**
    * Retain all IDs in a given set that appear in a second set.
    *
@@ -334,7 +317,6 @@
     // We may have reached the point of diminishing returns where
     // it is quicker to stop now and process the current small number of candidates.
     return a.isDefined() && a.size() <= FILTER_CANDIDATE_THRESHOLD;
-
   }
 
   /**

--
Gitblit v1.10.0