
fi.evolver.utils.arg.StringArg Maven / Gradle / Ivy
package fi.evolver.utils.arg;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class StringArg extends Arg {
private final boolean blankOk;
private final Integer minLength;
private final Integer maxLength;
private final List options;
private StringArg(String name, boolean blankOk, Integer minLength, Integer maxLength, List options, boolean required, String defaultValue) {
super(String.class, name, required, defaultValue);
this.blankOk = blankOk;
this.minLength = minLength;
this.maxLength = maxLength;
this.options = options;
}
public StringArg(String name, List options, String defaultValue) {
this(name, false, null, null, options, false, defaultValue);
}
public StringArg(String name, boolean blankOk, Integer minLength, Integer maxLength) {
this(name, blankOk, minLength, maxLength, null, true, null);
}
public StringArg(String name) {
this(name, false, null, null);
}
public StringArg(String name, boolean blankOk, Integer minLength, Integer maxLength, String defaultValue) {
this(name, blankOk, minLength, maxLength, null, false, defaultValue);
}
public StringArg(String name, String defaultValue) {
this(name, false, null, null, defaultValue);
}
public boolean isBlankOk() {
return blankOk;
}
public Integer getMinLength() {
return minLength;
}
public Integer getMaxLength() {
return maxLength;
}
public List getOptions() {
return options;
}
@Override
protected String convert(InputStream in) throws IOException {
return readUtf8Value(in);
}
@Override
protected void validate(String value) {
if (!isBlankOk() && value.matches("\\s*"))
throw new IllegalArgumentException(getName() + ": value may not be blank");
if (minLength != null && value.length() < minLength)
throw new IllegalArgumentException(getName() + ": value " + value + " too short, must be at least " + minLength + " chars");
if (maxLength != null && value.length() > maxLength)
throw new IllegalArgumentException(getName() + ": value " + value + " too long, may be at most " + maxLength + " chars");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy