From df993e4e7a2b5af0c8e0907a80e1a4cef10ee56d Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Thu, 11 Feb 2016 14:17:18 +0000
Subject: [PATCH] OPENDJSDK-42 cli arguments fluent builder

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendStat.java |  178 +++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 119 insertions(+), 59 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendStat.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendStat.java
index 77afc72..77cacd3 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendStat.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendStat.java
@@ -21,7 +21,7 @@
  * CDDL HEADER END
  *
  *
- *      Portions Copyright 2015 ForgeRock AS.
+ *      Portions Copyright 2015-2016 ForgeRock AS.
  */
 package org.opends.server.backends.pluggable;
 
@@ -362,15 +362,22 @@
     if (!globalArgumentsInitialized)
     {
       configClass =
-          new StringArgument("configclass", OPTION_SHORT_CONFIG_CLASS, OPTION_LONG_CONFIG_CLASS, true, false, true,
-              INFO_CONFIGCLASS_PLACEHOLDER.get(), ConfigFileHandler.class.getName(), null,
-              INFO_DESCRIPTION_CONFIG_CLASS.get());
-      configClass.setHidden(true);
-
+              StringArgument.builder(OPTION_LONG_CONFIG_CLASS)
+                      .shortIdentifier(OPTION_SHORT_CONFIG_CLASS)
+                      .description(INFO_DESCRIPTION_CONFIG_CLASS.get())
+                      .hidden()
+                      .required()
+                      .defaultValue(ConfigFileHandler.class.getName())
+                      .valuePlaceholder(INFO_CONFIGCLASS_PLACEHOLDER.get())
+                      .buildArgument();
       configFile =
-          new StringArgument("configfile", 'f', "configFile", true, false, true, INFO_CONFIGFILE_PLACEHOLDER.get(),
-              null, null, INFO_DESCRIPTION_CONFIG_FILE.get());
-      configFile.setHidden(true);
+              StringArgument.builder("configFile")
+                      .shortIdentifier('f')
+                      .description(INFO_DESCRIPTION_CONFIG_FILE.get())
+                      .hidden()
+                      .required()
+                      .valuePlaceholder(INFO_CONFIGFILE_PLACEHOLDER.get())
+                      .buildArgument();
 
       showUsageArgument = CommonArguments.getShowUsage();
 
@@ -398,47 +405,60 @@
                            INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_BACKENDS.get());
 
       // list-base-dns
-      SubCommand sub = new SubCommand(parser, LIST_BASE_DNS,
-                                      INFO_DESCRIPTION_BACKEND_DEBUG_SUBCMD_LIST_ENTRY_CONTAINERS.get());
-      addBackendArgument(sub);
+      addBackendArgument(new SubCommand(
+              parser, LIST_BASE_DNS, INFO_DESCRIPTION_BACKEND_DEBUG_SUBCMD_LIST_ENTRY_CONTAINERS.get()));
 
       // list-indexes
-      sub = new SubCommand(parser, LIST_INDEXES, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_INDEXES.get());
-      addBackendBaseDNArguments(sub, false, false, true);
+      final SubCommand listIndexes = new SubCommand(
+              parser, LIST_INDEXES, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_INDEXES.get());
+      addBackendBaseDNArguments(listIndexes, false, false);
 
       // show-index-status
-      sub = new SubCommand(parser, SHOW_INDEX_STATUS, INFO_DESCRIPTION_BACKEND_DEBUG_SUBCMD_LIST_INDEX_STATUS.get());
-      sub.setDocDescriptionSupplement(SUPPLEMENT_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_INDEX_STATUS.get());
-      addBackendBaseDNArguments(sub, true, true, true);
+      final SubCommand showIndexStatus = new SubCommand(
+              parser, SHOW_INDEX_STATUS, INFO_DESCRIPTION_BACKEND_DEBUG_SUBCMD_LIST_INDEX_STATUS.get());
+      showIndexStatus.setDocDescriptionSupplement(SUPPLEMENT_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_INDEX_STATUS.get());
+      addBackendBaseDNArguments(showIndexStatus, true, true);
 
       // dump-index
-      sub = new SubCommand(parser, DUMP_INDEX, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_DUMP_INDEX.get());
-      addBackendBaseDNArguments(sub, true, false, true);
-      sub.addArgument(new StringArgument(INDEXNAME_NAME, 'i', INDEXNAME, true, false, true,
-                                         INFO_INDEX_NAME_PLACEHOLDER.get(), null, null,
-                                         INFO_DESCRIPTION_BACKEND_DEBUG_INDEX_NAME.get()));
-      addDumpSubCommandArguments(sub);
-      BooleanArgument skipDecode =
-          new BooleanArgument(SKIPDECODE_NAME, 'p', SKIPDECODE, INFO_DESCRIPTION_BACKEND_DEBUG_SKIP_DECODE.get());
-      sub.addArgument(skipDecode);
+      final SubCommand dumpIndex = new SubCommand(
+              parser, DUMP_INDEX, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_DUMP_INDEX.get());
+      addBackendBaseDNArguments(dumpIndex, true, false);
+      dumpIndex.addArgument(StringArgument.builder(INDEXNAME)
+              .shortIdentifier('i')
+              .description(INFO_DESCRIPTION_BACKEND_DEBUG_INDEX_NAME.get())
+              .required()
+              .valuePlaceholder(INFO_INDEX_NAME_PLACEHOLDER.get())
+              .buildArgument());
+      addDumpSubCommandArguments(dumpIndex);
+      dumpIndex.addArgument(BooleanArgument.builder(SKIPDECODE)
+              .shortIdentifier('p')
+              .description(INFO_DESCRIPTION_BACKEND_DEBUG_SKIP_DECODE.get())
+              .buildArgument());
 
       // list-raw-dbs
-      sub = new SubCommand(parser, LIST_RAW_DBS, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_RAW_DBS.get());
-      addBackendArgument(sub);
-      BooleanArgument useSIUnits =
-          new BooleanArgument(USESIUNITS_NAME, 'u', USESIUNITS, INFO_DESCRIPTION_BACKEND_TOOL_USE_SI_UNITS.get());
-      sub.addArgument(useSIUnits);
+      final SubCommand listRawDBs = new SubCommand(
+              parser, LIST_RAW_DBS, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_LIST_RAW_DBS.get());
+      addBackendArgument(listRawDBs);
+      listRawDBs.addArgument(BooleanArgument.builder(USESIUNITS)
+              .shortIdentifier('u')
+              .description(INFO_DESCRIPTION_BACKEND_TOOL_USE_SI_UNITS.get())
+              .buildArgument());
 
       // dump-raw-db
-      sub = new SubCommand(parser, DUMP_RAW_DB, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_DUMP_RAW_DB.get());
-      addBackendArgument(sub);
-      sub.addArgument(new StringArgument(DBNAME_NAME, 'd', DBNAME, true, false, true,
-                                         INFO_DATABASE_NAME_PLACEHOLDER.get(), null, null,
-                                         INFO_DESCRIPTION_BACKEND_DEBUG_RAW_DB_NAME.get()));
-      addDumpSubCommandArguments(sub);
-      BooleanArgument singleLine =
-          new BooleanArgument(SINGLELINE_NAME, 'l', SINGLELINE, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_SINGLE_LINE.get());
-      sub.addArgument(singleLine);
+      final SubCommand dumbRawDB = new SubCommand(
+              parser, DUMP_RAW_DB, INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_DUMP_RAW_DB.get());
+      addBackendArgument(dumbRawDB);
+      dumbRawDB.addArgument(StringArgument.builder(DBNAME)
+              .shortIdentifier('d')
+              .description(INFO_DESCRIPTION_BACKEND_DEBUG_RAW_DB_NAME.get())
+              .required()
+              .valuePlaceholder(INFO_DATABASE_NAME_PLACEHOLDER.get())
+              .buildArgument());
+      addDumpSubCommandArguments(dumbRawDB);
+      dumbRawDB.addArgument(BooleanArgument.builder(SINGLELINE)
+              .shortIdentifier('l')
+              .description(INFO_DESCRIPTION_BACKEND_TOOL_SUBCMD_SINGLE_LINE.get())
+              .buildArgument());
 
       subCommandsInitialized = true;
     }
@@ -447,44 +467,84 @@
   private void addBackendArgument(SubCommand sub) throws ArgumentException
   {
     sub.addArgument(
-        new StringArgument(BACKENDID_NAME, 'n', BACKENDID, true, false, true, INFO_BACKENDNAME_PLACEHOLDER.get(), null,
-            null, INFO_DESCRIPTION_BACKEND_DEBUG_BACKEND_ID.get()));
+            StringArgument.builder(BACKENDID)
+                    .shortIdentifier('n')
+                    .description(INFO_DESCRIPTION_BACKEND_DEBUG_BACKEND_ID.get())
+                    .required()
+                    .valuePlaceholder(INFO_BACKENDNAME_PLACEHOLDER.get())
+                    .buildArgument());
   }
 
-  private void addBackendBaseDNArguments(SubCommand sub, boolean isRequired, boolean isMultiValued, boolean needsValue)
+  private void addBackendBaseDNArguments(SubCommand sub, boolean isRequired, boolean isMultiValued)
       throws ArgumentException
   {
     addBackendArgument(sub);
-    sub.addArgument(new StringArgument(BASEDN_NAME, 'b', BASEDN, isRequired, isMultiValued, needsValue,
-        INFO_BASEDN_PLACEHOLDER.get(), null, null, INFO_DESCRIPTION_BACKEND_DEBUG_BASE_DN.get()));
+    final StringArgument.Builder builder = StringArgument.builder(BASEDN)
+            .shortIdentifier('b')
+            .description(INFO_DESCRIPTION_BACKEND_DEBUG_BASE_DN.get())
+            .valuePlaceholder(INFO_BASEDN_PLACEHOLDER.get());
+    if (isMultiValued)
+    {
+      builder.multiValued();
+    }
+    if (isRequired) {
+      builder.required();
+    }
+    sub.addArgument(builder.buildArgument());
   }
 
   private void addDumpSubCommandArguments(SubCommand sub) throws ArgumentException
   {
-    sub.addArgument(new BooleanArgument(STATSONLY_NAME, 'q', STATSONLY,
-        INFO_DESCRIPTION_BACKEND_DEBUG_STATS_ONLY.get()));
+    sub.addArgument(BooleanArgument.builder(STATSONLY)
+            .shortIdentifier('q')
+            .description(INFO_DESCRIPTION_BACKEND_DEBUG_STATS_ONLY.get())
+            .buildArgument());
+
     sub.addArgument(newMaxKeyValueArg());
     sub.addArgument(newMinKeyValueArg());
-    sub.addArgument(new StringArgument(MAXHEXKEYVALUE_NAME, 'X', MAXHEXKEYVALUE, false, false, true,
-        INFO_MAX_KEY_VALUE_PLACEHOLDER.get(), null, null, INFO_DESCRIPTION_BACKEND_DEBUG_MAX_KEY_VALUE.get()));
-    sub.addArgument(new StringArgument(MINHEXKEYVALUE_NAME, 'x', MINHEXKEYVALUE, false, false, true,
-        INFO_MIN_KEY_VALUE_PLACEHOLDER.get(), null, null, INFO_DESCRIPTION_BACKEND_DEBUG_MIN_KEY_VALUE.get()));
-    sub.addArgument(new IntegerArgument(MAXDATASIZE_NAME, 'S', MAXDATASIZE, false, false, true,
-        INFO_MAX_DATA_SIZE_PLACEHOLDER.get(), -1, null, INFO_DESCRIPTION_BACKEND_DEBUG_MAX_DATA_SIZE.get()));
-    sub.addArgument(new IntegerArgument(MINDATASIZE_NAME, 's', MINDATASIZE, false, false, true,
-        INFO_MIN_DATA_SIZE_PLACEHOLDER.get(), -1, null, INFO_DESCRIPTION_BACKEND_DEBUG_MIN_DATA_SIZE.get()));
+    sub.addArgument(StringArgument.builder(MAXHEXKEYVALUE)
+            .shortIdentifier('X')
+            .description(INFO_DESCRIPTION_BACKEND_DEBUG_MAX_KEY_VALUE.get())
+            .valuePlaceholder(INFO_MAX_KEY_VALUE_PLACEHOLDER.get())
+            .buildArgument());
+
+    sub.addArgument(StringArgument.builder(MINHEXKEYVALUE)
+            .shortIdentifier('x')
+            .description(INFO_DESCRIPTION_BACKEND_DEBUG_MIN_KEY_VALUE.get())
+            .valuePlaceholder(INFO_MIN_KEY_VALUE_PLACEHOLDER.get())
+            .buildArgument());
+
+    sub.addArgument(IntegerArgument.builder(MAXDATASIZE)
+            .shortIdentifier('S')
+            .description(INFO_DESCRIPTION_BACKEND_DEBUG_MAX_DATA_SIZE.get())
+            .defaultValue(-1)
+            .valuePlaceholder(INFO_MAX_DATA_SIZE_PLACEHOLDER.get())
+            .buildArgument());
+
+    sub.addArgument(IntegerArgument.builder(MINDATASIZE)
+            .shortIdentifier('s')
+            .description(INFO_DESCRIPTION_BACKEND_DEBUG_MIN_DATA_SIZE.get())
+            .defaultValue(-1)
+            .valuePlaceholder(INFO_MIN_DATA_SIZE_PLACEHOLDER.get())
+            .buildArgument());
   }
 
   private StringArgument newMinKeyValueArg() throws ArgumentException
   {
-    return new StringArgument(MINKEYVALUE_NAME, 'k', MINKEYVALUE, false, false, true,
-        INFO_MIN_KEY_VALUE_PLACEHOLDER.get(), null, null, INFO_DESCRIPTION_BACKEND_DEBUG_MIN_KEY_VALUE.get());
+    return StringArgument.builder(MINKEYVALUE)
+            .shortIdentifier('k')
+            .description(INFO_DESCRIPTION_BACKEND_DEBUG_MIN_KEY_VALUE.get())
+            .valuePlaceholder(INFO_MIN_KEY_VALUE_PLACEHOLDER.get())
+            .buildArgument();
   }
 
   private StringArgument newMaxKeyValueArg() throws ArgumentException
   {
-    return new StringArgument(MAXKEYVALUE_NAME, 'K', MAXKEYVALUE, false, false, true,
-        INFO_MAX_KEY_VALUE_PLACEHOLDER.get(), null, null, INFO_DESCRIPTION_BACKEND_DEBUG_MAX_KEY_VALUE.get());
+    return StringArgument.builder(MAXKEYVALUE)
+            .shortIdentifier('K')
+            .description(INFO_DESCRIPTION_BACKEND_DEBUG_MAX_KEY_VALUE.get())
+            .valuePlaceholder(INFO_MAX_KEY_VALUE_PLACEHOLDER.get())
+            .buildArgument();
   }
 
   /**

--
Gitblit v1.10.0