From 4640fec656d96f3891a5534948f0b4c81df2f89d Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Thu, 26 Jan 2012 23:53:08 +0000
Subject: [PATCH] Fix OPENDJ-406:  Add support for rebuilding all degraded indexes to rebuild-index tool

---
 opends/src/server/org/opends/server/tasks/RebuildTask.java |   25 ++++++++++++++++---------
 1 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/opends/src/server/org/opends/server/tasks/RebuildTask.java b/opends/src/server/org/opends/server/tasks/RebuildTask.java
index e7a800b..f5fcba9 100644
--- a/opends/src/server/org/opends/server/tasks/RebuildTask.java
+++ b/opends/src/server/org/opends/server/tasks/RebuildTask.java
@@ -23,6 +23,7 @@
  *
  *
  *      Copyright 2006-2009 Sun Microsystems, Inc.
+ *      Portions copyright 2012 ForgeRock AS.
  */
 package org.opends.server.tasks;
 import org.opends.messages.Message;
@@ -32,6 +33,7 @@
 import org.opends.server.backends.task.TaskState;
 import org.opends.server.backends.jeb.RebuildConfig;
 import org.opends.server.backends.jeb.BackendImpl;
+import org.opends.server.backends.jeb.RebuildConfig.RebuildMode;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.DN;
@@ -74,7 +76,7 @@
   String baseDN = null;
   ArrayList<String> indexes = null;
   private String tmpDirectory = null;
-  private boolean rebuildAll = false;
+  private RebuildMode rebuildMode = RebuildMode.USER_DEFINED;
 
   /**
    * {@inheritDoc}
@@ -125,14 +127,14 @@
     attrList = taskEntry.getAttribute(typeIndex);
     indexes = TaskUtils.getMultiValueString(attrList);
 
-    if(isRebuildAll(indexes))
+    rebuildMode = getRebuildMode(indexes);
+    if(rebuildMode != RebuildMode.USER_DEFINED)
     {
       if(indexes.size() != 1)
       {
         Message msg = ERR_TASK_INDEXREBUILD_ALL_ERROR.get();
         throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, msg);
       }
-      rebuildAll = true;
       indexes.clear();
     }
 
@@ -141,16 +143,21 @@
 
   }
 
-  private boolean isRebuildAll(List<String> indexList)
+  private RebuildMode getRebuildMode(List<String> indexList)
   {
-    for(String s : indexList)
+    for (String s : indexList)
     {
-      if(s.equalsIgnoreCase(REBUILD_ALL))
+      if (s.equalsIgnoreCase(REBUILD_ALL))
       {
-        return true;
+        return RebuildMode.ALL;
+      }
+
+      if (s.equalsIgnoreCase(REBUILD_DEGRADED))
+      {
+        return RebuildMode.DEGRADED;
       }
     }
-    return false;
+    return RebuildMode.USER_DEFINED;
   }
 
   /**
@@ -240,7 +247,7 @@
       tmpDirectory = "import-tmp";
     }
     rebuildConfig.setTmpDirectory(tmpDirectory);
-    rebuildConfig.setRebuildAll(rebuildAll);
+    rebuildConfig.setRebuildMode(rebuildMode);
     TaskState returnCode = TaskState.COMPLETED_SUCCESSFULLY;
     // Launch the rebuild process.
     try

--
Gitblit v1.10.0