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; } 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); } 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) 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) 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; } } 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; } 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() );