From 9e4f312fe9c0820638503b40b5fcbb6571e23354 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 27 Jul 2007 17:29:33 +0000
Subject: [PATCH] Partial 95% fix for issue 1831 - dsconfig interactive mode.

---
 opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java |   34 +++++++++++++++++++++++++++++++++-
 1 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java b/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java
index da46c18..489d4fc 100644
--- a/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java
+++ b/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java
@@ -40,7 +40,9 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.SortedMap;
+import java.util.SortedSet;
 import java.util.TreeMap;
+import java.util.TreeSet;
 
 import org.opends.server.admin.AbstractManagedObjectDefinition;
 import org.opends.server.admin.Configuration;
@@ -407,6 +409,10 @@
     // Create the naming arguments.
     this.namingArgs = createNamingArgs(subCommand, c, true);
 
+    // Register common arguments.
+    registerAdvancedModeArgument(this.subCommand,
+        MSGID_DSCFG_DESCRIPTION_ADVANCED_SET, r.getUserFriendlyName());
+
     // Create the --property argument which is used to specify
     // property values.
     this.propertySetArgument = new StringArgument(OPTION_DSCFG_LONG_SET,
@@ -588,6 +594,32 @@
         setProperty(child, provider, pd);
       }
 
+      // Interactively set properties if applicable.
+      if (getConsoleApplication().isInteractive()) {
+        SortedSet<PropertyDefinition<?>> properties =
+          new TreeSet<PropertyDefinition<?>>();
+
+        for (PropertyDefinition<?> pd : d.getAllPropertyDefinitions()) {
+          if (pd.hasOption(PropertyOption.HIDDEN)) {
+            continue;
+          }
+
+          if (pd.hasOption(PropertyOption.MONITORING)) {
+            continue;
+          }
+
+          if (!isAdvancedMode() && pd.hasOption(PropertyOption.ADVANCED)) {
+            continue;
+          }
+
+          properties.add(pd);
+        }
+
+        PropertyValueReader reader =
+          new PropertyValueReader(getConsoleApplication());
+        reader.readAll(child, properties);
+      }
+
       // Confirm commit.
       String prompt = String.format(Messages.getString("create.confirm"), d
           .getUserFriendlyName());
@@ -649,7 +681,7 @@
       final List<DefaultBehaviorException> exceptions)
       throws ArgumentException, ClientException {
     int msgID = MSGID_DSCFG_CREATE_NAME_PROMPT;
-    String msg = getMessage(msgID, relation.getUserFriendlyName());
+    String msg = getMessage(msgID, d.getUserFriendlyName());
     ValidationCallback<ManagedObject<? extends C>> validator =
       new ValidationCallback<ManagedObject<? extends C>>() {
 

--
Gitblit v1.10.0