Added FileParameters type.
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Mon, 25 Dec 2017 23:01:06 +0000 (01:01 +0200)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Mon, 25 Dec 2017 23:01:06 +0000 (01:01 +0200)
src/main/java/eu/svjatoslav/commons/commandline/parameterparser/Parameter.java
src/main/java/eu/svjatoslav/commons/commandline/parameterparser/parameter/FileParameter.java
src/main/java/eu/svjatoslav/commons/commandline/parameterparser/parameter/FileParameters.java [new file with mode: 0755]

index 95df0c0..8208583 100755 (executable)
@@ -11,13 +11,14 @@ package eu.svjatoslav.commons.commandline.parameterparser;
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.List;
 
 public abstract class Parameter<T, I extends Parameter> {
 
     public final String description;
-    public final ArrayList<String> arguments = new ArrayList<>();
+    public final List<String> arguments = new ArrayList<>();
     final ArgumentCount argumentCount;
-    private final ArrayList<String> aliases = new ArrayList<>();
+    private final List<String> aliases = new ArrayList<>();
     /**
      * Indicates that at least one argument is mandatory for this parameter.
      */
index fc8c450..21a84ff 100755 (executable)
@@ -49,6 +49,10 @@ public class FileParameter extends Parameter<File, FileParameter> {
 
     @Override
     public boolean validate(final java.lang.String value) {
+        return validateFile(existenceType, value);
+    }
+
+    protected static boolean validateFile(ExistenceType existenceType, String value) {
         final File file = new File(value);
 
         if (existenceType == ExistenceType.MUST_EXIST) {
diff --git a/src/main/java/eu/svjatoslav/commons/commandline/parameterparser/parameter/FileParameters.java b/src/main/java/eu/svjatoslav/commons/commandline/parameterparser/parameter/FileParameters.java
new file mode 100755 (executable)
index 0000000..b56c867
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Svjatoslav Commons - shared library of common functionality.
+ * Copyright ©2012-2017, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 3 of the GNU Lesser General Public License
+ * or later as published by the Free Software Foundation.
+ */
+
+package eu.svjatoslav.commons.commandline.parameterparser.parameter;
+
+import eu.svjatoslav.commons.commandline.parameterparser.ArgumentCount;
+import eu.svjatoslav.commons.commandline.parameterparser.Parameter;
+
+import java.io.File;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static eu.svjatoslav.commons.commandline.parameterparser.parameter.FileParameter.validateFile;
+
+public class FileParameters extends Parameter<List<File>, FileParameters> {
+
+    private ExistenceType existenceType = ExistenceType.DOES_NOT_MATTER;
+
+    public FileParameters(final String description) {
+        super(description, ArgumentCount.MULTI);
+    }
+
+    @Override
+    public String describeFormat() {
+        return existenceType.description + " files";
+    }
+
+    @Override
+    public List<File> getValue() {
+        return arguments.stream().map(File::new).collect(Collectors.toList());
+    }
+
+    public FileParameters mustExist() {
+        existenceType = ExistenceType.MUST_EXIST;
+        return this;
+    }
+
+    public FileParameters mustNotExist() {
+        existenceType = ExistenceType.MUST_NOT_EXIST;
+        return this;
+    }
+
+    @Override
+    public boolean validate(final String value) {
+        return validateFile(existenceType, value);
+    }
+
+}