Update naming in commandline parser
[cli-helper.git] / src / main / java / eu / svjatoslav / commons / cli_helper / parameter_parser / parameter / StringOption.java
diff --git a/src/main/java/eu/svjatoslav/commons/cli_helper/parameter_parser/parameter/StringOption.java b/src/main/java/eu/svjatoslav/commons/cli_helper/parameter_parser/parameter/StringOption.java
new file mode 100755 (executable)
index 0000000..7ba7c93
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Svjatoslav Commons - shared library of common functionality. Author: Svjatoslav Agejenko.
+ * This project is released under Creative Commons Zero (CC0) license.
+ */
+package eu.svjatoslav.commons.cli_helper.parameter_parser.parameter;
+
+import eu.svjatoslav.commons.cli_helper.parameter_parser.ParameterCount;
+import eu.svjatoslav.commons.cli_helper.parameter_parser.Option;
+
+public class StringOption extends Option<String, StringOption> {
+
+    public final String defaultValue;
+
+    public StringOption(final String description) {
+        super(description, ParameterCount.SINGLE);
+        defaultValue = null;
+    }
+    public StringOption(final String description, String defaultValue) {
+        super(description, ParameterCount.SINGLE);
+        this.defaultValue = defaultValue;
+        this.setPresent(true);
+    }
+
+    @Override
+    public java.lang.String describeFormat() {
+        return "string";
+    }
+
+    @Override
+    public String getValue() {
+
+        if (parameters.isEmpty() && (defaultValue != null)) return defaultValue;
+
+        if (parameters.size() == 1) return parameters.get(0);
+
+        throw new RuntimeException("Parameter " + description
+                + " shall have exactly 1 argument.");
+    }
+
+    @Override
+    public boolean isValid(final java.lang.String value) {
+        return true;
+    }
+
+}