package org.opendolphin.demo.sevenguis.flightbooker;
import java.time.LocalDate;
import java.util.function.Supplier;
import static org.opendolphin.demo.sevenguis.flightbooker.ApplicationConstants.VAL_FT_RETURN;
public class DomainLogic {
private final DateTimeService dateTimeService;
private DomainLogic(DateTimeService dateTimeService) {
this.dateTimeService = dateTimeService;
}
public boolean isDateStringValid(String dateString) {
boolean validDate = dateTimeService.isValidDate(dateString);
return validDate;
}
public boolean isValidDateSequence(String dateString1, String dateString2) {
LocalDate d1 = dateTimeService.dateFromString(dateString1);
LocalDate d2 = dateTimeService.dateFromString(dateString2);
return !d2.isBefore(d1);
}
// Builder:
public static IDateTimeServiceBuilder builder() {
return dateTimeService -> startDateSupplier -> new DomainLogic(dateTimeService);
}
public boolean isReturnFlight(String value) {
return VAL_FT_RETURN.equals(value);
}
public String getMessageFor(boolean returnFlight, String startDate, String endDate) {
return returnFlight ?
String.format("You have booked a return flight leaving on %s, returning on %s", startDate, endDate)
: String.format("You have booked a one-way flight on %s", startDate);
}
public interface IDateTimeServiceBuilder { IStartDateBuilder dateTimeService(DateTimeService dateTimeService);}
public interface IStartDateBuilder { DomainLogic startDate(Supplier<String> startDateSupplier);}
}