From 24ea516ccb0c967bf70d2326e9abc59fc2c238a6 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Tue, 27 Oct 2009 18:04:55 +0000
Subject: [PATCH] Fix for issue 4323 (Indexes: remove id2children and id2subtree from control panel) Fix for issue 4322 (Indexes: rebuild-all not available in the control-panel) Identify the indexes and check whether rebuildAll should be called or not.
---
opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/task/RebuildIndexTask.java | 88 +++++++++++++++++++++++++++++++++++++++----
1 files changed, 79 insertions(+), 9 deletions(-)
diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/task/RebuildIndexTask.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/task/RebuildIndexTask.java
index a2ccac5..b654d02 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/task/RebuildIndexTask.java
+++ b/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/task/RebuildIndexTask.java
@@ -31,6 +31,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashSet;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -40,6 +41,7 @@
import org.opends.guitools.controlpanel.datamodel.AbstractIndexDescriptor;
import org.opends.guitools.controlpanel.datamodel.BackendDescriptor;
import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
+import org.opends.guitools.controlpanel.datamodel.IndexDescriptor;
import org.opends.guitools.controlpanel.datamodel.VLVIndexDescriptor;
import org.opends.guitools.controlpanel.ui.ColorAndFontConstants;
import org.opends.guitools.controlpanel.ui.ProgressDialog;
@@ -64,6 +66,12 @@
new TreeSet<AbstractIndexDescriptor>();
/**
+ * The indexes that must not be specified in the command-line.
+ */
+ public static final String[] INDEXES_NOT_TO_SPECIFY =
+ {"id2children", "id2subtree"};
+
+ /**
* Constructor of the task.
* @param info the control panel information.
* @param dlg the progress dialog where the task progress will be displayed.
@@ -254,17 +262,24 @@
args.add("--baseDN");
args.add(baseDN);
- for (AbstractIndexDescriptor index : indexes)
+ if (rebuildAll())
{
- args.add("--index");
- if (index instanceof VLVIndexDescriptor)
+ args.add("--rebuildAll");
+ }
+ else
+ {
+ for (AbstractIndexDescriptor index : indexes)
{
- args.add(
- Utilities.getVLVNameInCommandLine((VLVIndexDescriptor)index));
- }
- else
- {
- args.add(index.getName());
+ args.add("--index");
+ if (index instanceof VLVIndexDescriptor)
+ {
+ args.add(
+ Utilities.getVLVNameInCommandLine((VLVIndexDescriptor)index));
+ }
+ else
+ {
+ args.add(index.getName());
+ }
}
}
@@ -364,4 +379,59 @@
}
});
}
+
+ private boolean rebuildAll()
+ {
+ boolean rebuildAll = true;
+ Set<BackendDescriptor> backends = new HashSet<BackendDescriptor>();
+ for (AbstractIndexDescriptor index : indexes)
+ {
+ backends.add(index.getBackend());
+ }
+ for (BackendDescriptor backend : backends)
+ {
+ Set<AbstractIndexDescriptor> allIndexes =
+ new HashSet<AbstractIndexDescriptor>();
+ allIndexes.addAll(backend.getIndexes());
+ allIndexes.addAll(backend.getVLVIndexes());
+ for (AbstractIndexDescriptor index : allIndexes)
+ {
+ if (!ignoreIndex(index))
+ {
+ boolean found = false;
+ for (AbstractIndexDescriptor indexToRebuild : indexes)
+ {
+ if (indexToRebuild.equals(index))
+ {
+ found = true;
+ break;
+ }
+ }
+ if (!found)
+ {
+ rebuildAll = false;
+ break;
+ }
+ }
+ }
+ }
+ return rebuildAll;
+ }
+
+ private boolean ignoreIndex(AbstractIndexDescriptor index)
+ {
+ boolean ignoreIndex = false;
+ if (index instanceof IndexDescriptor)
+ {
+ for (String name : INDEXES_NOT_TO_SPECIFY)
+ {
+ if (name.equalsIgnoreCase(index.getName()))
+ {
+ ignoreIndex = true;
+ break;
+ }
+ }
+ }
+ return ignoreIndex;
+ }
}
--
Gitblit v1.10.0