mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Gaetan Boismal
27.03.2015 bf58a21e71230bff9b456627fd31789cc98507bd
OPENDJ-1963 Use backend type printable name in UI

* src/main/java/org/opends/quicksetup/UserData.java
** Use backend configuration class instead of string to identify the backend selected by user

* src/main/java/org/opends/quicksetup/installer/Installer.java
* src/main/java/org/opends/quicksetup/util/Utils.java
** Consequences of changes in UserData

* src/main/java/org/opends/quicksetup/installer/ui/DataOptionsPanel.java
** Consequences of changes in UserData
** Use BackendTypeUIAdaptors to have user friendly names in combo box

* src/main/java/org/opends/server/tools/BackendTypeHelper.java
** Create a new satic class which is an adapter of a backend class to allow user friendly printable name in combo box.

* src/main/java/org/opends/server/tools/InstallDSArgumentParser.java
** Consequences of changes in UserData

* src/main/java/org/opends/server/tools/InstallDS.java
** Use backend configuration class instead of string to identify the backend selected by user
7 files modified
148 ■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/quicksetup/UserData.java 9 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java 10 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/ui/DataOptionsPanel.java 8 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java 5 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/BackendTypeHelper.java 87 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDS.java 27 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/InstallDSArgumentParser.java 2 ●●● patch | view | raw | blame | history
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()
    );