Console.java
package estore.presentation;
import java.util.Scanner;
import estore.presentation.validation.Rule;
/** Handles user-visible console interaction without coupling with logging internals. */
public class Console implements IConsole {
private final Scanner scanner;
public Console() {
this.scanner = new Scanner(System.in);
}
public String readInput() {
if (ConsoleMessages.isTestModeEnabled()) {
System.out.print(ConsoleMessages.TEST_MODE_DELIMITER);
System.out.flush();
}
return scanner.nextLine();
}
public String readValidatedInput(String prompt, Rule rule, String validationMessage) {
while (true) {
printPrompt(prompt);
String input = readInput();
if (rule.validate(input)) {
return input;
}
printMessage(validationMessage);
}
}
public void printMessage(String message) {
System.out.println(message);
}
public void printPrompt(String prompt) {
System.out.print(prompt);
}
}