All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fi.evolver.utils.arg.StringArg Maven / Gradle / Ivy

There is a newer version: 3.5.0
Show newest version
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