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.commandline.parameterparser.parameter;
7 import eu.svjatoslav.commons.commandline.parameterparser.ArgumentCount;
8 import eu.svjatoslav.commons.commandline.parameterparser.Parameter;
11 import java.util.List;
12 import java.util.stream.Collectors;
14 public class DirectoryParameters extends Parameter<List<File>, DirectoryParameters> {
16 private ExistenceType existenceType = ExistenceType.DOES_NOT_MATTER;
18 public DirectoryParameters(final String description) {
19 super(description, ArgumentCount.MULTI);
23 public String describeFormat() {
24 return existenceType.description + " directories";
28 public List<File> getValue() {
29 return arguments.stream().map(File::new).collect(Collectors.toList());
32 public DirectoryParameters mustExist() {
33 existenceType = ExistenceType.MUST_EXIST;
37 public DirectoryParameters mustNotExist() {
38 existenceType = ExistenceType.MUST_NOT_EXIST;
43 public boolean validate(final String value) {
44 final File file = new File(value);
46 if (existenceType == ExistenceType.MUST_EXIST) {
47 return file.exists() && file.isDirectory();
50 if (existenceType == ExistenceType.MUST_NOT_EXIST) {
51 return !file.exists();
54 if (existenceType == ExistenceType.DOES_NOT_MATTER) {