deadline.lib

Librairie Java permettant de faire des calculs de date suivant des calendriers customisables

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)

  • Ajoute un calendrier au manager

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)

  • Calcule la date limite en fonction du calendrier spécifié

Calendar

createPeriod(DayOfWeek dayOfWeek, String start, String end)

  • Créer une période de travail pour un jour de la semaine

addOffDay(int day, int month, int year)

  • Ajoute un jour off au calendrier

addYearlyOffDay(int day, int month, int year)

  • Ajoute un jour off récurrent au calendrier

calcDeadLine(String duration, Date startDate)

  • Calcule la date limite sur le calendrier

Maven

<dependency>
  <groupId>org.hdc.product</groupId>
  <artifactId>duration-deadline</artifactId>
  <version>1.0.1</version>
</dependency>