From 8107ed80c000c298e06b850c3044ed9e59afdedf Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Thu, 09 Apr 2015 21:25:21 +0000
Subject: [PATCH] Minor code cleanup: use matching rule's index ID for identifying indexes.
---
opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java | 148 +++++++++++++------------------------------------
1 files changed, 40 insertions(+), 108 deletions(-)
diff --git a/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java b/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java
index 145fd99..0378630 100644
--- a/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java
+++ b/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java
@@ -121,7 +121,6 @@
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.LDIFImportResult;
import org.opends.server.util.Platform;
-import org.opends.server.util.StaticUtils;
/**
* This class provides the engine that performs both importing of LDIF files and
@@ -161,7 +160,10 @@
private static final int SMALL_HEAP_SIZE = 256 * MB;
/** The DN attribute type. */
- private static final AttributeType dnType;
+ private static final AttributeType DN_TYPE;
+
+ /** The dn2id "index ID". */
+ private static final String DN2ID = "dn2id";
/** Phase one buffer count. */
private final AtomicInteger bufferCount = new AtomicInteger(0);
@@ -268,7 +270,7 @@
{
attrType = DirectoryServer.getDefaultAttributeType("dn");
}
- dnType = attrType;
+ DN_TYPE = attrType;
}
/**
@@ -1549,7 +1551,7 @@
private final Map<IndexKey, IndexOutputBuffer> indexBufferMap = new HashMap<IndexKey, IndexOutputBuffer>();
private final Set<ByteString> insertKeySet = new HashSet<ByteString>();
private final EntryInformation entryInfo = new EntryInformation();
- private final IndexKey dnIndexKey = new IndexKey(dnType, ImportIndexType.DN, 1);
+ private final IndexKey dnIndexKey = new IndexKey(DN_TYPE, DN2ID, 1);
public ImportTask(final WriteableTransaction txn)
{
@@ -1662,8 +1664,7 @@
for (Map.Entry<String, MatchingRuleIndex> mapEntry : attrIndex.getNameToIndexes().entrySet())
{
- ImportIndexType indexType = toImportIndexType(mapEntry.getKey());
- processAttribute(mapEntry.getValue(), indexType, entry, attrType, entryID, options);
+ processAttribute(mapEntry.getValue(), mapEntry.getKey(), entry, attrType, entryID, options);
}
}
@@ -1678,12 +1679,12 @@
buffer.flush(txn);
}
- private void processAttribute(MatchingRuleIndex index, ImportIndexType indexType, Entry entry,
+ private void processAttribute(MatchingRuleIndex index, String indexID, Entry entry,
AttributeType attributeType, EntryID entryID, IndexingOptions options) throws InterruptedException
{
if (index != null)
{
- IndexKey indexKey = new IndexKey(attributeType, indexType, index.getIndexEntryLimit());
+ IndexKey indexKey = new IndexKey(attributeType, indexID, index.getIndexEntryLimit());
processAttribute(index, entry, entryID, options, indexKey);
}
}
@@ -2628,7 +2629,7 @@
{
return;
}
- boolean isDN2ID = ImportIndexType.DN.equals(indexKey.getIndexType());
+ boolean isDN2ID = DN2ID.equals(indexKey.getIndexID());
IndexManager indexMgr = new IndexManager(indexKey.getName(), isDN2ID, indexKey.getEntryLimit());
if (isDN2ID)
{
@@ -3033,21 +3034,19 @@
{
for (Map.Entry<String, MatchingRuleIndex> mapEntry : attrIndex.getNameToIndexes().entrySet())
{
- ImportIndexType indexType = toImportIndexType(mapEntry.getKey());
- fillIndexMap(txn, attrType, mapEntry.getValue(), indexType, onlyDegraded);
+ fillIndexMap(txn, attrType, mapEntry.getValue(), mapEntry.getKey(), onlyDegraded);
}
}
private void fillIndexMap(WriteableTransaction txn, AttributeType attrType, MatchingRuleIndex index,
- ImportIndexType importIndexType, boolean onlyDegraded)
+ String importIndexID, boolean onlyDegraded)
{
if ((!onlyDegraded || !index.isTrusted())
&& (!rebuildConfig.isClearDegradedState() || index.getRecordCount(txn) == 0))
{
putInIdContainerMap(index);
- int indexEntryLimit = !importIndexType.isExtensible ? index.getIndexEntryLimit() : 0;
- final IndexKey key = new IndexKey(attrType, importIndexType, indexEntryLimit);
+ final IndexKey key = new IndexKey(attrType, importIndexID, index.getIndexEntryLimit());
indexMap.put(key, index);
}
}
@@ -3072,9 +3071,8 @@
for (Map.Entry<IndexKey, MatchingRuleIndex> mapEntry : indexMap.entrySet())
{
- final ImportIndexType indexType = mapEntry.getKey().getIndexType();
final Index index = mapEntry.getValue();
- if (indexType.isExtensible || !onlyDegraded || !index.isTrusted())
+ if (!onlyDegraded || !index.isTrusted())
{
entryContainer.clearDatabase(txn, index);
}
@@ -3623,106 +3621,43 @@
}
}
- /** Defines the individual index type available. */
- enum ImportIndexType
- {
- /** The DN index type. */
- DN(false),
- /** The equality index type. */
- EQUALITY(false),
- /** The presence index type. */
- PRESENCE(false),
- /** The sub-string index type. */
- SUBSTRING(false),
- /** The ordering index type. */
- ORDERING(false),
- /** The approximate index type. */
- APPROXIMATE(false),
- /** The extensible sub-string index type. */
- EX_SUBSTRING(true),
- /** The extensible shared index type. */
- EX_SHARED(true),
- /** The vlv index type. */
- VLV(false);
-
- private final boolean isExtensible;
-
- private ImportIndexType(boolean isExtensible)
- {
- this.isExtensible = isExtensible;
- }
- }
-
- static ImportIndexType toImportIndexType(String indexID)
- {
- if (IndexType.EQUALITY.toString().equals(indexID))
- {
- return ImportIndexType.EQUALITY;
- }
- else if (IndexType.PRESENCE.toString().equals(indexID))
- {
- return ImportIndexType.PRESENCE;
- }
- else if (IndexType.SUBSTRING.toString().equals(indexID))
- {
- return ImportIndexType.SUBSTRING;
- }
- else if (IndexType.ORDERING.toString().equals(indexID))
- {
- return ImportIndexType.ORDERING;
- }
- else if (IndexType.APPROXIMATE.toString().equals(indexID))
- {
- return ImportIndexType.APPROXIMATE;
- }
- else if (indexID.endsWith(EXTENSIBLE_INDEXER_ID_SUBSTRING))
- {
- return ImportIndexType.EX_SUBSTRING;
- }
- else
- {
- return ImportIndexType.EX_SHARED;
- }
- }
-
/**
- * This class is used as an index key for hash maps that need to process
- * multiple suffix index elements into a single queue and/or maps based on
- * both attribute type and index type (ie., cn.equality, sn.equality,...).
+ * This class is used as an index key for hash maps that need to process multiple suffix index
+ * elements into a single queue and/or maps based on both attribute type and index ID (ie.,
+ * cn.equality, sn.equality,...).
*/
public static class IndexKey
{
private final AttributeType attributeType;
- private final ImportIndexType indexType;
+ private final String indexID;
private final int entryLimit;
/**
- * Create index key instance using the specified attribute type, index type
- * and index entry limit.
+ * Create index key instance using the specified attribute type, index ID and index entry
+ * limit.
*
* @param attributeType
* The attribute type.
- * @param indexType
- * The index type.
+ * @param indexID
+ * The index ID taken from the matching rule's indexer.
* @param entryLimit
* The entry limit for the index.
*/
- private IndexKey(AttributeType attributeType, ImportIndexType indexType, int entryLimit)
+ private IndexKey(AttributeType attributeType, String indexID, int entryLimit)
{
this.attributeType = attributeType;
- this.indexType = indexType;
+ this.indexID = indexID;
this.entryLimit = entryLimit;
}
/**
- * An equals method that uses both the attribute type and the index type.
- * Only returns {@code true} if the attribute type and index type are equal.
+ * An equals method that uses both the attribute type and the index ID. Only returns
+ * {@code true} if the attribute type and index ID are equal.
*
* @param obj
* the object to compare.
- * @return {@code true} if the objects are equal, or {@code false} if they
- * are not.
+ * @return {@code true} if the objects are equal, or {@code false} if they are not.
*/
@Override
public boolean equals(Object obj)
@@ -3731,7 +3666,7 @@
{
IndexKey oKey = (IndexKey) obj;
if (attributeType.equals(oKey.getAttributeType())
- && indexType.equals(oKey.getIndexType()))
+ && indexID.equals(oKey.getIndexID()))
{
return true;
}
@@ -3740,16 +3675,15 @@
}
/**
- * A hash code method that adds the hash codes of the attribute type and
- * index type and returns that value.
+ * A hash code method that adds the hash codes of the attribute type and index ID and returns
+ * that value.
*
- * @return The combined hash values of attribute type hash code and the
- * index type hash code.
+ * @return The combined hash values of attribute type hash code and the index ID hash code.
*/
@Override
public int hashCode()
{
- return attributeType.hashCode() + indexType.hashCode();
+ return attributeType.hashCode() + indexID.hashCode();
}
/**
@@ -3763,26 +3697,24 @@
}
/**
- * Return the index type.
+ * Return the index ID.
*
- * @return The index type.
+ * @return The index ID.
*/
- private ImportIndexType getIndexType()
+ private String getIndexID()
{
- return indexType;
+ return indexID;
}
/**
- * Return the index key name, which is the attribute type primary name, a
- * period, and the index type name. Used for building file names and
- * progress output.
+ * Return the index key name, which is the attribute type primary name, a period, and the index
+ * ID name. Used for building file names and progress output.
*
* @return The index key name.
*/
private String getName()
{
- return attributeType.getPrimaryName() + "."
- + StaticUtils.toLowerCase(indexType.name());
+ return attributeType.getPrimaryName() + "." + indexID;
}
/**
@@ -3801,7 +3733,7 @@
{
return getClass().getSimpleName()
+ "(attributeType=" + attributeType
- + ", indexType=" + indexType
+ + ", indexID=" + indexID
+ ", entryLimit=" + entryLimit
+ ")";
}
--
Gitblit v1.10.0