EN · DE · RU · FR · ES

#548: TaskTree.kt

projectforge-business/src/main/java/org/projectforge/business/task/TaskTree.kt Tipo: Clase Kotlin · Paquete: org.projectforge.business.task · Fuente: projectforge-business/src/main/java/org/projectforge/business/task/TaskTree.kt 934 líneas · 657 código · 205 comentarios · 72 en blanco
Clase Kotlin que implementa TaskTree.

Anotaciones

@Service

Propiedades

PropiedadDeclaración
accessDaoAccessDao
auftragsCacheAuftragsCache
auftragDaoAuftragDao
kostCacheKostCache
persistenceServicePfPersistenceService
projektDaoProjektDao
taskDaoTaskDao
timesheetDaoTimesheetDao
timeOfLastModificationLong = 0
taskMapmutableMapOf()
rootTaskNode? = null
orderPositionReferencesMap>? = null
orderPositionReferencesDirtytrue
rootTaskNodeTaskNode
nodeTaskNode()
parentgetTaskNodeById(task.parentTaskId)
timesheetTimesheetDO()
bookabletimesheetDao.checkTaskBookable(
taskNodegetTaskNodeById(taskId) ?: return EMPTY_LIST
resultListgetPathToRoot(taskId)

Funciones

FunciónParámetrosRetorno
postConstructUnit
addTaskNodenode: TaskNode, parent: TaskNode?TaskNode
addTaskNodetask: TaskDOTaskNode
getPathtaskId: Long?, ancestorTaskId: Long?List
getPathToRoottaskId: Long?List
getAncestorTaskIstaskId: Long?MutableList
getAncestorAndDescendantTaskIstaskId: Long?, includeSelf: BooleanList
getDescendantTaskIdstaskId: Long?, includeSelf: BooleanList
getDescendantstaskId: Long?, includeSelf: BooleanList
addDescendantsresultList: MutableList, node: TaskNodeUnit
getTaskNodeByIdtaskId: Long?, checkRefresh: Boolean = trueTaskNode?
getTaskByIdid: Long?TaskDO?
getTaskIfNotInitializedtask: TaskDO?TaskDO?
getProjekttaskId: Long?ProjektDO?
internalSetProjecttaskId: Long, projekt: ProjektDO?Unit

Análisis de arquitectura

Reside en projectforge-business, el módulo central que contiene lógica de dominio, servicios y persistencia. Normalmente anotado con @Service o @Component, gestionado por el contenedor Spring IoC con inyección de dependencias.

Historial Git

CommitQué cambió
01d4805fdfRefactor: Mejora de concurrencia y comprobaciones defensivas para la jerarquía de tareas
868d6abb752025 -> 2026
6a32032d65Hibernate.isInitialized(obj) -> HibernateUtils.isFullyInitialized(obj). Algunos objetos perezosos de, p.ej., columnas ManyToOne no están completamente cargados pero Hibernate.isInitialized() devuelve true.
63081666f6Encabezados de archivos fuente: 2024 -> 2025.
5f9bbfbd37Corrección de errores tipográficos en el directorio projectforge-business
9625305236TaskTree: dependencias circulares corregidas. JacksonConfiguration: errores de deserialización en java.util.Date corregidos (UTC).
50c3b7b46eTrabajo de migración en curso... (todas las pruebas de todos los paquetes: OK).
4942c854d9Trabajo de migración en curso...
ae2c04ee02Trabajo de migración en curso... (todas las pruebas de todos los paquetes: OK).
b810d1c781Trabajo de migración en curso... (todas las pruebas de todos los paquetes: OK).
567ca70cd5Migración en curso... spring.datasource.hikari.auto-commit=false
f31e8064eaTrabajo de migración en curso...
cb5cd5d3d9Trabajo de migración en curso...
2e98398916Trabajo de migración en curso...
ba2479571aTrabajo de migración en curso...
b3293f0cc0PersistenceService/Context: manejo de estadísticas mejorado.
87dd5b87c3AuftragsCache refactorizado, trabajo de migración... (todas las pruebas OK)
1b50060c3aBaseDao: renombrado: get -> find, save -> insert, getList -> select, load -> select
87aaf6a5a5Trabajo de migración en curso... BaseDao refactorizado (aún no terminado) métodos internos* renombrados.
9408b59d72Trabajo de migración en curso...
a6edf511e4Trabajo de migración en curso... PersistenceThreadLocalStats
3aeda5ef5aGran cambio: todos los save|update|...InTrans renombrados (InTrans eliminado). PfPesistenceContext como parámetro ya no es necesario (se usa ThreadLocal en su lugar). (todas las pruebas de todos los paquetes: OK).
1564553d80Trabajo de migración en curso...
c7b6e72ad6Trabajo de migración en curso... (todas las pruebas de todos los paquetes: OK).
e66d5f5f7cTrabajo de migración en curso... TaskTree -> Kotlin y ahora se ejecuta en un administrador de entidades aislado