/*
* Svjatoslav Commons - shared library of common functionality.
- * Copyright ©2012-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
+ * Copyright ©2012-2017, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of version 3 of the GNU Lesser General Public License
import java.util.ArrayList;
import java.util.Collections;
-public abstract class Parameter<T> {
+public abstract class Parameter<T, I extends Parameter> {
- public final String description;
+ public String description;
public final ArrayList<String> arguments = new ArrayList<>();
- final ArgumentCount argumentCount;
+ ArgumentCount argumentCount;
private final ArrayList<String> aliases = new ArrayList<>();
/**
* Indicates that at least one argument is mandatory for this parameter.
* If this parameter was present in the commandline, then this boolean will
* be set to <code>true</code>.
*/
- private boolean parameterSpecified;
+ private boolean specified;
public Parameter(final boolean mandatory,
final ArgumentCount argumentCount, final String description,
}
@SuppressWarnings("unchecked")
- public T addAliases(final String... aliasArray) {
+ public I addAliases(final String... aliasArray) {
// save aliases
Collections.addAll(aliases, aliasArray);
- return (T) this;
+ return (I)this;
}
/**
return buffer.toString();
}
- public abstract Object getValue();
+ public abstract T getValue();
public boolean isMandatory() {
return mandatory;
/**
* @return the parameterSpecified
*/
- public boolean isParameterSpecified() {
- return parameterSpecified;
+ public boolean isSpecified() {
+ return specified;
}
/**
- * @param parameterSpecified the parameterSpecified to set
+ * @param specified the parameterSpecified to set
*/
- public void setParameterSpecified(final boolean parameterSpecified) {
- this.parameterSpecified = parameterSpecified;
+ protected void setSpecified(final boolean specified) {
+ this.specified = specified;
}
/**
}
@SuppressWarnings("unchecked")
- public T setMandatory() {
+ public I setMandatory() {
mandatory = true;
- return (T) this;
+ return (I)this;
}
/**