EN · DE · RU · FR · ES

#813: Constants.kt

projectforge-business/src/main/kotlin/org/projectforge/Constants.kt Singleton Kotlin, projectforge-business/src/main/kotlin/org/projectforge/Constants.kt 158 lignes · 65 code · 46 commentaires · 47 vides

Dépôt central de constantes

La 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."

Catégories de constantes

Longueurs des colonnes de base de données

ConstanteValeurUtilisation
LENGTH_TEXT4000Valeur par défaut pour les champs texte/description
LENGTH_COMMENT4000Champs de commentaire
COMMENT_LENGTH4000Alias hérité pour les champs de commentaire
LENGTH_SUBJECT1000Champs de ligne d'objet
LENGTH_TITLE1000Champs 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.

Limites numériques

ConstanteValeurObjectif
TEN_BILLION10000000000Limite supérieure pour les champs monétaires (BigDecimal précision=12, échelle=2)
TEN_BILLION_NEGATIVE-10000000000Limite inférieure pour les champs monétaires
HUNDRED_BD100Utilisé dans les calculs de pourcentage

Constantes de taille de données

ConstanteValeurNote
KB1024Variantes 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.
MBKB * 1024
GBMB * 1024
TBGB * 1024L (Long)

Constantes de temps

SECONDS_PER_MINUTE = 60MILLIS_PER_SECOND = 1_000L
SECONDS_PER_HOUR = 60 * 60MILLIS_PER_MINUTE = 60 * 1_000L
SECONDS_PER_DAY = 3600 * 24MILLIS_PER_HOUR = 3_600_000L
SECONDS_PER_WEEK = 86400 * 7MILLIS_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.

Chemins d'application

ConstanteValeurObjectif
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)

Liens externes

Préfixées par WEB_, ces constantes forment une hiérarchie de liens : WEB_HOME_PAGE_LINKWEB_DOCS_LINKWEB_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.

Constantes de calendrier et d'événements

TIMESHEET_CALENDAR_ID = -1LID de calendrier spécial pour les événements de feuille de temps
MINYEAR = 1900, MAXYEAR = 2100Plage 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 :

Historique Git

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.