use generics for more elegant code
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Fri, 19 Dec 2014 19:47:06 +0000 (21:47 +0200)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Fri, 19 Dec 2014 19:47:06 +0000 (21:47 +0200)
src/main/java/eu/svjatoslav/commons/commandline/parameterparser/Parameter.java
src/main/java/eu/svjatoslav/commons/commandline/parameterparser/parameter/DirectoryParameter.java
src/main/java/eu/svjatoslav/commons/commandline/parameterparser/parameter/FileParameter.java
src/main/java/eu/svjatoslav/commons/commandline/parameterparser/parameter/IntegerParameter.java
src/main/java/eu/svjatoslav/commons/commandline/parameterparser/parameter/NullParameter.java
src/main/java/eu/svjatoslav/commons/commandline/parameterparser/parameter/StringParameter.java
src/main/java/eu/svjatoslav/commons/commandline/parameterparser/parameter/StringParameters.java

index 004a48a..f259f7f 100755 (executable)
@@ -11,7 +11,7 @@ package eu.svjatoslav.commons.commandline.parameterparser;
 
 import java.util.ArrayList;
 
-public abstract class Parameter {
+public abstract class Parameter<T> {
 
        /**
         * Indicates that at least one argument is mandatory for this parameter.
@@ -22,7 +22,7 @@ public abstract class Parameter {
 
        public final String description;
 
-       protected final ArrayList<String> arguments = new ArrayList<String>();
+       public final ArrayList<String> arguments = new ArrayList<String>();
 
        final ArgumentCount argumentCount;
 
@@ -51,15 +51,13 @@ public abstract class Parameter {
                this.argumentCount = argumentCount;
        }
 
-       public abstract Object addAliases(final String... aliasArray);
-
-       protected Parameter addAliasesProtected(final String... aliasArray) {
+       public T addAliases(final String... aliasArray) {
 
                // save aliases
                for (final String alias : aliasArray)
                        aliases.add(alias);
 
-               return this;
+               return (T) this;
        }
 
        /**
@@ -70,8 +68,8 @@ public abstract class Parameter {
                // check if arguments are allowed for this parameter
                if (argumentCount.equals(ArgumentCount.NONE)) {
                        System.out
-                                       .println("Error! No arguments are allowed for parameters: "
-                                                       + getAliases());
+                       .println("Error! No arguments are allowed for parameters: "
+                                       + getAliases());
                        return false;
                }
 
@@ -79,8 +77,8 @@ public abstract class Parameter {
                if ((arguments.size() > 0)
                                && (argumentCount.equals(ArgumentCount.SINGLE))) {
                        System.out
-                                       .println("Error! Only single argument is allowed for parameters: "
-                                                       + getAliases());
+                       .println("Error! Only single argument is allowed for parameters: "
+                                       + getAliases());
                        return false;
                }
 
@@ -116,31 +114,6 @@ public abstract class Parameter {
                return buffer.toString();
        }
 
-       // public List<File> getArgumentsAsFiles() {
-       // final ArrayList<File> result = new ArrayList<File>();
-       //
-       // for (final String argument : arguments) {
-       // final File file = new File(argument);
-       // result.add(file);
-       // }
-       //
-       // return result;
-       // }
-       //
-       // public List<Integer> getArgumentsAsIntegers() {
-       // final ArrayList<Integer> result = new ArrayList<Integer>();
-       //
-       // for (final String argument : arguments)
-       // result.add(Integer.valueOf(argument));
-       //
-       // return result;
-       // }
-       //
-       // public List<String> getArgumentsAsStrings() {
-       // final ArrayList<String> result = new ArrayList<String>(arguments);
-       // return result;
-       // }
-
        public String getHelp() {
                final StringBuffer buffer = new StringBuffer();
 
@@ -204,11 +177,9 @@ public abstract class Parameter {
                return true;
        }
 
-       public abstract Parameter setMandatory();
-
-       protected Parameter setMandatoryProtected() {
+       public T setMandatory() {
                mandatory = true;
-               return this;
+               return (T) this;
        }
 
        /**
index fc03263..1c11a48 100755 (executable)
@@ -14,7 +14,7 @@ import java.io.File;
 import eu.svjatoslav.commons.commandline.parameterparser.ArgumentCount;
 import eu.svjatoslav.commons.commandline.parameterparser.Parameter;
 
-public class DirectoryParameter extends Parameter {
+public class DirectoryParameter extends Parameter<DirectoryParameter> {
 
        private ExistanceType existanceType = ExistanceType.DOES_NOT_MATTER;
 
@@ -22,12 +22,6 @@ public class DirectoryParameter extends Parameter {
                super(description, ArgumentCount.SINGLE);
        }
 
-       @Override
-       public DirectoryParameter addAliases(final String... aliasArray) {
-               super.addAliasesProtected(aliasArray);
-               return this;
-       }
-
        @Override
        public java.lang.String describeFormat() {
                return existanceType.description + "directory";
@@ -53,12 +47,6 @@ public class DirectoryParameter extends Parameter {
                return this;
        }
 
-       @Override
-       public DirectoryParameter setMandatory() {
-               setMandatoryProtected();
-               return this;
-       }
-
        @Override
        public boolean validate(final java.lang.String value) {
                final File file = new File(value);
index 98a9b42..79b0a10 100755 (executable)
@@ -14,7 +14,7 @@ import java.io.File;
 import eu.svjatoslav.commons.commandline.parameterparser.ArgumentCount;
 import eu.svjatoslav.commons.commandline.parameterparser.Parameter;
 
-public class FileParameter extends Parameter {
+public class FileParameter extends Parameter<FileParameter> {
 
        private ExistanceType existanceType = ExistanceType.DOES_NOT_MATTER;
 
@@ -22,12 +22,6 @@ public class FileParameter extends Parameter {
                super(description, ArgumentCount.SINGLE);
        }
 
-       @Override
-       public FileParameter addAliases(final String... aliasArray) {
-               super.addAliasesProtected(aliasArray);
-               return this;
-       }
-
        @Override
        public java.lang.String describeFormat() {
                return existanceType.description + " file";
@@ -53,12 +47,6 @@ public class FileParameter extends Parameter {
                return this;
        }
 
-       @Override
-       public FileParameter setMandatory() {
-               setMandatoryProtected();
-               return this;
-       }
-
        @Override
        public boolean validate(final java.lang.String value) {
                final File file = new File(value);
index 7c75151..ca8e06f 100755 (executable)
@@ -12,18 +12,12 @@ package eu.svjatoslav.commons.commandline.parameterparser.parameter;
 import eu.svjatoslav.commons.commandline.parameterparser.ArgumentCount;
 import eu.svjatoslav.commons.commandline.parameterparser.Parameter;
 
-public class IntegerParameter extends Parameter {
+public class IntegerParameter extends Parameter<IntegerParameter> {
 
        public IntegerParameter(final String description) {
                super(description, ArgumentCount.SINGLE);
        }
 
-       @Override
-       public IntegerParameter addAliases(final String... aliasArray) {
-               super.addAliasesProtected(aliasArray);
-               return this;
-       }
-
        @Override
        public java.lang.String describeFormat() {
                return "integer";
@@ -37,12 +31,6 @@ public class IntegerParameter extends Parameter {
                return Integer.parseInt(arguments.get(0));
        }
 
-       @Override
-       public IntegerParameter setMandatory() {
-               setMandatoryProtected();
-               return this;
-       }
-
        @Override
        public boolean validate(final java.lang.String value) {
                try {
index 276ecdb..0531edc 100755 (executable)
@@ -12,18 +12,12 @@ package eu.svjatoslav.commons.commandline.parameterparser.parameter;
 import eu.svjatoslav.commons.commandline.parameterparser.ArgumentCount;
 import eu.svjatoslav.commons.commandline.parameterparser.Parameter;
 
-public class NullParameter extends Parameter {
+public class NullParameter extends Parameter<NullParameter> {
 
        public NullParameter(final String description) {
                super(description, ArgumentCount.NONE);
        }
 
-       @Override
-       public NullParameter addAliases(final String... aliasArray) {
-               super.addAliasesProtected(aliasArray);
-               return this;
-       }
-
        @Override
        public java.lang.String describeFormat() {
                return "<none>";
@@ -34,12 +28,6 @@ public class NullParameter extends Parameter {
                return isParameterSpecified();
        }
 
-       @Override
-       public NullParameter setMandatory() {
-               setMandatoryProtected();
-               return this;
-       }
-
        @Override
        public boolean validate(final java.lang.String value) {
                return true;
index 533763d..e3aafee 100755 (executable)
@@ -12,18 +12,12 @@ package eu.svjatoslav.commons.commandline.parameterparser.parameter;
 import eu.svjatoslav.commons.commandline.parameterparser.ArgumentCount;
 import eu.svjatoslav.commons.commandline.parameterparser.Parameter;
 
-public class StringParameter extends Parameter {
+public class StringParameter extends Parameter<StringParameter> {
 
        public StringParameter(final String description) {
                super(description, ArgumentCount.SINGLE);
        }
 
-       @Override
-       public StringParameter addAliases(final String... aliasArray) {
-               super.addAliasesProtected(aliasArray);
-               return this;
-       }
-
        @Override
        public java.lang.String describeFormat() {
                return "string";
@@ -39,12 +33,6 @@ public class StringParameter extends Parameter {
                return arguments.get(0);
        }
 
-       @Override
-       public StringParameter setMandatory() {
-               setMandatoryProtected();
-               return this;
-       }
-
        @Override
        public boolean validate(final java.lang.String value) {
                return true;
index 3de1b03..231bb32 100644 (file)
@@ -14,18 +14,12 @@ import java.util.List;
 import eu.svjatoslav.commons.commandline.parameterparser.ArgumentCount;
 import eu.svjatoslav.commons.commandline.parameterparser.Parameter;
 
-public class StringParameters extends Parameter {
+public class StringParameters extends Parameter<StringParameters> {
 
        public StringParameters(final String description) {
                super(description, ArgumentCount.MULTI);
        }
 
-       @Override
-       public StringParameters addAliases(final String... aliasArray) {
-               super.addAliasesProtected(aliasArray);
-               return this;
-       }
-
        @Override
        public java.lang.String describeFormat() {
                return "one to many strings";
@@ -36,12 +30,6 @@ public class StringParameters extends Parameter {
                return arguments;
        }
 
-       @Override
-       public StringParameters setMandatory() {
-               setMandatoryProtected();
-               return this;
-       }
-
        @Override
        public boolean validate(final java.lang.String value) {
                return true;