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.
*/
protected boolean mandatory;
- private final Argument argumentType;
-
private final ArrayList<String> aliases = new ArrayList<String>();
public final String description;
*/
private boolean parameterSpecified;
- public Parameter(final Argument argumentType, final String description,
- final ArgumentCount argumentCount) {
-
+ public Parameter(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;
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;
}
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 List<File> getArgumentsAsFiles() {
final ArrayList<File> result = new ArrayList<File>();
// first line
buffer.append(getAliases());
if (!argumentCount.equals(ArgumentCount.NONE)) {
- buffer.append(" (" + argumentType.describeFormat() + ")");
+ buffer.append(" (" + describeFormat() + ")");
if (argumentCount.equals(ArgumentCount.MULTI))
buffer.append("...");
this.parameterSpecified = parameterSpecified;
}
+ /**
+ * @return Single line argument type description.
+ */
+ public abstract String describeFormat();
+
+ /**
+ * @return <code>true</code> if value is correct, <code>false</code>
+ * otherwise.
+ */
+ public abstract boolean validate(String value);
+
}