From 88f8db26c1a4389ea8ddcd5679f433446d0a55f3 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 08 Oct 2015 09:59:03 +0000
Subject: [PATCH] OPENDJ-1852 Fix feature envy between AttributeIndex and Index* classes
---
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQuery.java | 155 +--------------------------------------------------
1 files changed, 4 insertions(+), 151 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQuery.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQuery.java
index 228b859..ab86794 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQuery.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQuery.java
@@ -26,24 +26,12 @@
*/
package org.opends.server.backends.pluggable;
-import static org.opends.server.backends.pluggable.EntryIDSet.*;
-import static org.opends.server.backends.pluggable.IndexFilter.*;
-
-import java.util.Collection;
-
import org.forgerock.i18n.LocalizableMessageBuilder;
-import org.forgerock.util.Utils;
-/** This class represents a Backend Query. */
-@org.opends.server.types.PublicAPI(
- stability = org.opends.server.types.StabilityLevel.VOLATILE,
- mayInstantiate = false,
- mayExtend = true,
- mayInvoke = false)
-abstract class IndexQuery
+/** This interface represents a Backend Query. */
+// @FunctionalInterface
+interface IndexQuery
{
- private static final String SEPARATOR = "\n ";
-
/**
* Evaluates the index query and returns the EntryIDSet.
*
@@ -54,140 +42,5 @@
* index results.
* @return The non null EntryIDSet as a result of evaluating this query
*/
- public abstract EntryIDSet evaluate(LocalizableMessageBuilder debugMessage, StringBuilder indexNameOut);
-
- /**
- * Creates an IntersectionIndexQuery object from a collection of
- * IndexQuery objects.
- *
- * @param subIndexQueries
- * A collection of IndexQuery objects.
- * @return An IntersectionIndexQuery object.
- */
- static IndexQuery createIntersectionIndexQuery(Collection<IndexQuery> subIndexQueries)
- {
- return new IntersectionIndexQuery(subIndexQueries);
- }
-
- /**
- * Creates a union IndexQuery object from a collection of IndexQuery
- * objects.
- *
- * @param subIndexQueries
- * Collection of IndexQuery objects.
- * @return A UnionIndexQuery object.
- */
- static IndexQuery createUnionIndexQuery(Collection<IndexQuery> subIndexQueries)
- {
- return new UnionIndexQuery(subIndexQueries);
- }
-
- /**
- * Creates an empty IndexQuery object.
- *
- * @return A NullIndexQuery object.
- */
- static IndexQuery createNullIndexQuery()
- {
- return new NullIndexQuery();
- }
-
- /**
- * This class creates a Null IndexQuery. It is used when there is no
- * record in the index. It may also be used when the index contains
- * all the records but an empty EntryIDSet should be returned as part
- * of the optimization.
- */
- private static final class NullIndexQuery extends IndexQuery
- {
- @Override
- public EntryIDSet evaluate(LocalizableMessageBuilder debugMessage, StringBuilder indexNameOut)
- {
- return newUndefinedSet();
- }
-
- @Override
- public String toString()
- {
- return "Null";
- }
- }
-
- /** This class creates an intersection IndexQuery from a collection of IndexQuery objects. */
- private static final class IntersectionIndexQuery extends IndexQuery
- {
- /** Collection of IndexQuery objects. */
- private final Collection<IndexQuery> subIndexQueries;
-
- /**
- * Creates an instance of IntersectionIndexQuery.
- *
- * @param subIndexQueries
- * Collection of IndexQuery objects.
- */
- private IntersectionIndexQuery(Collection<IndexQuery> subIndexQueries)
- {
- this.subIndexQueries = subIndexQueries;
- }
-
- @Override
- public EntryIDSet evaluate(LocalizableMessageBuilder debugMessage, StringBuilder indexNameOut)
- {
- final EntryIDSet entryIDs = newUndefinedSet();
- for (IndexQuery query : subIndexQueries)
- {
- entryIDs.retainAll(query.evaluate(debugMessage, indexNameOut));
- if (isBelowFilterThreshold(entryIDs))
- {
- break;
- }
- }
- return entryIDs;
- }
-
- @Override
- public String toString()
- {
- return "Intersection(" + SEPARATOR + Utils.joinAsString(SEPARATOR, subIndexQueries) + ")";
- }
- }
-
- /** This class creates a union of IndexQuery objects. */
- private static final class UnionIndexQuery extends IndexQuery
- {
- /** Collection containing IndexQuery objects. */
- private final Collection<IndexQuery> subIndexQueries;
-
- /**
- * Creates an instance of UnionIndexQuery.
- *
- * @param subIndexQueries
- * The Collection of IndexQuery objects.
- */
- private UnionIndexQuery(Collection<IndexQuery> subIndexQueries)
- {
- this.subIndexQueries = subIndexQueries;
- }
-
- @Override
- public EntryIDSet evaluate(LocalizableMessageBuilder debugMessage, StringBuilder indexNameOut)
- {
- final EntryIDSet entryIDs = newDefinedSet();
- for (IndexQuery query : subIndexQueries)
- {
- entryIDs.addAll(query.evaluate(debugMessage, indexNameOut));
- if (entryIDs.isDefined() && entryIDs.size() >= CURSOR_ENTRY_LIMIT)
- {
- break;
- }
- }
- return entryIDs;
- }
-
- @Override
- public String toString()
- {
- return "Union(" + SEPARATOR + Utils.joinAsString(SEPARATOR, subIndexQueries) + ")";
- }
- }
+ EntryIDSet evaluate(LocalizableMessageBuilder debugMessage, StringBuilder indexNameOut);
}
--
Gitblit v1.10.0