Integer promptNonNegativeInt()

in c3r-cli-spark/src/main/java/com/amazonaws/c3r/spark/io/schema/InteractiveSchemaGenerator.java [242:275]


    Integer promptNonNegativeInt(final String baseUserPrompt,
                                 final Integer defaultValue,
                                 final int maxValue) {
        final var promptSB = new StringBuilder(baseUserPrompt);
        if (defaultValue != null) {
            promptSB.append(" (default `").append(defaultValue).append("`)");
        }
        promptSB.append("? ");
        consoleOutput.print(promptSB);

        final int num;
        final String userInput = readNextLineLowercase();
        try {
            num = Integer.parseInt(userInput);
        } catch (NumberFormatException e) {
            if (userInput.isBlank()) {
                if (defaultValue == null) {
                    consoleOutput.println("Expected an integer >= 0, but found no input.");
                }
                return defaultValue;
            } else {
                consoleOutput.println("Expected an integer >= 0, but found `" + userInput + "`.");
                return null;
            }
        }
        if (num < 0) {
            consoleOutput.println("Expected an integer >= 0, but found " + num + ".");
            return null;
        } else if (num > maxValue) {
            consoleOutput.println("Expected an integer >= 0 and < " + maxValue + ".");
            return null;
        }
        return num;
    }