X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=svjatoslav_commons.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Fcommandline%2Fparameterparser%2FParameter.java;fp=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Fcommandline%2Fparameterparser%2FParameter.java;h=0000000000000000000000000000000000000000;hp=c9023a4053a5895546b2fc9aec63a8f48182208a;hb=f3ca64a08930aa9a9372fe42df596b5e4643084e;hpb=0bdce2e2b2c16cc9576e8d96c67ce2830c8b0afc diff --git a/src/main/java/eu/svjatoslav/commons/commandline/parameterparser/Parameter.java b/src/main/java/eu/svjatoslav/commons/commandline/parameterparser/Parameter.java deleted file mode 100755 index c9023a4..0000000 --- a/src/main/java/eu/svjatoslav/commons/commandline/parameterparser/Parameter.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Svjatoslav Commons - shared library of common functionality. Author: Svjatoslav Agejenko. - * This project is released under Creative Commons Zero (CC0) license. - */ -package eu.svjatoslav.commons.commandline.parameterparser; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -public abstract class Parameter { - - /** - * Purpose of this argument, like: input image path, compression level, etc... - * - * Note: for describing argument type (file, integer, ...) there is {@link #describeFormat()}. - */ - public final String description; - - public final List arguments = new ArrayList<>(); - final ArgumentCount argumentCount; - private final List aliases = new ArrayList<>(); - /** - * Indicates that at least one argument is mandatory for this parameter. - */ - protected boolean mandatory; - /** - * If this parameter was present in the commandline, then this boolean will - * be set to true. - */ - private boolean specified; - - public Parameter(final boolean mandatory, - final ArgumentCount argumentCount, final String description, - final String... aliases2) { - - this.mandatory = mandatory; - this.description = description; - this.argumentCount = argumentCount; - - // save aliases - Collections.addAll(aliases, aliases2); - - } - - public Parameter(final String description, final ArgumentCount argumentCount) { - this.description = description; - this.argumentCount = argumentCount; - } - - @SuppressWarnings("unchecked") - public I addAliases(final String... aliasArray) { - - // save aliases - Collections.addAll(aliases, aliasArray); - - return (I) this; - } - - /** - * @param argumentString argument to add - * @return true if no errors were found. false - * otherwise. - */ - public boolean addArgument(final String argumentString) { - // check if arguments are allowed for this parameter - if (argumentCount.equals(ArgumentCount.NONE)) { - System.out - .println("Error! No arguments are allowed for parameters: " - + getAliases()); - return false; - } - - // check if multiple arguments are allowed - if ((arguments.size() > 0) - && (argumentCount.equals(ArgumentCount.SINGLE))) { - System.out - .println("Error! Only single argument is allowed for parameters: " - + getAliases()); - return false; - } - - if (!validate(argumentString)) { - - System.out.println("Error! Invalid argument \"" + argumentString - + "\". It shall be " + describeFormat() + "."); - return false; - - } - - arguments.add(argumentString); - - return true; - } - - /** - * @return Single line argument type description. If argument type should be file, - * date, integer, regular expression, etc.. - * - * Note: for argument purpose description there is {@link #description} - */ - public abstract String describeFormat(); - - public String getAliases() { - final StringBuilder buffer = new StringBuilder(); - - for (final String alias : aliases) { - - if (buffer.length() > 0) - buffer.append(", "); - - buffer.append(alias); - } - - return buffer.toString(); - } - - public String getHelp() { - final StringBuilder buffer = new StringBuilder(); - - // first line - buffer.append(getAliases()); - if (!argumentCount.equals(ArgumentCount.NONE)) { - buffer - .append(" (") - .append(isMandatory() ? "mandatory, " : "") - .append(describeFormat()) - .append(")"); - - if (argumentCount.equals(ArgumentCount.MULTI)) - buffer.append("..."); - } - buffer.append("\n"); - - // second line - buffer.append(" " + description + "\n"); - - return buffer.toString(); - } - - public abstract T getValue(); - - public boolean isMandatory() { - return mandatory; - } - - /** - * @return the parameterSpecified - */ - public boolean isSpecified() { - return specified; - } - - /** - * @param specified the parameterSpecified to set - */ - protected void setSpecified(final boolean specified) { - this.specified = specified; - } - - /** - * @param alias alias to check against - * @return true if given alias is registered for this - * parameter. - */ - public boolean matchesAlias(final String alias) { - return aliases.contains(alias); - - } - - /** - * Notifies this parameter that no more arguments will follow. This gives - * parameter chance to verify if this is ok. - * - * @return true if no errors were found. false - * otherwise. - */ - public boolean noMoreArguments() { - - if ((!argumentCount.equals(ArgumentCount.NONE)) - && (arguments.isEmpty())) { - - System.out.println("Error! " + getAliases() - + " require at least one following argument."); - - return false; - } - return true; - } - - @SuppressWarnings("unchecked") - public I setMandatory() { - mandatory = true; - return (I) this; - } - - /** - * @param value value to validate - * @return true if value is correct, false - * otherwise. - */ - public abstract boolean validate(String value); - -}