RmsIntInputReader.java
package io.extact.rms.client.console.ui.textio;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.beryx.textio.InputReader;
import org.beryx.textio.IntInputReader;
import org.beryx.textio.TextTerminal;
public class RmsIntInputReader extends IntInputReader {
private List<Integer> selectableValues;
public RmsIntInputReader(TextTerminal<?> textTerminalSupplier) {
super(() -> textTerminalSupplier);
valueCheckers.add((val, propName) -> getSelectableValidationErrors(val));
}
public InputReader<Integer, IntInputReader> withSelectableValues(List<Integer> values, int excludeValue) {
values = new ArrayList<>(values);
values.add(excludeValue);
return withSelectableValues(values);
}
public InputReader<Integer, IntInputReader> withSelectableValues(List<Integer> values) {
selectableValues = values;
return this;
}
private List<String> getSelectableValidationErrors(Integer val) {
if (!selectableValues.contains(val)) {
return Collections.singletonList("Please enter a selectable value.");
}
return null;
}
}