X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=cli-helper.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Fcli_helper%2Fparameter_parser%2Fparameter%2FFileOptions.java;fp=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Fcli_helper%2Fparameter_parser%2Fparameter%2FFileOptions.java;h=8328bd335231a7327eea7d193957c83bde4747e8;hp=0000000000000000000000000000000000000000;hb=324ea20c0c65f671c0d35e94ed90142912a56b4c;hpb=2c29a140b3ff6f0f60ac838437c4bd9b8fd6dad7 diff --git a/src/main/java/eu/svjatoslav/commons/cli_helper/parameter_parser/parameter/FileOptions.java b/src/main/java/eu/svjatoslav/commons/cli_helper/parameter_parser/parameter/FileOptions.java new file mode 100755 index 0000000..8328bd3 --- /dev/null +++ b/src/main/java/eu/svjatoslav/commons/cli_helper/parameter_parser/parameter/FileOptions.java @@ -0,0 +1,49 @@ +/* + * 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; + +import java.io.File; +import java.util.List; +import java.util.stream.Collectors; + +import static eu.svjatoslav.commons.cli_helper.parameter_parser.parameter.FileOption.validateFile; + +public class FileOptions extends Option, FileOptions> { + + private ExistenceType existenceType = ExistenceType.DOES_NOT_MATTER; + + public FileOptions(final String description) { + super(description, ParameterCount.MULTI); + } + + @Override + public String describeFormat() { + return existenceType.description + " files"; + } + + @Override + public List getValue() { + return parameters.stream().map(File::new).collect(Collectors.toList()); + } + + public FileOptions mustExist() { + existenceType = ExistenceType.MUST_EXIST; + return this; + } + + public FileOptions mustNotExist() { + existenceType = ExistenceType.MUST_NOT_EXIST; + return this; + } + + @Override + public boolean isValid(final String value) { + return validateFile(existenceType, value); + } + +}