Add Javadoc comments to enhance code clarity
[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 /**
11  * This class represents commandline option which accepts exactly one parameter
12  * which is a string.
13  */
14 public class StringOption extends Option<String, StringOption> {
15
16     public final String defaultValue;
17
18     public StringOption(final String description) {
19         super(description, ParameterCount.ONE);
20         defaultValue = null;
21     }
22     public StringOption(final String description, String defaultValue) {
23         super(description, ParameterCount.ONE);
24         this.defaultValue = defaultValue;
25         this.setPresent(true);
26     }
27
28     @Override
29     public java.lang.String describeFormat() {
30         return "String.";
31     }
32
33     @Override
34     public String getValue() {
35
36         if (parameters.isEmpty() && (defaultValue != null)) return defaultValue;
37
38         if (parameters.size() == 1) return parameters.get(0);
39
40         throw new RuntimeException("Parameter " + description
41                 + " shall have exactly 1 argument.");
42     }
43
44     @Override
45     public boolean isValid(final java.lang.String value) {
46         return true;
47     }
48
49 }