import java.util.ArrayList;
-public abstract class Parameter {
+public abstract class Parameter<T> {
/**
* Indicates that at least one argument is mandatory for this parameter.
public final String description;
- protected final ArrayList<String> arguments = new ArrayList<String>();
+ public final ArrayList<String> arguments = new ArrayList<String>();
final ArgumentCount argumentCount;
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;
}
/**
// 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;
}
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;
}
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();
return true;
}
- public abstract Parameter setMandatory();
-
- protected Parameter setMandatoryProtected() {
+ public T setMandatory() {
mandatory = true;
- return this;
+ return (T) this;
}
/**
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;
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";
return this;
}
- @Override
- public DirectoryParameter setMandatory() {
- setMandatoryProtected();
- return this;
- }
-
@Override
public boolean validate(final java.lang.String value) {
final File file = new File(value);
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;
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";
return this;
}
- @Override
- public FileParameter setMandatory() {
- setMandatoryProtected();
- return this;
- }
-
@Override
public boolean validate(final java.lang.String value) {
final File file = new File(value);
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";
return Integer.parseInt(arguments.get(0));
}
- @Override
- public IntegerParameter setMandatory() {
- setMandatoryProtected();
- return this;
- }
-
@Override
public boolean validate(final java.lang.String value) {
try {
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>";
return isParameterSpecified();
}
- @Override
- public NullParameter setMandatory() {
- setMandatoryProtected();
- return this;
- }
-
@Override
public boolean validate(final java.lang.String value) {
return true;
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";
return arguments.get(0);
}
- @Override
- public StringParameter setMandatory() {
- setMandatoryProtected();
- return this;
- }
-
@Override
public boolean validate(final java.lang.String value) {
return true;
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";
return arguments;
}
- @Override
- public StringParameters setMandatory() {
- setMandatoryProtected();
- return this;
- }
-
@Override
public boolean validate(final java.lang.String value) {
return true;