Énumération des préréglages de format de date/heure utilisés dans l'interface utilisateur et les couches d'exportation de ProjectForge. Définit 16 niveaux de format distincts, allant du simple format date uniquement (DATE_WITHOUT_YEAR) aux horodatages ISO 8601 complets (ISO_TIMESTAMP_MILLIS). Sert de catalogue de formats déclaratif — les chaînes de format réelles sont résolues à l'exécution par DateHelper ou les paramètres régionaux de l'utilisateur, permettant un formatage de date sensible à la locale sans chaînes de format codées en dur.
Catégories de formats
Formats date uniquement
| Constante d'énumération | Exemple de motif | Cas d'utilisation |
DATE_WITHOUT_YEAR | jj.MM. / MM/jj / jj/MM | Anniversaires affichés sans année, listes jour-mois |
DATE | jj.MM.aaaa / MM/jj/aaaa | Affichage général des dates, champs de date de formulaire |
DATE_WITH_DAY_NAME | E, jj.MM.aaaa | Vues calendrier, pages de planification montrant le jour de la semaine |
DATE_SHORT | jj.MM.aa / MM/jj/aa | Exportations Excel, vues de liste compactes |
ISO_DATE | aaaa-MM-jj | Requêtes base de données, réponses API, échange de données |
Formats date-heure
| Constante d'énumération | Précision | Cas d'utilisation |
DATE_TIME_SHORT_SECONDS | DATE_SHORT + HH:mm:ss | Journaux compacts, entrées de piste d'audit |
DATE_TIME_SHORT_MINUTES | DATE_SHORT + HH:mm | Horaires d'événements calendrier, réunions planifiées |
DATE_TIME_MILLIS | DATE + HH:mm:ss.SSS | Horodatages précis avec millisecondes |
DATE_TIME_SECONDS | DATE + HH:mm:ss | Affichage général des horodatages, journaux d'audit |
DATE_TIME_MINUTES | DATE + HH:mm | Saisies de feuilles de temps, suivi du temps projet |
Formats heure uniquement
| Constante d'énumération | Motif | Cas d'utilisation |
TIME_OF_DAY_SECONDS | HH:mm:ss | Affichages de durée, vues style chronomètre |
TIME_OF_DAY_MINUTES | HH:mm | Saisies d'heure, heures de réunion, heures d'ouverture |
Formats d'horodatage ISO 8601
| Constante d'énumération | Motif | Cas d'utilisation |
ISO_TIMESTAMP_MILLIS | aaaa-MM-jj HH:mm:ss.SSS | Journalisation haute précision, colonnes d'audit base de données |
ISO_TIMESTAMP_SECONDS | aaaa-MM-jj HH:mm:ss | Réponses API, sérialisation JSON, points de terminaison REST |
ISO_TIMESTAMP_MINUTES | aaaa-MM-jj HH:mm | Export calendrier (iCal), systèmes de planification |
Format spécial
| Constante d'énumération | Motif | Cas d'utilisation |
DAY_OF_WEEK_SHORT | EE (lun., mar., ...) | En-têtes de semaine dans les vues calendrier, aperçu hebdomadaire des feuilles de temps |
Sensibilité à la locale
Les commentaires Javadoc pour DATE et DATE_WITHOUT_YEAR montrent plusieurs exemples de motifs ("jj.MM.", "MM/jj", "jj/MM"), indiquant que ces constantes d'énumération représentent l'intention de format plutôt que des motifs fixes. La chaîne de format réelle est résolue par DateHelper en fonction de la locale de l'utilisateur :
- Locale allemande →
jj.MM.aaaa
- Locale américaine →
MM/jj/aaaa
- Locale britannique →
jj/MM/aaaa
Il s'agit d'une caractéristique de conception essentielle pour la base d'utilisateurs internationaux de ProjectForge.
Notation d'exportation Excel
Le Javadoc de la constante DATE_SHORT inclut une notation spécifique à Excel : "DD.MM.YY", "MM/DD/YY", "DD/MM/YY". Cela suggère que les constantes DateFormatType sont également utilisées par le module d'exportation Excel (org.projectforge.business.excel) qui mappe ces valeurs d'énumération aux chaînes de format de cellule Excel — différentes des motifs SimpleDateFormat de Java (le mois est MM dans Excel vs MM en Java, mais des différences de casse existent).
Relation avec DateHelper
Bien que ce fichier définisse uniquement les constantes d'énumération, la logique de résolution de format réelle réside dans DateHelper (dans le même package). DateHelper contient probablement une méthode getFormat(DateFormatType, Locale) ou similaire qui mappe chaque constante d'énumération à une instance DateFormat ou SimpleDateFormat spécifique à la locale.
Motif de conception : Énumération comme catalogue déclaratif
Cette énumération suit un motif où l'énumération sert de catalogue déclaratif des options disponibles, tandis que le comportement réel est implémenté ailleurs (DateHelper). Cette séparation permet :
- aux composants d'interface utilisateur de proposer une liste déroulante de tous les formats disponibles (itération d'énumération)
- à la logique métier de référencer les formats par nom sémantique plutôt que par chaîne de motif
- une résolution centralisée de la locale dans DateHelper sans dupliquer la logique de format dans l'énumération
- la sérialisation des préférences de format (par exemple, le format de date préféré de l'utilisateur stocké comme nom d'énumération dans la base de données)
Les formats d'horodatage ISO utilisent un séparateur espace (aaaa-MM-jj HH:mm:ss) plutôt que le séparateur T standard ISO 8601 (aaaa-MM-jjTHH:mm:ss). Bien que courant dans les contextes de base de données et d'affichage, ce n'est techniquement pas strictement ISO 8601. Les noms de format suggèrent une conformité ISO mais les motifs réels sont « de type ISO ».
Les 16 constantes de format couvrent une gamme complète allant de « sans année » à « précision milliseconde ». Cette granularité reflète les divers cas d'utilisation de ProjectForge : gestion des feuilles de temps (précision minute), rapports financiers (précision jour), pistes d'audit (précision milliseconde), vues calendrier (jour de la semaine) et suivi des migrations de base de données (horodatages ISO). Chaque format répond à un besoin UX ou de données spécifique.