7ba7c939beeccf45d02409784ff575b164ba1920
[cli-helper.git] / src / main / java / eu / svjatoslav / commons / cli_helper / parameter_parser / parameter / StringOption.java
1 /*
2  * Svjatoslav Commons - shared library of common functionality. Author: Svjatoslav Agejenko.
3  * This project is released under Creative Commons Zero (CC0) license.
4  */
5 package eu.svjatoslav.commons.cli_helper.parameter_parser.parameter;
6
7 import eu.svjatoslav.commons.cli_helper.parameter_parser.ParameterCount;
8 import eu.svjatoslav.commons.cli_helper.parameter_parser.Option;
9
10 public class StringOption extends Option<String, StringOption> {
11
12     public final String defaultValue;
13
14     public StringOption(final String description) {
15         super(description, ParameterCount.SINGLE);
16         defaultValue = null;
17     }
18     public StringOption(final String description, String defaultValue) {
19         super(description, ParameterCount.SINGLE);
20         this.defaultValue = defaultValue;
21         this.setPresent(true);
22     }
23
24     @Override
25     public java.lang.String describeFormat() {
26         return "string";
27     }
28
29     @Override
30     public String getValue() {
31
32         if (parameters.isEmpty() && (defaultValue != null)) return defaultValue;
33
34         if (parameters.size() == 1) return parameters.get(0);
35
36         throw new RuntimeException("Parameter " + description
37                 + " shall have exactly 1 argument.");
38     }
39
40     @Override
41     public boolean isValid(final java.lang.String value) {
42         return true;
43     }
44
45 }