2 * Svjatoslav Commons - shared library of common functionality. Author: Svjatoslav Agejenko.
3 * This project is released under Creative Commons Zero (CC0) license.
5 package eu.svjatoslav.commons.cli_helper.parameter_parser.parameter;
7 import eu.svjatoslav.commons.cli_helper.parameter_parser.ParameterCount;
8 import eu.svjatoslav.commons.cli_helper.parameter_parser.Option;
12 public class DirectoryOption extends Option<File, DirectoryOption> {
14 private ExistenceType existenceType = ExistenceType.DOES_NOT_MATTER;
16 public DirectoryOption(final String description) {
17 super(description, ParameterCount.ONE);
21 public java.lang.String describeFormat() {
22 switch (existenceType) {
24 return "Existing directory.";
26 return "Non-existing directory.";
33 public File getValue() {
35 if (parameters.size() != 1)
36 throw new RuntimeException("Parameter " + description
37 + " shall have exactly 1 argument.");
39 return new File(parameters.get(0));
42 public DirectoryOption mustExist() {
43 existenceType = ExistenceType.MUST_EXIST;
47 public DirectoryOption mustNotExist() {
48 existenceType = ExistenceType.MUST_NOT_EXIST;
53 public boolean isValid(final java.lang.String value) {
54 final File file = new File(value);
56 if (existenceType == ExistenceType.MUST_EXIST) {
57 return file.exists() && file.isDirectory();
60 if (existenceType == ExistenceType.MUST_NOT_EXIST) {
61 return !file.exists();
64 if (existenceType == ExistenceType.DOES_NOT_MATTER) {