package org.ovirt.engine.core.uutils.cli.parser;
import java.util.Objects;
import java.util.regex.Pattern;
class Argument {
private String name;
private String help;
private String defaultValue;
private Type type;
private Pattern matcher;
private Class<?> valueType;
private boolean mandatory;
private String metavar;
private boolean multivalue;
private String value;
enum Type {
REQUIRED_ARGUMENT,
OPTIONAL_ARGUMENT,
NO_ARGUMENT;
public static Type valueOfIgnoreCase(String name) {
if(name != null) {
return valueOf(name.toUpperCase());
}
throw new IllegalArgumentException("Invalid value null");
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getHelp() {
return help;
}
public void setHelp(String help) {
this.help = help;
}
public String getDefaultValue() {
return defaultValue;
}
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
public Pattern getMatcher() {
return matcher;
}
public void setMatcher(Pattern matcher) {
this.matcher = matcher;
}
public Class<?> getValueType() {
return valueType;
}
public void setValueType(Class<?> valueType) {
this.valueType = valueType;
}
public boolean isMandatory() {
return mandatory;
}
public void setMandatory(boolean mandatory) {
this.mandatory = mandatory;
}
public String getMetavar() {
return metavar;
}
public void setMetavar(String metavar) {
this.metavar = metavar;
}
public boolean isMultivalue() {
return multivalue;
}
public void setMultivalue(boolean multivalue) {
this.multivalue = multivalue;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public boolean equals(Object obj) {
if(obj == this) {
return true;
}
if (!(obj instanceof Argument)) {
return false;
}
return Objects.equals(name, ((Argument) obj).getName());
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}