From 503a08608386d679f9af4e9a973b6d8949bf5f89 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 10 Nov 2014 16:28:19 +0000
Subject: [PATCH] AttributeIndex.java: Made code more readable by extracting a few more methods, removing and reordering some method parameters.

---
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java |   74 ++++++++++++++++++++++---------------
 1 files changed, 44 insertions(+), 30 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java
index 8ad4c78..9dd7d02 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java
@@ -164,38 +164,54 @@
 
     AttributeType attrType = indexConfig.getAttribute();
     String name = entryContainer.getDatabasePrefix() + "_" + attrType.getNameOrOID();
-    final int indexEntryLimit = indexConfig.getIndexEntryLimit();
-    final JEIndexConfig config = new JEIndexConfig(indexConfig.getSubstringLength());
 
-    if (indexConfig.getIndexType().contains(IndexType.PRESENCE))
+    buildPresenceIndex(indexConfig, name);
+    buildIndexes(IndexType.EQUALITY, indexConfig, name);
+    buildIndexes(IndexType.SUBSTRING, indexConfig, name);
+    buildIndexes(IndexType.ORDERING, indexConfig, name);
+    buildIndexes(IndexType.APPROXIMATE, indexConfig, name);
+    buildExtensibleIndexes(indexConfig, name);
+
+    final JEIndexConfig config = new JEIndexConfig(indexConfig.getSubstringLength());
+    indexQueryFactory = new IndexQueryFactoryImpl(nameToIndexes, config);
+    extensibleIndexesMapping = computeExtensibleIndexesMapping();
+  }
+
+  private void buildPresenceIndex(LocalDBIndexCfg indexConfig, String name)
+  {
+    IndexType indexType = IndexType.PRESENCE;
+    if (indexConfig.getIndexType().contains(indexType))
     {
-      String indexID = IndexType.PRESENCE.toString();
+      final AttributeType attrType = indexConfig.getAttribute();
+      final int indexEntryLimit = indexConfig.getIndexEntryLimit();
+      String indexID = indexType.toString();
       String indexName = name + "." + indexID;
       Index presenceIndex = newIndex(indexName, indexEntryLimit, new PresenceIndexer(attrType));
       nameToIndexes.put(indexID, presenceIndex);
     }
-    buildIndexes(indexConfig, attrType, name, IndexType.EQUALITY);
-    buildIndexes(indexConfig, attrType, name, IndexType.SUBSTRING);
-    buildIndexes(indexConfig, attrType, name, IndexType.ORDERING);
-    buildIndexes(indexConfig, attrType, name, IndexType.APPROXIMATE);
+  }
 
-    if (indexConfig.getIndexType().contains(IndexType.EXTENSIBLE))
+  private void buildExtensibleIndexes(LocalDBIndexCfg indexConfig, String name) throws ConfigException
+  {
+    final IndexType indexType = IndexType.EXTENSIBLE;
+    if (indexConfig.getIndexType().contains(indexType))
     {
+      final AttributeType attrType = indexConfig.getAttribute();
       Set<String> extensibleRules = indexConfig.getIndexExtensibleMatchingRule();
-      if(extensibleRules == null || extensibleRules.isEmpty())
+      if (extensibleRules == null || extensibleRules.isEmpty())
       {
-        throw new ConfigException(ERR_CONFIG_INDEX_TYPE_NEEDS_MATCHING_RULE.get(attrType, "extensible"));
+        throw new ConfigException(ERR_CONFIG_INDEX_TYPE_NEEDS_MATCHING_RULE.get(attrType, indexType.toString()));
       }
 
       // Iterate through the Set and create the index only if necessary.
-      // Collation equality and Ordering matching rules share the same
-      // indexer and index.
+      // Collation equality and Ordering matching rules share the same indexer and index
       // A Collation substring matching rule is treated differently
       // as it uses a separate indexer and index.
+      final int indexEntryLimit = indexConfig.getIndexEntryLimit();
       for (final String ruleName : extensibleRules)
       {
         MatchingRule rule = DirectoryServer.getMatchingRule(toLowerCase(ruleName));
-        if(rule == null)
+        if (rule == null)
         {
           logger.error(ERR_CONFIG_INDEX_TYPE_NEEDS_VALID_MATCHING_RULE, attrType, ruleName);
           continue;
@@ -205,16 +221,13 @@
           final String indexId = indexer.getIndexID();
           if (!nameToIndexes.containsKey(indexId))
           {
-            //There is no index available for this index id. Create a new index.
+            // There is no index available for this index id. Create a new index
             final Index index = newAttributeIndex(attrType, name, indexEntryLimit, indexer);
             nameToIndexes.put(indexId, index);
           }
         }
       }
     }
-
-    indexQueryFactory = new IndexQueryFactoryImpl(nameToIndexes, config);
-    extensibleIndexesMapping = computeExtensibleIndexesMapping();
   }
 
   private Index newIndex(String indexName, int indexEntryLimit, Indexer indexer)
@@ -222,11 +235,11 @@
     return new Index(indexName, indexer, state, indexEntryLimit, cursorEntryLimit, false, env, entryContainer);
   }
 
-  private void buildIndexes(LocalDBIndexCfg cfg, AttributeType attrType, String name, IndexType indexType)
-      throws ConfigException
+  private void buildIndexes(IndexType indexType, LocalDBIndexCfg cfg, String name) throws ConfigException
   {
     if (cfg.getIndexType().contains(indexType))
     {
+      final AttributeType attrType = indexConfig.getAttribute();
       final String indexID = indexType.toString();
       final MatchingRule rule = getMatchingRule(indexType, attrType);
       if (rule == null)
@@ -867,11 +880,11 @@
       AttributeType attrType = cfg.getAttribute();
       String name = entryContainer.getDatabasePrefix() + "_" + attrType.getNameOrOID();
 
-      applyChangeToPresenceIndex(cfg, attrType, name, adminActionRequired, messages);
-      applyChangeToIndex(cfg, attrType, name, IndexType.EQUALITY, adminActionRequired, messages);
-      applyChangeToIndex(cfg, attrType, name, IndexType.SUBSTRING, adminActionRequired, messages);
-      applyChangeToIndex(cfg, attrType, name, IndexType.ORDERING, adminActionRequired, messages);
-      applyChangeToIndex(cfg, attrType, name, IndexType.APPROXIMATE, adminActionRequired, messages);
+      applyChangeToPresenceIndex(cfg, name, adminActionRequired, messages);
+      applyChangeToIndex(IndexType.EQUALITY, cfg, name, adminActionRequired, messages);
+      applyChangeToIndex(IndexType.SUBSTRING, cfg, name, adminActionRequired, messages);
+      applyChangeToIndex(IndexType.ORDERING, cfg, name, adminActionRequired, messages);
+      applyChangeToIndex(IndexType.APPROXIMATE, cfg, name, adminActionRequired, messages);
       applyChangeToExtensibleIndexes(cfg, attrType, name, adminActionRequired, messages);
 
       extensibleIndexesMapping = computeExtensibleIndexesMapping();
@@ -994,7 +1007,7 @@
     return rules;
   }
 
-  private void applyChangeToIndex(LocalDBIndexCfg cfg, AttributeType attrType, String name, IndexType indexType,
+  private void applyChangeToIndex(IndexType indexType, LocalDBIndexCfg cfg, String name,
       AtomicBoolean adminActionRequired, ArrayList<LocalizableMessage> messages)
   {
     String indexId = indexType.toString();
@@ -1005,6 +1018,7 @@
       return;
     }
 
+    final AttributeType attrType = cfg.getAttribute();
     final int indexEntryLimit = cfg.getIndexEntryLimit();
     if (index == null)
     {
@@ -1027,8 +1041,8 @@
     }
   }
 
-  private void applyChangeToPresenceIndex(LocalDBIndexCfg cfg, AttributeType attrType, String name,
-      AtomicBoolean adminActionRequired, ArrayList<LocalizableMessage> messages)
+  private void applyChangeToPresenceIndex(LocalDBIndexCfg cfg, String name, AtomicBoolean adminActionRequired,
+      ArrayList<LocalizableMessage> messages)
   {
     IndexType indexType = IndexType.PRESENCE;
     String indexId = indexType.toString();
@@ -1039,11 +1053,11 @@
       return;
     }
 
+    final AttributeType attrType = cfg.getAttribute();
     final int indexEntryLimit = cfg.getIndexEntryLimit();
     if (index == null)
     {
-      Indexer presenceIndexer = new PresenceIndexer(attrType);
-      index = newIndex(name + ".presence", indexEntryLimit, presenceIndexer);
+      index = newIndex(name + "." + indexType, indexEntryLimit, new PresenceIndexer(attrType));
       openIndex(index, adminActionRequired, messages);
       nameToIndexes.put(indexId, index);
     }

--
Gitblit v1.10.0