1 package io.extact.rms.client.console.ui.textio;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.List;
6
7 import org.beryx.textio.InputReader;
8 import org.beryx.textio.IntInputReader;
9 import org.beryx.textio.TextTerminal;
10
11 public class RmsIntInputReader extends IntInputReader {
12
13 private List<Integer> selectableValues;
14
15 public RmsIntInputReader(TextTerminal<?> textTerminalSupplier) {
16 super(() -> textTerminalSupplier);
17 valueCheckers.add((val, propName) -> getSelectableValidationErrors(val));
18 }
19
20 public InputReader<Integer, IntInputReader> withSelectableValues(List<Integer> values, int excludeValue) {
21 values = new ArrayList<>(values);
22 values.add(excludeValue);
23 return withSelectableValues(values);
24 }
25
26 public InputReader<Integer, IntInputReader> withSelectableValues(List<Integer> values) {
27 selectableValues = values;
28 return this;
29 }
30
31 private List<String> getSelectableValidationErrors(Integer val) {
32 if (!selectableValues.contains(val)) {
33 return Collections.singletonList("Please enter a selectable value.");
34 }
35 return null;
36 }
37 }