Constants.ktLa única fuente de verdad para todas las constantes del proyecto. Un object de Kotlin (singleton thread-safe) de 158 líneas, referenciado en todas partes — por entidades JPA como @Column(length = Constants.LENGTH_TITLE), por validadores, formateadores y componentes de UI. Javadoc: "Define diferentes constantes (longitud típica de columnas de cadena) utilizables por plugins y el paquete central."
| Constante | Valor | Uso |
|---|---|---|
LENGTH_TEXT | 4000 | Valor por defecto para campos de texto/descripción |
LENGTH_COMMENT | 4000 | Campos de comentario |
COMMENT_LENGTH | 4000 | Alias heredado para campos de comentario |
LENGTH_SUBJECT | 1000 | Campos de línea de asunto |
LENGTH_TITLE | 1000 | Campos de título en todas las entidades |
Estandarizar las longitudes de columna en un solo lugar garantiza la consistencia del esquema de base de datos en todas las clases de entidad. Se utiliza en anotaciones JPA @Column(length = ...) y en la validación del front-end.
| Constante | Valor | Propósito |
|---|---|---|
TEN_BILLION | 10000000000 | Límite superior para campos monetarios (BigDecimal precisión=12, escala=2) |
TEN_BILLION_NEGATIVE | -10000000000 | Límite inferior para campos monetarios |
HUNDRED_BD | 100 | Utilizado en cálculos de porcentaje |
| Constante | Valor | Nota |
|---|---|---|
KB | 1024 | Variantes Integer y BigDecimal disponibles (ej. KB_BD). Se utilizan para formateo de tamaño de archivos y validación de límites de carga. |
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 |
Cada constante de tiempo tiene una variante _BD correspondiente (BigDecimal). Se utiliza en cálculos de hojas de tiempo, temporizadores y aritmética de fecha/hora.
| Constante | Valor | Propósito |
|---|---|---|
REACT_APP_PATH | "react/" | Prefijo de ruta URL para el frontend SPA React |
WICKET_APPLICATION_PATH | "wa/" | Prefijo de ruta URL para páginas Wicket heredadas |
BUILD_DIR | "build" | Directorio de salida de compilación de Gradle (era "target" con Maven) |
Prefijadas con WEB_, estas constantes forman una jerarquía de enlaces: WEB_HOME_PAGE_LINK → WEB_DOCS_LINK → WEB_DOCS_USER_GUIDE_LINK, WEB_DOCS_ADMIN_GUIDE_LINK, etc. Se utilizan en toda la UI para enlaces de ayuda y referencias de documentación.
TIMESHEET_CALENDAR_ID = -1L | ID de calendario especial para eventos de hoja de tiempo |
MINYEAR = 1900, MAXYEAR = 2100 | Rango de años válido para selectores de fecha y validación |
EVENT_CLASS_NAME = "timesheet" | Identificador para eventos de calendario de hoja de tiempo |
BREAK_EVENT_CLASS_NAME = "ts-break" | Identificador para entradas de descanso en hojas de tiempo |
object de Kotlin — ¿Por Qué No una Clase?Un object de Kotlin es un singleton thread-safe creado en el primer acceso mediante las garantías de carga de clases de la JVM. Las constantes declaradas con const val se compilan a campos estáticos de la JVM y se inlinean en el punto de llamada — sin sobrecarga de resolución en tiempo de ejecución.
Para interoperabilidad con Java:
@JvmField en campos BigDecimal los expone como Constants.TEN_BILLION sin getters sintéticos.@JvmStatic en isTimesheetCalendarId() lo convierte en un método estático real invocable desde Java.CURRENCY_SYMBOL se resuelve de forma perezosa desde ConfigurationServiceAccessor en el primer acceso — el único valor no constante en el objeto.868d6abb7 2025 -> 2026 47d42a5bb AI savings: actualización masiva de hojas de tiempo, edición en página clásica añadida. 63081666f Encabezados de archivos fuente: 2024 -> 2025. 1ffa5a1ef WIP: gradle... 4c04cfd65 CAMBIO-MAYOR! Migración de ids enteros a ids Long. b6092df09 Copyright 2023 -> 2024 ab45d51fa Copyright 2001-2022 -> 2001-2023. dcfc7c1a9 Calendario antiguo movido a submenú, ScriptingTask*, JiraUtils 1ea8d4062 WIP: Trabajos y registros de cuentas bancarias. d7b3e8751 AG grid: Copiar y pegar y exportación a Excel mejorados.