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=004a48ad45148366d1a3b6ec3d745c6061bcbd5d;hp=831806dd016754e99adea26381947f0ddc986f91;hb=ab4cc64cf105d4f03b8a0b94ab58d9b973820c8a;hpb=5fecd6b03f114cab04e0389bd1900b27726c73ea 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 831806d..004a48a 100755 --- a/src/main/java/eu/svjatoslav/commons/commandline/parameterparser/Parameter.java +++ b/src/main/java/eu/svjatoslav/commons/commandline/parameterparser/Parameter.java @@ -1,26 +1,22 @@ /* * Svjatoslav Commons - shared library of common functionality. - * Copyright ©2012-2013, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu - * + * Copyright ©2012-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public License - * as published by the Free Software Foundation. + * 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; -import java.io.File; import java.util.ArrayList; -import java.util.List; -public class Parameter { +public abstract class Parameter { /** * Indicates that at least one argument is mandatory for this parameter. */ - private boolean mandatory; - - private final Argument argumentType; + protected boolean mandatory; private final ArrayList aliases = new ArrayList(); @@ -28,7 +24,7 @@ public class Parameter { protected final ArrayList arguments = new ArrayList(); - ArgumentCount argumentCount; + final ArgumentCount argumentCount; /** * If this parameter was present in the commandline, then this boolean will @@ -36,20 +32,11 @@ public class Parameter { */ private boolean parameterSpecified; - public Parameter(final Argument argumentType, final String description, - final ArgumentCount argumentCount) { - - this.description = description; - this.argumentType = argumentType; - this.argumentCount = argumentCount; - }; - public Parameter(final boolean mandatory, - final ArgumentCount argumentCount, final Argument argumentType, - final String description, final String... aliases2) { + final ArgumentCount argumentCount, final String description, + final String... aliases2) { this.mandatory = mandatory; - this.argumentType = argumentType; this.description = description; this.argumentCount = argumentCount; @@ -57,9 +44,16 @@ public class Parameter { for (final String alias : aliases2) aliases.add(alias); + }; + + public Parameter(final String description, final ArgumentCount argumentCount) { + this.description = description; + this.argumentCount = argumentCount; } - public Parameter addAliases(final String... aliasArray) { + public abstract Object addAliases(final String... aliasArray); + + protected Parameter addAliasesProtected(final String... aliasArray) { // save aliases for (final String alias : aliasArray) @@ -90,10 +84,10 @@ public class Parameter { return false; } - if (!argumentType.validate(argumentString)) { + if (!validate(argumentString)) { System.out.println("Error! Invalid argument \"" + argumentString - + "\". It shall be " + argumentType.describeFormat() + "."); + + "\". It shall be " + describeFormat() + "."); return false; } @@ -103,6 +97,11 @@ public class Parameter { return true; } + /** + * @return Single line argument type description. + */ + public abstract String describeFormat(); + public String getAliases() { final StringBuffer buffer = new StringBuffer(); @@ -117,44 +116,30 @@ public class Parameter { return buffer.toString(); } - public File getArgumentAsFile() { - if (arguments.size() != 1) - throw new RuntimeException("Parameter " + description - + " shall have exactly 1 argument."); - return new File(arguments.get(0)); - } - - public int getArgumentAsInteger() { - if (arguments.size() != 1) - throw new RuntimeException("Parameter " + description - + " shall have exactly 1 argument."); - return Integer.parseInt(arguments.get(0)); - } - - public List getArgumentsAsFiles() { - final ArrayList result = new ArrayList(); - - for (final String argument : arguments) { - final File file = new File(argument); - result.add(file); - } - - return result; - } - - public List getArgumentsAsIntegers() { - final ArrayList result = new ArrayList(); - - for (final String argument : arguments) - result.add(Integer.valueOf(argument)); - - return result; - } - - public List getArgumentsAsStrings() { - final ArrayList result = new ArrayList(arguments); - return result; - } + // public List getArgumentsAsFiles() { + // final ArrayList result = new ArrayList(); + // + // for (final String argument : arguments) { + // final File file = new File(argument); + // result.add(file); + // } + // + // return result; + // } + // + // public List getArgumentsAsIntegers() { + // final ArrayList result = new ArrayList(); + // + // for (final String argument : arguments) + // result.add(Integer.valueOf(argument)); + // + // return result; + // } + // + // public List getArgumentsAsStrings() { + // final ArrayList result = new ArrayList(arguments); + // return result; + // } public String getHelp() { final StringBuffer buffer = new StringBuffer(); @@ -162,7 +147,7 @@ public class Parameter { // first line buffer.append(getAliases()); if (!argumentCount.equals(ArgumentCount.NONE)) { - buffer.append(" (" + argumentType.describeFormat() + ")"); + buffer.append(" (" + describeFormat() + ")"); if (argumentCount.equals(ArgumentCount.MULTI)) buffer.append("..."); @@ -175,6 +160,8 @@ public class Parameter { return buffer.toString(); } + public abstract Object getValue(); + public boolean isMandatory() { return mandatory; } @@ -200,7 +187,7 @@ public class Parameter { /** * 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. */ @@ -217,7 +204,9 @@ public class Parameter { return true; } - public Parameter setMandatory() { + public abstract Parameter setMandatory(); + + protected Parameter setMandatoryProtected() { mandatory = true; return this; } @@ -230,4 +219,10 @@ public class Parameter { this.parameterSpecified = parameterSpecified; } + /** + * @return true if value is correct, false + * otherwise. + */ + public abstract boolean validate(String value); + }