Constants.ktDie einzige Quelle der Wahrheit für alle projektweiten Konstanten. Ein Kotlin-object (threadsicherer Singleton) mit 158 Zeilen, der überall referenziert wird – von JPA-Entitäten als @Column(length = Constants.LENGTH_TITLE), von Validatoren, Formatierern und UI-Komponenten. Javadoc: „Definiert verschiedene Konstanten (typische Länge von String-Spalten), die von Plugins und dem Kernpaket verwendet werden können.“
| Konstante | Wert | Verwendung |
|---|---|---|
LENGTH_TEXT | 4000 | Standard für Text-/Beschreibungsfelder |
LENGTH_COMMENT | 4000 | Kommentarfelder |
COMMENT_LENGTH | 4000 | Legacy-Alias für Kommentarfelder |
LENGTH_SUBJECT | 1000 | Betreffzeilenfelder |
LENGTH_TITLE | 1000 | Titelfelder in allen Entitäten |
Die Standardisierung der Spaltenlängen an einer Stelle garantiert die Konsistenz des Datenbankschemas über alle Entitätsklassen hinweg. Verwendet in JPA-@Column(length = ...)-Annotationen und der Frontend-Validierung.
| Konstante | Wert | Zweck |
|---|---|---|
TEN_BILLION | 10000000000 | Obergrenze für Geldbeträge (BigDecimal precision=12, scale=2) |
TEN_BILLION_NEGATIVE | -10000000000 | Untergrenze für Geldbeträge |
HUNDRED_BD | 100 | Wird in Prozentberechnungen verwendet |
| Konstante | Wert | Hinweis |
|---|---|---|
KB | 1024 | Integer- und BigDecimal-Varianten verfügbar (z. B. KB_BD). Verwendet für Dateigrößenformatierung und Upload-Limit-Validierung. |
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 |
Jede Zeitkonstante hat eine entsprechende _BD-Variante (BigDecimal). Verwendet in Zeiterfassungsberechnungen, Timern und Datums-/Zeitarithmetik.
| Konstante | Wert | Zweck |
|---|---|---|
REACT_APP_PATH | "react/" | URL-Pfadpräfix für das React-SPA-Frontend |
WICKET_APPLICATION_PATH | "wa/" | URL-Pfadpräfix für Legacy-Wicket-Seiten |
BUILD_DIR | "build" | Gradle-Build-Ausgabeverzeichnis (war „target“ bei Maven) |
Mit WEB_ präfigiert bilden diese Konstanten eine Linkhierarchie: WEB_HOME_PAGE_LINK → WEB_DOCS_LINK → WEB_DOCS_USER_GUIDE_LINK, WEB_DOCS_ADMIN_GUIDE_LINK usw. Werden in der gesamten Benutzeroberfläche für Hilfelinks und Dokumentationsverweise verwendet.
TIMESHEET_CALENDAR_ID = -1L | Spezielle Kalender-ID für Zeiterfassungsereignisse |
MINYEAR = 1900, MAXYEAR = 2100 | Gültiger Jahresbereich für Datumsauswahlen und Validierung |
EVENT_CLASS_NAME = "timesheet" | Kennung für Zeiterfassungs-Kalenderereignisse |
BREAK_EVENT_CLASS_NAME = "ts-break" | Kennung für Pauseneinträge in Zeiterfassungen |
object – Warum keine Klasse?Ein Kotlin-object ist ein threadsicherer Singleton, der beim ersten Zugriff über die JVM-Klassenladungsgarantie erstellt wird. Mit const val deklarierte Konstanten werden zu JVM-Statikfeldern kompiliert und an der Aufrufstelle inline eingefügt – kein Laufzeit-Overhead durch Auflösung.
Für Java-Interop:
@JvmField auf BigDecimal-Feldern macht sie als Constants.TEN_BILLION ohne synthetische Getter zugänglich.@JvmStatic auf isTimesheetCalendarId() macht es zu einer echten statischen Methode, die von Java aufgerufen werden kann.CURRENCY_SYMBOL wird beim ersten Zugriff lazy aus ConfigurationServiceAccessor aufgelöst – der einzige nicht-konstante Wert im Objekt.868d6abb7 2025 -> 2026 47d42a5bb KI-Ersparnis: Massenaktualisierung von Zeiterfassungen, Bearbeitung in klassischer Seite hinzugefügt. 63081666f Quellcodedatei-Header: 2024 -> 2025. 1ffa5a1ef WIP: gradle... 4c04cfd65 GROSSE-ÄNDERUNG! Migration von Integer-IDs zu Long-IDs. b6092df09 Copyright 2023 -> 2024 ab45d51fa Copyright 2001-2022 -> 2001-2023. dcfc7c1a9 Alter Kalender in Untermenü verschoben, ScriptingTask*, JiraUtils 1ea8d4062 WIP: Aufträge und Bankkontodatensätze. d7b3e8751 AG Grid: Kopieren, Einfügen und Excel-Export verbessert.