Constants.ktLa source unique de vérité pour toutes les constantes du projet. Un object Kotlin (singleton thread-safe) de 158 lignes, référencé partout — par les entités JPA comme @Column(length = Constants.LENGTH_TITLE), par les validateurs, les formateurs et les composants d'interface utilisateur. Javadoc : "Définit différentes constantes (longueur typique des colonnes de chaînes) utilisables par les plugins et le package de base."
| Constante | Valeur | Utilisation |
|---|---|---|
LENGTH_TEXT | 4000 | Valeur par défaut pour les champs texte/description |
LENGTH_COMMENT | 4000 | Champs de commentaire |
COMMENT_LENGTH | 4000 | Alias hérité pour les champs de commentaire |
LENGTH_SUBJECT | 1000 | Champs de ligne d'objet |
LENGTH_TITLE | 1000 | Champs de titre dans toutes les entités |
La standardisation des longueurs de colonnes en un seul endroit garantit la cohérence du schéma de base de données dans toutes les classes d'entités. Utilisé dans les annotations JPA @Column(length = ...) et la validation côté front-end.
| Constante | Valeur | Objectif |
|---|---|---|
TEN_BILLION | 10000000000 | Limite supérieure pour les champs monétaires (BigDecimal précision=12, échelle=2) |
TEN_BILLION_NEGATIVE | -10000000000 | Limite inférieure pour les champs monétaires |
HUNDRED_BD | 100 | Utilisé dans les calculs de pourcentage |
| Constante | Valeur | Note |
|---|---|---|
KB | 1024 | Variantes entières et BigDecimal disponibles (ex. KB_BD). Utilisé pour le formatage de la taille des fichiers et la validation des limites de téléchargement. |
MB | KB * 1024 | |
GB | MB * 1024 | |
TB | GB * 1024L (Long) |
SECONDS_PER_MINUTE = 60 | MILLIS_PER_SECOND = 1_000L |
SECONDS_PER_HOUR = 60 * 60 | MILLIS_PER_MINUTE = 60 * 1_000L |
SECONDS_PER_DAY = 3600 * 24 | MILLIS_PER_HOUR = 3_600_000L |
SECONDS_PER_WEEK = 86400 * 7 | MILLIS_PER_DAY = 86_400_000L |
MILLIS_PER_WEEK = 604_800_000L |
Chaque constante de temps a une variante _BD correspondante (BigDecimal). Utilisé dans les calculs de feuilles de temps, les minuteries et l'arithmétique des dates/heures.
| Constante | Valeur | Objectif |
|---|---|---|
REACT_APP_PATH | "react/" | Préfixe de chemin URL pour le frontend SPA React |
WICKET_APPLICATION_PATH | "wa/" | Préfixe de chemin URL pour les pages Wicket héritées |
BUILD_DIR | "build" | Répertoire de sortie de construction Gradle (était "target" avec Maven) |
Préfixées par WEB_, ces constantes forment une hiérarchie de liens : WEB_HOME_PAGE_LINK → WEB_DOCS_LINK → WEB_DOCS_USER_GUIDE_LINK, WEB_DOCS_ADMIN_GUIDE_LINK, etc. Utilisées dans toute l'interface utilisateur pour les liens d'aide et les références de documentation.
TIMESHEET_CALENDAR_ID = -1L | ID de calendrier spécial pour les événements de feuille de temps |
MINYEAR = 1900, MAXYEAR = 2100 | Plage d'années valide pour les sélecteurs de date et la validation |
EVENT_CLASS_NAME = "timesheet" | Identifiant pour les événements de calendrier de feuille de temps |
BREAK_EVENT_CLASS_NAME = "ts-break" | Identifiant pour les entrées de pause dans les feuilles de temps |
object Kotlin — Pourquoi pas une classe ?Un object Kotlin est un singleton thread-safe créé au premier accès via les garanties de chargement de classe JVM. Les constantes déclarées avec const val sont compilées en champs statiques JVM et intégrées au site d'appel — aucun surcoût de résolution à l'exécution.
Pour l'interopérabilité Java :
@JvmField sur les champs BigDecimal les expose comme Constants.TEN_BILLION sans getters synthétiques.@JvmStatic sur isTimesheetCalendarId() en fait une véritable méthode statique appelable depuis Java.CURRENCY_SYMBOL se résout paresseusement depuis ConfigurationServiceAccessor au premier accès — la seule valeur non constante dans l'objet.868d6abb7 2025 -> 2026 47d42a5bb Économies IA : mise à jour massive des feuilles de temps, édition dans la page classique ajoutée. 63081666f En-têtes de fichiers source : 2024 -> 2025. 1ffa5a1ef WIP : gradle... 4c04cfd65 CHANGEMENT-MAJEUR ! Migration des identifiants entiers vers des identifiants Long. b6092df09 Copyright 2023 -> 2024 ab45d51fa Copyright 2001-2022 -> 2001-2023. dcfc7c1a9 Ancien calendrier déplacé vers le sous-menu, ScriptingTask*, JiraUtils 1ea8d4062 WIP : Enregistrements de comptes bancaires et d'emplois. d7b3e8751 Grille AG : Copier-coller et export Excel améliorés.