From bf58a21e71230bff9b456627fd31789cc98507bd Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Mon, 27 Apr 2015 10:03:47 +0000
Subject: [PATCH] OPENDJ-1963 Use backend type printable name in UI
---
opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/ui/DataOptionsPanel.java | 8 +-
opendj-server-legacy/src/main/java/org/opends/quicksetup/UserData.java | 9 ++-
opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java | 27 +++++---
opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java | 10 ++
opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java | 5 +
opendj-server-legacy/src/main/java/org/opends/server/tools/BackendTypeHelper.java | 87 ++++++++++++++++++++++------
opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDSArgumentParser.java | 2
7 files changed, 106 insertions(+), 42 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/UserData.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/UserData.java
index 73aa7f5..3cb7076 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/UserData.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/UserData.java
@@ -31,6 +31,9 @@
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import org.forgerock.opendj.config.ManagedObjectDefinition;
+import org.forgerock.opendj.server.config.client.BackendCfgClient;
+import org.forgerock.opendj.server.config.server.BackendCfg;
import org.opends.admin.ads.ServerDescriptor;
import org.opends.admin.ads.SuffixDescriptor;
import org.opends.quicksetup.installer.AuthenticationData;
@@ -72,7 +75,7 @@
private boolean enableWindowsService;
- private String backendType;
+ private ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backendType;
private NewSuffixOptions newSuffixOptions;
@@ -359,7 +362,7 @@
*
* @return the new userRoot backend type.
*/
- public String getBackendType()
+ public ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> getBackendType()
{
return backendType;
}
@@ -371,7 +374,7 @@
* The new backend type. This string must be compatible with
* dsconfig tool.
*/
- public void setBackendType(final String backendType)
+ public void setBackendType(ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backendType)
{
this.backendType = backendType;
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java
index adc5739..789f6a2 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java
@@ -71,6 +71,9 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.ManagedObjectDefinition;
+import org.forgerock.opendj.server.config.client.BackendCfgClient;
+import org.forgerock.opendj.server.config.server.BackendCfg;
import org.opends.admin.ads.ADSContext;
import org.opends.admin.ads.ADSContextException;
import org.opends.admin.ads.ReplicaDescriptor;
@@ -122,6 +125,7 @@
import org.opends.quicksetup.util.FileManager;
import org.opends.quicksetup.util.IncompatibleVersionException;
import org.opends.quicksetup.util.Utils;
+import org.opends.server.tools.BackendTypeHelper;
import org.opends.server.util.CertificateManager;
import org.opends.server.util.DynamicConstants;
import org.opends.server.util.SetupUtils;
@@ -873,7 +877,7 @@
argList.add(getUserData().getDirectoryManagerPwd());
argList.add("--" + OPTION_LONG_BACKEND_TYPE);
- argList.add(getUserData().getBackendType());
+ argList.add(BackendTypeHelper.filterSchemaBackendName(getUserData().getBackendType().getName()));
if (createNotReplicatedSuffix())
{
@@ -3730,6 +3734,7 @@
* @throws UserDataException
* if the data provided by the user is not valid.
*/
+ @SuppressWarnings("unchecked")
private void updateUserDataForNewSuffixOptionsPanel(final QuickSetup ui) throws UserDataException
{
final List<LocalizableMessage> errorMsgs = new ArrayList<LocalizableMessage>();
@@ -3740,7 +3745,8 @@
if (dataOptions != null)
{
- getUserData().setBackendType(ui.getFieldStringValue(FieldName.BACKEND_TYPE));
+ getUserData().setBackendType((ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg>)
+ ui.getFieldValue(FieldName.BACKEND_TYPE));
getUserData().setNewSuffixOptions(dataOptions);
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/ui/DataOptionsPanel.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/ui/DataOptionsPanel.java
index 4615583..5275055 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/ui/DataOptionsPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/ui/DataOptionsPanel.java
@@ -40,7 +40,6 @@
import javax.swing.Box;
import javax.swing.ButtonGroup;
-import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
@@ -61,6 +60,7 @@
import org.opends.quicksetup.ui.UIFactory;
import org.opends.quicksetup.ui.Utilities;
import org.opends.server.tools.BackendTypeHelper;
+import org.opends.server.tools.BackendTypeHelper.BackendTypeUIAdapter;
/**
* This is the panel that contains the Data Options: the suffix dn, whether to
@@ -83,7 +83,7 @@
private JButton ldifBrowseButton;
- private JComboBox backendTypeComboBox;
+ private JComboBox<BackendTypeUIAdapter> backendTypeComboBox;
/**
* Constructor of the panel.
@@ -117,7 +117,7 @@
}
else if (FieldName.BACKEND_TYPE == fieldName)
{
- return backendTypeComboBox.getSelectedItem().toString();
+ return ((BackendTypeUIAdapter) backendTypeComboBox.getSelectedItem()).getBackend();
}
else
{
@@ -444,7 +444,7 @@
private void createBackendTypeComboBox()
{
final BackendTypeHelper backendTypeHelper = new BackendTypeHelper();
- backendTypeComboBox = new JComboBox(new DefaultComboBoxModel(backendTypeHelper.getBackendTypeNames().toArray()));
+ backendTypeComboBox = new JComboBox<>(backendTypeHelper.getBackendTypeUIAdaptors());
}
private void createDirectoryDataChoiceRadioButton(final JLabel dataLabel)
diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java
index 2e2ad0a..ed59f9f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java
@@ -57,6 +57,7 @@
import org.opends.quicksetup.installer.NewSuffixOptions;
import org.opends.quicksetup.installer.SuffixesToReplicateOptions;
import org.opends.quicksetup.ui.UIFactory;
+import org.opends.server.tools.BackendTypeHelper;
import org.opends.server.util.SetupUtils;
import org.opends.server.util.StaticUtils;
@@ -1381,7 +1382,7 @@
final DataReplicationOptions repl = userInstallData.getReplicationOptions();
final SuffixesToReplicateOptions suf = userInstallData.getSuffixesToReplicateOptions();
- final String backendType = userInstallData.getBackendType();
+ final String backendType = userInstallData.getBackendType().getUserFriendlyName().toString();
boolean createSuffix = repl.getType() == DataReplicationOptions.Type.FIRST_IN_TOPOLOGY
|| repl.getType() == DataReplicationOptions.Type.STANDALONE
@@ -1639,7 +1640,7 @@
if (!baseDNs.isEmpty())
{
cmdLine.add("--" + ArgumentConstants.OPTION_LONG_BACKEND_TYPE);
- cmdLine.add(userData.getBackendType());
+ cmdLine.add(BackendTypeHelper.filterSchemaBackendName(userData.getBackendType().getName()));
}
for (final String baseDN : baseDNs)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendTypeHelper.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendTypeHelper.java
index 9801c7e..911df37 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendTypeHelper.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendTypeHelper.java
@@ -25,6 +25,7 @@
*/
package org.opends.server.tools;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
@@ -49,6 +50,63 @@
{
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
+ /**
+ * Filter the provided backend name by removing the backend suffix.
+ *
+ * @param dsCfgBackendName
+ * The backend name
+ * @return The backend name with the '-backend' suffix filtered out
+ */
+ public static String filterSchemaBackendName(final String dsCfgBackendName)
+ {
+ final String cfgNameRegExp = "(.*)-backend.*";
+ final Matcher regExpMatcher = Pattern.compile(cfgNameRegExp, Pattern.CASE_INSENSITIVE).matcher(dsCfgBackendName);
+ if (regExpMatcher.matches())
+ {
+ return regExpMatcher.group(1);
+ }
+
+ return dsCfgBackendName;
+ }
+
+ /** Adaptor to allow backend type selection in UIs. */
+ public static class BackendTypeUIAdapter
+ {
+ private final ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backend;
+
+ /**
+ * Create a new {@code BackendTypeUIAdapter}.
+ *
+ * @param backend
+ * The backend to adapt
+ */
+ private BackendTypeUIAdapter(ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backend)
+ {
+ this.backend = backend;
+ }
+
+ /**
+ * Return a user friendly readable name for this backend.
+ *
+ * @return A user friendly readable name for this backend.
+ */
+ @Override
+ public String toString()
+ {
+ return backend.getUserFriendlyName().toString();
+ }
+
+ /**
+ * Return the adapted backend object.
+ *
+ * @return The adapted backend object
+ */
+ public ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> getBackend()
+ {
+ return backend;
+ }
+ }
+
private List<ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg>> backends;
/** Creates a new backend type helper. */
@@ -116,9 +174,9 @@
String getPrintableBackendTypeNames()
{
String backendTypeNames = "";
- for (final String backendName : getBackendTypeNames())
+ for (ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backend : getBackendTypes())
{
- backendTypeNames += backendName + ", ";
+ backendTypeNames += filterSchemaBackendName(backend.getName()) + ", ";
}
if (backendTypeNames.isEmpty())
@@ -130,30 +188,19 @@
}
/**
- * Return a list of all available backend type printable names.
+ * Return a list which contains all available backend type adapted for UI.
*
- * @return A list of all available backend type printable names.
+ * @return a list which contains all available backend type adapted for UI
*/
- public List<String> getBackendTypeNames()
+ public BackendTypeUIAdapter[] getBackendTypeUIAdaptors()
{
- final List<String> backendTypeNames = new LinkedList<>();
- for (ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backendType : backends)
+ List<BackendTypeUIAdapter> adaptors = new ArrayList<>();
+ for (ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backend : getBackendTypes())
{
- backendTypeNames.add(filterSchemaBackendName(backendType.getName()));
+ adaptors.add(new BackendTypeUIAdapter(backend));
}
- return backendTypeNames;
+ return adaptors.toArray(new BackendTypeUIAdapter[adaptors.size()]);
}
- String filterSchemaBackendName(final String dsCfgBackendName)
- {
- final String cfgNameRegExp = "(.*)-backend.*";
- final Matcher regExpMatcher = Pattern.compile(cfgNameRegExp, Pattern.CASE_INSENSITIVE).matcher(dsCfgBackendName);
- if (regExpMatcher.matches())
- {
- return regExpMatcher.group(1);
- }
-
- return dsCfgBackendName;
- }
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java
index 37a80db..d9a9d0e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java
@@ -56,6 +56,9 @@
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg0;
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg1;
import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.ManagedObjectDefinition;
+import org.forgerock.opendj.server.config.client.BackendCfgClient;
+import org.forgerock.opendj.server.config.server.BackendCfg;
import org.opends.messages.QuickSetupMessages;
import org.opends.messages.ToolMessages;
import org.opends.quicksetup.ApplicationException;
@@ -208,7 +211,7 @@
/** Different variables we use when the user decides to provide data again. */
private NewSuffixOptions.Type lastResetPopulateOption;
- private String lastResetBackendType;
+ private ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> lastResetBackendType;
private String lastResetImportFile;
private String lastResetRejectedFile;
@@ -704,9 +707,11 @@
private void setBackendType(final UserData uData, final List<LocalizableMessage> errorMessages)
{
final String filledBackendType = argParser.backendTypeArg.getValue();
- if (backendTypeHelper.retrieveBackendTypeFromName(filledBackendType) != null)
+ final ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backend =
+ backendTypeHelper.retrieveBackendTypeFromName(filledBackendType);
+ if (backend != null)
{
- uData.setBackendType(filledBackendType);
+ uData.setBackendType(backend);
}
else
{
@@ -1275,13 +1280,15 @@
}
- private String getOrPromptForBackendType()
+ private ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> getOrPromptForBackendType()
{
if (argParser.backendTypeArg.isPresent())
{
- if (backendTypeHelper.retrieveBackendTypeFromName(argParser.backendTypeArg.getValue().toLowerCase()) != null)
+ final ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backend =
+ backendTypeHelper.retrieveBackendTypeFromName(argParser.backendTypeArg.getValue().toLowerCase());
+ if ( backend != null)
{
- return argParser.backendTypeArg.getValue();
+ return backend;
}
println();
println(ERR_INSTALLDS_NO_SUCH_BACKEND_TYPE.get(
@@ -1302,7 +1309,7 @@
logger.warn(LocalizableMessage.raw("Error reading input: " + ce, ce));
}
- return backendTypeHelper.getBackendTypeNames().get(backendTypeIndex - 1);
+ return backendTypeHelper.getBackendTypes().get(backendTypeIndex - 1);
}
private Menu<Integer> getBackendTypeMenu()
@@ -1310,9 +1317,9 @@
final MenuBuilder<Integer> builder = new MenuBuilder<Integer>(this);
builder.setPrompt(INFO_INSTALLDS_PROMPT_BACKEND_TYPE.get());
int index = 1;
- for (final String backendTypeName : backendTypeHelper.getBackendTypeNames())
+ for (final ManagedObjectDefinition<?, ?> backendType : backendTypeHelper.getBackendTypes())
{
- builder.addNumberedOption(LocalizableMessage.raw(backendTypeName), MenuResult.success(index++));
+ builder.addNumberedOption(backendType.getUserFriendlyName(), MenuResult.success(index++));
}
final int printableIndex = getPromptedBackendTypeIndex();
@@ -1324,7 +1331,7 @@
{
if (lastResetBackendType != null)
{
- return backendTypeHelper.getBackendTypeNames().indexOf(lastResetBackendType) + 1;
+ return backendTypeHelper.getBackendTypes().indexOf(lastResetBackendType) + 1;
}
return 1;
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDSArgumentParser.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDSArgumentParser.java
index 8dc97ff..9623526 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDSArgumentParser.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDSArgumentParser.java
@@ -399,7 +399,7 @@
OPTION_LONG_BACKEND_TYPE.toLowerCase(),
OPTION_SHORT_BACKEND_TYPE, OPTION_LONG_BACKEND_TYPE,
false, false, true, INFO_INSTALLDS_BACKEND_TYPE_PLACEHOLDER.get(),
- LocalDBBackendCfgDefn.getInstance().getName(),
+ BackendTypeHelper.filterSchemaBackendName(LocalDBBackendCfgDefn.getInstance().getName()),
OPTION_LONG_BACKEND_TYPE,
INFO_INSTALLDS_DESCRIPTION_BACKEND_TYPE.get()
);
--
Gitblit v1.10.0