From 7715a0a2eae8b4fbe540ed84e90928f8080078d3 Mon Sep 17 00:00:00 2001
From: Yannick Lecaillez <ylecaillez@forgerock.com>
Date: Mon, 05 Oct 2015 09:43:32 +0000
Subject: [PATCH] Refactoring: Remove dead-code, use factory methods.

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java |   63 ++++++++++++++++++++++---------
 1 files changed, 45 insertions(+), 18 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java
index 9befdbf..e4af5f6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java
@@ -261,12 +261,11 @@
       try (final Importer dbStorage = rootContainer.getStorage().startImport())
       {
         final EntryContainer entryContainer = rootContainer.getEntryContainer(rebuildConfig.getBaseDN());
-        final long totalEntries =
-            entryContainer.getID2Entry().getRecordCount(new ImporterToWriteableTransactionAdapter(dbStorage));
+        final long totalEntries = entryContainer.getID2Entry().getRecordCount(asWriteableTransaction(dbStorage));
         final Set<String> indexesToRebuild = selectIndexesToRebuild(entryContainer, rebuildConfig, totalEntries);
         if (rebuildConfig.isClearDegradedState())
         {
-          visitIndexes(entryContainer, new SpecificIndexFilter(new TrustModifier(dbStorage, true), indexesToRebuild));
+          visitIndexes(entryContainer, visitOnly(indexesToRebuild, setTrust(true, dbStorage)));
           logger.info(NOTE_REBUILD_CLEARDEGRADEDSTATE_FINAL_STATUS, indexesToRebuild);
           return;
         }
@@ -313,15 +312,18 @@
         logger.info(NOTE_REBUILD_ALL_START, totalEntries);
         break;
       case DEGRADED:
-        visitIndexes(entryContainer, new DegradedIndexFilter(selector));
+        visitIndexes(entryContainer, visitOnlyDegraded(selector));
         logger.info(NOTE_REBUILD_DEGRADED_START, totalEntries);
         break;
       case USER_DEFINED:
-        visitIndexes(entryContainer, new SpecificIndexFilter(selector, rebuildConfig.getRebuildList()));
-        if (!rebuildConfig.isClearDegradedState()) {
-            logger.info(NOTE_REBUILD_START, Utils.joinAsString(", ", rebuildConfig.getRebuildList()), totalEntries);
+        visitIndexes(entryContainer, visitOnly(rebuildConfig.getRebuildList(), selector));
+        if (!rebuildConfig.isClearDegradedState())
+        {
+          logger.info(NOTE_REBUILD_START, Utils.joinAsString(", ", rebuildConfig.getRebuildList()), totalEntries);
         }
         break;
+      default:
+        throw new UnsupportedOperationException("Unsupported rebuild mode " + rebuildConfig.getRebuildMode());
       }
       return selector.getSelectedIndexNames();
     }
@@ -826,14 +828,14 @@
     void beforeImport(EntryContainer entryContainer)
     {
       clearEntryContainerTrees(entryContainer);
-      visitIndexes(entryContainer, new TrustModifier(importer, false));
+      visitIndexes(entryContainer, setTrust(false, importer));
     }
 
     abstract Callable<Void> newPhaseTwoTask(TreeName treeName, Chunk chunk, PhaseTwoProgressReporter progressReporter);
 
     void afterImport(EntryContainer entryContainer)
     {
-      visitIndexes(entryContainer, new TrustModifier(importer, true));
+      visitIndexes(entryContainer, setTrust(true, importer));
     }
 
     final void clearEntryContainerTrees(EntryContainer entryContainer)
@@ -1015,36 +1017,36 @@
   /** Import only a specific indexes list while ignoring everything else. */
   private static final class RebuildIndexStrategy extends AbstractTwoPhaseImportStrategy
   {
-    private final Set<String> indexNames;
+    private final Set<String> indexesToRebuild;
 
     RebuildIndexStrategy(Collection<EntryContainer> entryContainers, Importer importer, File tempDir,
         BufferPool bufferPool, Executor sorter, Collection<String> indexNames)
     {
       super(entryContainers, importer, tempDir, bufferPool, sorter);
-      this.indexNames = new HashSet<>(indexNames.size());
+      this.indexesToRebuild = new HashSet<>(indexNames.size());
       for(String indexName : indexNames)
       {
-        this.indexNames.add(indexName.toLowerCase());
+        this.indexesToRebuild.add(indexName.toLowerCase());
       }
     }
 
     @Override
     void beforeImport(EntryContainer entryContainer)
     {
-      visitIndexes(entryContainer, new SpecificIndexFilter(new TrustModifier(importer, false), indexNames));
-      visitIndexes(entryContainer, new SpecificIndexFilter(new ClearDatabase(importer), indexNames));
+      visitIndexes(entryContainer, visitOnly(indexesToRebuild, setTrust(false, importer)));
+      visitIndexes(entryContainer, visitOnly(indexesToRebuild, clearDatabase(importer)));
     }
 
     @Override
     void afterImport(EntryContainer entryContainer)
     {
-      visitIndexes(entryContainer, new SpecificIndexFilter(new TrustModifier(importer, true), indexNames));
+      visitIndexes(entryContainer, visitOnly(indexesToRebuild, setTrust(true, importer)));
     }
 
     @Override
     public Chunk newChunk(TreeName treeName) throws Exception
     {
-      if (indexNames.contains(treeName.getIndexId().toLowerCase()))
+      if (indexesToRebuild.contains(treeName.getIndexId().toLowerCase()))
       {
         return newExternalSortChunk(treeName);
       }
@@ -1055,7 +1057,7 @@
     @Override
     public Callable<Void> newPhaseTwoTask(TreeName treeName, Chunk chunk, PhaseTwoProgressReporter progressReporter)
     {
-      if (indexNames.contains(treeName.getIndexId().toLowerCase()))
+      if (indexesToRebuild.contains(treeName.getIndexId().toLowerCase()))
       {
         if (isDN2ID(treeName))
         {
@@ -3267,6 +3269,11 @@
     }
   }
 
+  private static final IndexVisitor setTrust(boolean trustValue, Importer importer)
+  {
+    return new TrustModifier(importer, trustValue);
+  }
+
   /** Update the trust state of the visited indexes. */
   private static final class TrustModifier extends IndexVisitor
   {
@@ -3275,7 +3282,7 @@
 
     TrustModifier(Importer importer, boolean trustValue)
     {
-      this.txn = new ImporterToWriteableTransactionAdapter(importer);
+      this.txn = asWriteableTransaction(importer);
       this.trustValue = trustValue;
     }
 
@@ -3292,6 +3299,11 @@
     }
   }
 
+  private static IndexVisitor clearDatabase(Importer importer)
+  {
+    return new ClearDatabase(importer);
+  }
+
   /** Delete & recreate the database of the visited indexes. */
   private static final class ClearDatabase extends IndexVisitor
   {
@@ -3309,6 +3321,11 @@
     }
   }
 
+  private static IndexVisitor visitOnlyDegraded(IndexVisitor delegate)
+  {
+    return new DegradedIndexFilter(delegate);
+  }
+
   /** Visit indexes which are in a degraded state. */
   private static final class DegradedIndexFilter extends IndexVisitor
   {
@@ -3362,6 +3379,11 @@
     }
   }
 
+  private static final IndexVisitor visitOnly(Collection<String> indexNames, IndexVisitor delegate)
+  {
+    return new SpecificIndexFilter(delegate, indexNames);
+  }
+
   /** Visit indexes only if their name match one contained in a list. */
   private static final class SpecificIndexFilter extends IndexVisitor
   {
@@ -3448,6 +3470,11 @@
     }
   }
 
+  private static WriteableTransaction asWriteableTransaction(Importer importer)
+  {
+    return new ImporterToWriteableTransactionAdapter(importer);
+  }
+
   /** Adapter allowing to use an {@link Importer} as a {@link WriteableTransaction}. */
   private static final class ImporterToWriteableTransactionAdapter implements WriteableTransaction
   {

--
Gitblit v1.10.0