Changed license to CC0
[svjatoslav_commons.git] / src / main / java / eu / svjatoslav / commons / commandline / parameterparser / parameter / FileParameters.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.commandline.parameterparser.parameter;
6
7 import eu.svjatoslav.commons.commandline.parameterparser.ArgumentCount;
8 import eu.svjatoslav.commons.commandline.parameterparser.Parameter;
9
10 import java.io.File;
11 import java.util.List;
12 import java.util.stream.Collectors;
13
14 import static eu.svjatoslav.commons.commandline.parameterparser.parameter.FileParameter.validateFile;
15
16 public class FileParameters extends Parameter<List<File>, FileParameters> {
17
18     private ExistenceType existenceType = ExistenceType.DOES_NOT_MATTER;
19
20     public FileParameters(final String description) {
21         super(description, ArgumentCount.MULTI);
22     }
23
24     @Override
25     public String describeFormat() {
26         return existenceType.description + " files";
27     }
28
29     @Override
30     public List<File> getValue() {
31         return arguments.stream().map(File::new).collect(Collectors.toList());
32     }
33
34     public FileParameters mustExist() {
35         existenceType = ExistenceType.MUST_EXIST;
36         return this;
37     }
38
39     public FileParameters mustNotExist() {
40         existenceType = ExistenceType.MUST_NOT_EXIST;
41         return this;
42     }
43
44     @Override
45     public boolean validate(final String value) {
46         return validateFile(existenceType, value);
47     }
48
49 }