Usage
La bibliothèque vous permet de calculer une date limite à partir d'une heure et d'une durée en fonction d'un calendrier spécifié.
Utilisation
Vous pouvez spécifier un calendrier comme suit :
@Bean
public Calendar calendar() throws DeadLineException {
return Calendar.createCalendar()
.createPeriod(DayOfWeek.MONDAY, "9:00", "17:00")
.createPeriod(DayOfWeek.TUESDAY, "10:00", "12:00")
.createPeriod(DayOfWeek.TUESDAY, "14:00", "18:00")
.addYearlyOffDay(01, 01, 100)
.addOffDay(29, 05, 2023)
.build();
}
Vous pouvez utiliser le calendrier comme suit:
\\ Démarrage du calcul le lundi 5 décembre 2022 à 6h00:
Date date = calendar.calcDeadLine("PT11M", "2022-05-12T06:00:00.000+02:00");
\\ résultat :
2022-05-12T09:11:00.000+02:00
\\ Démarrage du calcul le mardi 6 décembre 2022 à 6h00:
Date date = calendar.calcDeadLine("PT5H", "2022-06-12T06:00:00.000+02:00");
\\ résultat :
2022-06-12T17:00:00.000+02:00
-
Pour l'exemple j'ai remplacé un élément de type date par une chaine de caractère
Vous pouvez spécifier aussi plusieurs calendriers, ils seront gérés par un calendrier manager :
@Bean
public CalendarManager calendarManager() throws DeadLineException {
Calendar calendar = Calendar.createCalendar()
.createPeriod(DayOfWeek.MONDAY, "9:00", "17:00")
.createPeriod(DayOfWeek.TUESDAY, "10:00", "12:00")
.createPeriod(DayOfWeek.TUESDAY, "14:00", "18:00")
.addYearlyOffDay(01, 01, 100)
.addOffDay(29, 05, 2023)
.build();
Calendar calendar2 = Calendar.createCalendar()
.createPeriod(DayOfWeek.MONDAY, "9:00", "17:00")
.createPeriod(DayOfWeek.TUESDAY, "10:00", "12:00")
.createPeriod(DayOfWeek.TUESDAY, "14:00", "21:00")
.createPeriod(DayOfWeek.THURSDAY, "14:00", "18:00")
.addYearlyOffDay(01, 01, 100)
.addOffDay(29, 05, 2023)
.build();
return CalendarManager
.createCalendarManager()
.addCalendar("MONDAY_TUESDAY", calendar)
.addCalendar("MONDAY_THURSDAY", calendar2)
.forceSystemDeadLineOnThrow(true) // default is false
.build();
}
Vous pouvez utiliser le calendrier manager comme suit:
Date date = calendarManager.calcDeadLine("MONDAY_TUESDAY", "PT11M", new Date());
RoadMap
- Créer une IHM pour gérer les calendriers
- Gérer le stockage des calendriers en base de données
- Permettre la lecture d'un calendrier depuis un fichier
Documentation
CalendarManager
addCalendar(String name, Calendar calendar)
forceSystemDeadLineOnThrow(boolean force)
-
Force le système à utiliser le calcul système (h24) si le calcul de la date limite échoue ou que le calendrier n'est pas connu
calcDeadLine(String calendarName, String duration, Date startDate)
Calendar
createPeriod(DayOfWeek dayOfWeek, String start, String end)
addOffDay(int day, int month, int year)
addYearlyOffDay(int day, int month, int year)
calcDeadLine(String duration, Date startDate)
Maven
<dependency>
<groupId>org.hdc.product</groupId>
<artifactId>duration-deadline</artifactId>
<version>1.0.1</version>
</dependency>