in use-cases/vaccination-scheduling/src/main/java/org/acme/vaccinationscheduler/bootstrap/DemoDataGenerator.java [89:112]
public VaccinationSchedule generate(int vaccinationCenterCount, int totalBoothCount, double pinnedAppointmentRatio) {
Random random = new Random(17);
LocalDate windowStartDate = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.MONDAY));
int windowDaysLength = 5;
LocalTime dayStartTime = LocalTime.of(9, 0);
int injectionsPerBoothPerTimeslot = 4;
int timeslotsPerBoothPerDay = (int) HOURS.between(dayStartTime, LocalTime.of(17, 0));
List<VaccineType> vaccineTypeList = generateVaccineTypeList();
List<VaccinationCenter> vaccinationCenterList = generateVaccinationCenterList(
random, vaccinationCenterCount);
List<Appointment> appointmentList = generateAppointmentList(random,
windowStartDate, windowDaysLength, dayStartTime, totalBoothCount,
injectionsPerBoothPerTimeslot, timeslotsPerBoothPerDay,
vaccineTypeList, vaccinationCenterList);
List<Person> personList = generatePersonList(random,
windowStartDate, windowDaysLength, pinnedAppointmentRatio,
vaccineTypeList, vaccinationCenterList, appointmentList);
logger.info("Generated dataset with {} appointments and {} persons.",
appointmentList.size(),
personList.size());
return new VaccinationSchedule(vaccineTypeList, vaccinationCenterList, appointmentList, personList);
}