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;h=81413393853b89c40b52d7d8bf13fa36c6944ff4;hp=25f406d6d8dfaba5ec62e50a66c1299deffa36a8;hb=9bf004ce4e9b5edff36c65fcc8cc0f303390d7fc;hpb=afaa928dd10304ee3e8e6bad3a377ced6a7b2f42 diff --git a/src/main/java/eu/svjatoslav/commons/commandline/parameterparser/Parameter.java b/src/main/java/eu/svjatoslav/commons/commandline/parameterparser/Parameter.java index 25f406d..8141339 100755 --- a/src/main/java/eu/svjatoslav/commons/commandline/parameterparser/Parameter.java +++ b/src/main/java/eu/svjatoslav/commons/commandline/parameterparser/Parameter.java @@ -10,198 +10,186 @@ package eu.svjatoslav.commons.commandline.parameterparser; import java.util.ArrayList; +import java.util.Collections; public abstract class Parameter { - /** - * Indicates that at least one argument is mandatory for this parameter. - */ - protected boolean mandatory; + public final String description; + public final ArrayList arguments = new ArrayList<>(); + final ArgumentCount argumentCount; + private final ArrayList 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 parameterSpecified; + + public Parameter(final boolean mandatory, + final ArgumentCount argumentCount, final String description, + final String... aliases2) { - private final ArrayList aliases = new ArrayList(); + this.mandatory = mandatory; + this.description = description; + this.argumentCount = argumentCount; - public final String description; - - public final ArrayList arguments = new ArrayList(); - - final ArgumentCount argumentCount; - - /** - * If this parameter was present in the commandline, then this boolean will - * be set to true. - */ - private boolean parameterSpecified; - - 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 - for (final String alias : aliases2) - aliases.add(alias); - - }; - - public Parameter(final String description, final ArgumentCount argumentCount) { - this.description = description; - this.argumentCount = argumentCount; - } - - @SuppressWarnings("unchecked") - public T addAliases(final String... aliasArray) { - - // save aliases - for (final String alias : aliasArray) - aliases.add(alias); - - return (T) 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. - */ - public abstract String describeFormat(); - - public String getAliases() { - final StringBuffer buffer = new StringBuffer(); - - for (final String alias : aliases) { - - if (buffer.length() > 0) - buffer.append(", "); - - buffer.append(alias); - } - - return buffer.toString(); - } - - public String getHelp() { - final StringBuffer buffer = new StringBuffer(); - - // first line - buffer.append(getAliases()); - if (!argumentCount.equals(ArgumentCount.NONE)) { - buffer.append(" (" + describeFormat() + ")"); - - if (argumentCount.equals(ArgumentCount.MULTI)) - buffer.append("..."); - } - buffer.append("\n"); - - // second line - buffer.append(" " + description + "\n"); - - return buffer.toString(); - } - - public abstract Object getValue(); - - public boolean isMandatory() { - return mandatory; - } - - /** - * @return the parameterSpecified - */ - public boolean isParameterSpecified() { - return parameterSpecified; - } - - /** - * @param alias - * alias to check against - * @return true if given alias is registered for this - * parameter. - */ - public boolean matchesAlias(final String alias) { - if (aliases.contains(alias)) - return true; - - return false; - } - - /** - * 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 T setMandatory() { - mandatory = true; - return (T) this; - } - - /** - * @param parameterSpecified - * the parameterSpecified to set - */ - public void setParameterSpecified(final boolean parameterSpecified) { - this.parameterSpecified = parameterSpecified; - } - - /** - * @param value - * value to validate - * @return true if value is correct, false - * otherwise. - */ - public abstract boolean validate(String value); + // save aliases + Collections.addAll(aliases, aliases2); + + } + + public Parameter(final String description, final ArgumentCount argumentCount) { + this.description = description; + this.argumentCount = argumentCount; + } + + @SuppressWarnings("unchecked") + public T addAliases(final String... aliasArray) { + + // save aliases + Collections.addAll(aliases, aliasArray); + + return (T) 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. + */ + 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(" (" + describeFormat() + ")"); + + if (argumentCount.equals(ArgumentCount.MULTI)) + buffer.append("..."); + } + buffer.append("\n"); + + // second line + buffer.append(" " + description + "\n"); + + return buffer.toString(); + } + + public abstract Object getValue(); + + public boolean isMandatory() { + return mandatory; + } + + /** + * @return the parameterSpecified + */ + public boolean isParameterSpecified() { + return parameterSpecified; + } + + /** + * @param parameterSpecified the parameterSpecified to set + */ + public void setParameterSpecified(final boolean parameterSpecified) { + this.parameterSpecified = parameterSpecified; + } + + /** + * @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 T setMandatory() { + mandatory = true; + return (T) this; + } + + /** + * @param value value to validate + * @return true if value is correct, false + * otherwise. + */ + public abstract boolean validate(String value); }