possibility to specify default value
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Tue, 19 Oct 2021 15:45:27 +0000 (18:45 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Tue, 19 Oct 2021 15:45:27 +0000 (18:45 +0300)
src/main/java/eu/svjatoslav/commons/commandline/parameterparser/parameter/StringParameter.java

index fee7adb..7a72cf3 100755 (executable)
@@ -9,8 +9,16 @@ import eu.svjatoslav.commons.commandline.parameterparser.Parameter;
 
 public class StringParameter extends Parameter<String, StringParameter> {
 
+    public final String defaultValue;
+
     public StringParameter(final String description) {
         super(description, ArgumentCount.SINGLE);
+        defaultValue = null;
+    }
+    public StringParameter(final String description, String defaultValue) {
+        super(description, ArgumentCount.SINGLE);
+        this.defaultValue = defaultValue;
+        this.setSpecified(true);
     }
 
     @Override
@@ -21,11 +29,12 @@ public class StringParameter extends Parameter<String, StringParameter> {
     @Override
     public String getValue() {
 
-        if (arguments.size() != 1)
-            throw new RuntimeException("Parameter " + description
-                    + " shall have exactly 1 argument.");
+        if (arguments.isEmpty() && (defaultValue != null)) return defaultValue;
+
+        if (arguments.size() == 1) return arguments.get(0);
 
-        return arguments.get(0);
+        throw new RuntimeException("Parameter " + description
+                + " shall have exactly 1 argument.");
     }
 
     @Override