JAL-629 improvements to argparser toString. Improvements to cli paeFile structure...
[jalview.git] / src / jalview / bin / argparser / Arg.java
index 6b70ab7..a13acd2 100644 (file)
@@ -1,6 +1,9 @@
 package jalview.bin.argparser;
 
+import java.util.Arrays;
+import java.util.List;
 import java.util.Locale;
+import java.util.stream.Collectors;
 
 public enum Arg
 {
@@ -83,10 +86,11 @@ public enum Arg
     NPP.setOptions(Opt.UNARY, Opt.MULTI, Opt.NOACTION);
     SUBSTITUTIONS.setOptions(Opt.BOOLEAN, Opt.MULTI, Opt.NOACTION);
     NIL.setOptions(Opt.UNARY, Opt.LINKED, Opt.MULTI, Opt.NOACTION);
-    // BOOTSTRAP args are parsed before a full parse of arguments and
-    // so are accessible at an earlier stage to (e.g.) set debug log level,
-    // provide a props file (that might set log level), run headlessly, read
-    // an argfile instead of other args.
+    // Opt.BOOTSTRAP args are parsed (not linked with no SubVals so using a
+    // simplified parser, see jalview.bin.argparser.BootstrapArgs)
+    // before a full parse of arguments and so can be accessible at an earlier
+    // stage to (e.g.) set debug log level, provide a props file (that might set
+    // log level), run headlessly, read an argfile instead of other args.
   }
 
   private final String[] argNames;
@@ -114,22 +118,19 @@ public enum Arg
   public String toLongString()
   {
     StringBuilder sb = new StringBuilder();
-    sb.append("Arg: ").append(this.name());
-    for (String name : getNames())
-    {
-      sb.append(", '").append(name).append("'");
-    }
-    sb.append("\nOptions: ");
-    boolean first = true;
-    for (Opt o : argOptions)
-    {
-      if (!first)
-      {
-        sb.append(", ");
-      }
-      sb.append(o.toString());
-      first = false;
-    }
+    sb.append(this.getClass().getName()).append('.').append(this.name());
+    sb.append('(');
+    if (getNames().length > 0)
+      sb.append('"');
+    sb.append(String.join("\", \"", getNames()));
+    if (getNames().length > 0)
+      sb.append('"');
+    sb.append(")\n");
+    sb.append("\nOpt: ");
+    // map List<Opt> to List<String> for the String.join
+    List<String> optList = Arrays.asList(argOptions).stream()
+            .map(opt -> opt.name()).collect(Collectors.toList());
+    sb.append(String.join(", ", optList));
     sb.append("\n");
     return sb.toString();
   }