LocalDateInputReader.java

package io.extact.rms.client.console.ui.textio;

import static io.extact.rms.client.console.ui.ClientConstants.*;

import java.time.LocalDate;
import java.time.format.DateTimeParseException;
import java.util.List;

import org.beryx.textio.InputReader;
import org.beryx.textio.TextTerminal;

public class LocalDateInputReader extends InputReader<LocalDate, LocalDateInputReader> {

    public LocalDateInputReader(TextTerminal<?> textTerminal) {
        super(() -> textTerminal);
    }

    @Override
    protected ParseResult<LocalDate> parse(String s) {
        try {
            return new ParseResult<>(LocalDate.parse(s, DATE_FORMAT));
        } catch (DateTimeParseException e) {
            return new ParseResult<>(null,
                    List.of(
                            getDefaultErrorMessage(s),
                            "Please enter in YYYY/MM/DD format"
                            ));
        }
    }
}