From c8447177b6c9d155ea48009583a20ecce7ffd8c6 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Mon, 18 Jan 2010 22:27:40 +0000
Subject: [PATCH] Fix for issue 3901 (Setup fails when inserting a server in a replication topology with large umount of data) - Add a 'Runtime Options' step in the wizard.  By default this will contain just two labels and two buttons: Server Runtime Options: Use Default <button to change> Import Options: Use Default <button to change>

---
 opends/src/quicksetup/org/opends/quicksetup/installer/ui/InstallReviewPanel.java |  131 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 128 insertions(+), 3 deletions(-)

diff --git a/opends/src/quicksetup/org/opends/quicksetup/installer/ui/InstallReviewPanel.java b/opends/src/quicksetup/org/opends/quicksetup/installer/ui/InstallReviewPanel.java
index a138bf0..4c73132 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/installer/ui/InstallReviewPanel.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/installer/ui/InstallReviewPanel.java
@@ -33,12 +33,14 @@
 
 import org.opends.admin.ads.ServerDescriptor;
 import org.opends.quicksetup.Installation;
+import org.opends.quicksetup.JavaArguments;
 import org.opends.quicksetup.UserData;
 import org.opends.quicksetup.installer.AuthenticationData;
 import org.opends.quicksetup.installer.DataReplicationOptions;
 import org.opends.quicksetup.installer.SuffixesToReplicateOptions;
 import org.opends.quicksetup.ui.*;
 import org.opends.quicksetup.util.HtmlProgressMessageFormatter;
+import org.opends.quicksetup.util.ProgressMessageFormatter;
 import org.opends.quicksetup.util.Utils;
 
 import javax.swing.*;
@@ -141,6 +143,9 @@
       getField(FieldName.REPLICATION_PORT).setVisible(true);
       getLabel(FieldName.REPLICATION_PORT).setVisible(true);
     }
+
+    setFieldValue(FieldName.SERVER_JAVA_ARGUMENTS, getRuntimeString(userData));
+
     checkStartWarningLabel();
     updateEquivalentCommand(userData);
 
@@ -329,6 +334,11 @@
             LabelFieldDescriptor.FieldType.READ_ONLY,
             LabelFieldDescriptor.LabelType.PRIMARY, 0));
 
+    hm.put(FieldName.SERVER_JAVA_ARGUMENTS, new LabelFieldDescriptor(
+        INFO_RUNTIME_OPTIONS_LABEL.get(), null,
+        LabelFieldDescriptor.FieldType.READ_ONLY,
+        LabelFieldDescriptor.LabelType.PRIMARY, 0));
+
     for (FieldName fieldName : hm.keySet())
     {
       LabelFieldDescriptor desc = hm.get(fieldName);
@@ -378,7 +388,7 @@
 
    /**
     * Returns the String representing the replication port configuration.
-    * @param userInstallData the DataOptions of the user.
+    * @param userInstallData the install data provided of the user.
     * @return the localized string describing the Replication Ports chosen by
     * the user.
     */
@@ -460,6 +470,53 @@
     }
     return buf.toString();
   }
+
+  /**
+   * Returns the String representing the runtime configuration.
+   * @param userData the DataOptions of the user.
+   * @return the localized string describing the runtime options chosen by the
+   * user.
+   */
+ private String getRuntimeString(UserData userData)
+ {
+   String s;
+   JavaArguments serverArguments =
+     userData.getJavaArguments(UserData.SERVER_SCRIPT_NAME);
+   JavaArguments importArguments =
+     userData.getJavaArguments(UserData.IMPORT_SCRIPT_NAME);
+
+
+   boolean defaultServer =
+     userData.getDefaultJavaArguments(UserData.SERVER_SCRIPT_NAME).equals(
+         serverArguments);
+   boolean defaultImport =
+   userData.getDefaultJavaArguments(UserData.IMPORT_SCRIPT_NAME).equals(
+       importArguments);
+
+   if (defaultServer && defaultImport)
+   {
+     s = INFO_DEFAULT_JAVA_ARGUMENTS.get().toString();
+   }
+   else if (defaultServer)
+   {
+     s = INFO_USE_CUSTOM_IMPORT_RUNTIME.get(
+         importArguments.getStringArguments()).toString();
+   }
+   else if (defaultImport)
+   {
+     s = INFO_USE_CUSTOM_SERVER_RUNTIME.get(
+         serverArguments.getStringArguments()).toString();
+   }
+   else
+   {
+     s = INFO_USE_CUSTOM_SERVER_RUNTIME.get(
+         serverArguments.getStringArguments())+"\n"+
+         INFO_USE_CUSTOM_IMPORT_RUNTIME.get(
+             importArguments.getStringArguments());
+   }
+   return s;
+ }
+
   /**
    * Returns and creates the fields panel.
    * @return the fields panel.
@@ -521,7 +578,8 @@
             FieldName.SERVER_PORT, FieldName.ADMIN_CONNECTOR_PORT,
             FieldName.SECURITY_OPTIONS,
             FieldName.DIRECTORY_MANAGER_DN, FieldName.GLOBAL_ADMINISTRATOR_UID,
-            FieldName.DATA_OPTIONS, FieldName.REPLICATION_PORT
+            FieldName.DATA_OPTIONS, FieldName.REPLICATION_PORT,
+            FieldName.SERVER_JAVA_ARGUMENTS
           };
     }
     else
@@ -533,7 +591,7 @@
             FieldName.ADMIN_CONNECTOR_PORT,
             FieldName.SECURITY_OPTIONS, FieldName.DIRECTORY_MANAGER_DN,
             FieldName.GLOBAL_ADMINISTRATOR_UID, FieldName.DATA_OPTIONS,
-            FieldName.REPLICATION_PORT
+            FieldName.REPLICATION_PORT, FieldName.SERVER_JAVA_ARGUMENTS
           };
     }
 
@@ -696,6 +754,14 @@
     HtmlProgressMessageFormatter formatter =
       new HtmlProgressMessageFormatter();
     StringBuilder sb = new StringBuilder();
+
+    String s = getEquivalentJavaPropertiesProcedure(userData, formatter);
+    if (s != null && s.length() > 0)
+    {
+      sb.append(s);
+      sb.append(formatter.getTaskSeparator());
+    }
+
     sb.append(formatter.getFormattedProgress(
         INFO_INSTALL_SETUP_EQUIVALENT_COMMAND_LINE.get()));
     sb.append(formatter.getLineBreak());
@@ -780,4 +846,63 @@
     }
     equivalentCommandPane.setText(sb.toString());
   }
+
+  private String getEquivalentJavaPropertiesProcedure(
+      UserData userData,
+      ProgressMessageFormatter formatter)
+  {
+    StringBuilder sb = new StringBuilder();
+    JavaArguments serverArguments =
+      userData.getJavaArguments(UserData.SERVER_SCRIPT_NAME);
+    JavaArguments importArguments =
+      userData.getJavaArguments(UserData.IMPORT_SCRIPT_NAME);
+
+    ArrayList<String> linesToAdd = new ArrayList<String>();
+
+    boolean defaultServer =
+      userData.getDefaultJavaArguments(UserData.SERVER_SCRIPT_NAME).equals(
+          serverArguments);
+    boolean defaultImport =
+    userData.getDefaultJavaArguments(UserData.IMPORT_SCRIPT_NAME).equals(
+        importArguments);
+
+    if (!defaultServer)
+    {
+      linesToAdd.add(UserData.SERVER_SCRIPT_NAME+": "+
+          serverArguments.getStringArguments());
+    }
+    if (!defaultImport)
+    {
+      linesToAdd.add(UserData.IMPORT_SCRIPT_NAME+": "+
+          importArguments.getStringArguments());
+    }
+
+    if (linesToAdd.size() == 1)
+    {
+      String arg0 = getJavaPropertiesFilePath(userData);
+      String arg1 = linesToAdd.get(0);
+      sb.append(formatter.getFormattedProgress(
+          INFO_EDIT_JAVA_PROPERTIES_LINE.get(arg0, arg1)));
+    }
+    else if (linesToAdd.size() > 1)
+    {
+      String arg0 = getJavaPropertiesFilePath(userData);
+      String arg1 = Utils.getStringFromCollection(linesToAdd, "\n");
+      sb.append(
+          formatter.getFormattedProgress(INFO_EDIT_JAVA_PROPERTIES_LINES.get(
+              arg0, arg1)));
+    }
+
+    return sb.toString();
+  }
+
+  private String getJavaPropertiesFilePath(UserData userData)
+  {
+    String configDir = Utils.getPath(Utils
+        .getInstancePathFromInstallPath(userData.getServerLocation()),
+        Installation.CONFIG_PATH_RELATIVE);
+    String propertiesFile = Utils.getPath(
+        configDir, Installation.DEFAULT_JAVA_PROPERTIES_FILE);
+    return propertiesFile;
+  }
 }

--
Gitblit v1.10.0