EN · DE · RU · FR · ES

#804: IntAggregatedValues.java

projectforge-business/src/main/java/org/projectforge/statistics/IntAggregatedValues.java Ayudante de estadísticas — agregación concreta de Integer para el marco de estadísticas del Método Plantilla. Fuente: projectforge-business/src/main/java/org/projectforge/statistics/IntAggregatedValues.java 88 líneas · 36 código · 44 comentarios · 8 en blanco
Proporciona las tres operaciones aritméticas necesarias para AbstractAggregatedValues (#802) para el tipo Integer: getZero() → 0, isZero() → verificación nulo-o-cero, sum() → suma de enteros. Implementa Serializable para almacenamiento en caché. Utilizado por constructores de estadísticas que agregan contadores enteros (conteos de horas, conteos de empleados, etc.).

Patrón Método Plantilla

La separación de la lógica de agregación en AbstractAggregatedValues<T> con tres métodos abstractos (getZero, isZero, sum) es el patrón Método Plantilla. La clase base maneja la acumulación, el seguimiento de mínimo/máximo, el incremento de contadores — todo de manera independiente del tipo. Las subclases solo proporcionan las tres operaciones específicas del tipo. Esto evita duplicar la lógica de agregación de aproximadamente 60 líneas para cada tipo numérico (BigDecimal, Integer, Long).

Clases hermanas

ClaseTipoDoc
AbstractAggregatedValues<T>Base (plantilla)#802
IntAggregatedValuesInteger#804
BigDecimalAggregatedValuesBigDecimal#803

¿Por qué no genérico?

Los genéricos de Java no admiten operadores aritméticos (+) en parámetros de tipo — T + T no compila. Esto obliga a los tres métodos abstractos. Una alternativa sería usar Number y .intValue() en todas partes, pero eso perdería seguridad de tipos (mezclando BigDecimal e Integer en la misma agregación) y precisión (truncamiento de BigDecimal a int). El enfoque del Método Plantilla preserva la seguridad de tipos a costa de una subclase por tipo numérico.

Historial Git

868d6abb7 2025→2026 | 63081666f 2024→2025 | b6092df09 2023→2024 | 9ebb88522 Commit inicial
Sin cambios desde el commit inicial — las tres operaciones con enteros son trivialmente correctas y no necesitan mantenimiento.