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.Option;
8 import eu.svjatoslav.commons.cli_helper.parameter_parser.ParameterCount;
11 import java.util.List;
12 import java.util.stream.Collectors;
14 import static eu.svjatoslav.commons.cli_helper.parameter_parser.parameter.FileOption.validateFile;
17 * This class represents commandline option which accepts one or more parameters
20 public class FileOptions extends Option<List<File>, FileOptions> {
22 private ExistenceType existenceType = ExistenceType.DOES_NOT_MATTER;
24 public FileOptions(final String description) {
25 super(description, ParameterCount.ONE_OR_MORE);
29 public String describeFormat() {
30 switch (existenceType) {
32 return "One to many existing files.";
34 return "One to many non-existing files.";
36 return "One to many files.";
41 public List<File> getValue() {
42 return parameters.stream().map(File::new).collect(Collectors.toList());
46 * This method is used to define that file shall exist in filesystem.
48 * @return This object.
50 public FileOptions mustExist() {
51 existenceType = ExistenceType.MUST_EXIST;
56 * This method is used to define that file shall not exist in filesystem.
58 * @return This object.
60 public FileOptions mustNotExist() {
61 existenceType = ExistenceType.MUST_NOT_EXIST;
66 public boolean isValid(final String value) {
67 return validateFile(existenceType, value);