EN · DE · RU · FR · ES

#820: PfCaches.kt

projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt Clase Kotlin, projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt 428 líneas · 271 código · 98 comentarios · 59 en blanco
Propósito: Archivo fuente: org/projectforge/business/PfCaches.kt. PfCaches.kt es parte de la aplicación de gestión de proyectos de código abierto ProjectForge.

Fuente (primeras 100 líneas)

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2026 Micromata GmbH, Germany (www.micromata.com)
//
// ProjectForge tiene doble licencia.
//
// Esta edición comunitaria es software libre; puedes redistribuirla y/o
// modificarla bajo los términos de la Licencia Pública General GNU publicada
// por la Free Software Foundation; versión 3 de la Licencia.
//
// Esta edición comunitaria se distribuye con la esperanza de que sea útil,
// pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
// COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
// Licencia Pública General GNU para más detalles.
//
// Deberías haber recibido una copia de la Licencia Pública General GNU junto
// con este programa; si no, visita http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.business

import jakarta.annotation.PostConstruct
import org.projectforge.business.address.AddressbookCache
import org.projectforge.business.address.AddressbookDO
import org.projectforge.business.fibu.*
import org.projectforge.business.fibu.kost.*
import org.projectforge.business.orga.VisitorbookDO
import org.projectforge.business.task.TaskDO
import org.projectforge.business.task.TaskTree
import org.projectforge.business.teamcal.admin.TeamCalCache
import org.projectforge.business.teamcal.admin.model.TeamCalDO
import org.projectforge.business.timesheet.TimesheetDO
import org.projectforge.business.user.UserGroupCache
import org.projectforge.business.vacation.model.VacationDO
import org.projectforge.framework.persistence.api.BaseDO
import org.projectforge.framework.persistence.user.entities.GroupDO
import org.projectforge.framework.persistence.user.entities.PFUserDO
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service

/**
 * Caché auxiliar para evitar la carga perezosa de entidades. Para acceso conveniente a la mayoría de las cachés.
 * Ideal para su uso por scripts.
 */
@Service
class PfCaches {
    @Autowired
    private lateinit var kontoCache: KontoCache

    @Autowired
    private lateinit var addressbookCache: AddressbookCache

    @Autowired
    private lateinit var employeeCache: EmployeeCache

    @Autowired
    private lateinit var kostCache: KostCache

    @Autowired
    private lateinit var kundeCache: KundeCache

    @Autowired
    private lateinit var projektCache: ProjektCache

    @Autowired
    private lateinit var rechnungCache: RechnungCache

    @Autowired
    private lateinit var taskTree: TaskTree

    @Autowired
    private lateinit var teamCalCache: TeamCalCache

    @Autowired
    private lateinit var userGroupCache: UserGroupCache

    @PostConstruct
    private fun init() {
        instance = this
    }

    /**
     * Rellena el kunde, projekt y usuarios de la orden dada.
     * @param order La orden a rellenar.
     * @return La orden rellenada para encadenamiento.
     */
    fun initialize(order: AuftragDO): AuftragDO {
        order.kunde = getKundeIfNotInitialized(order.kunde)
        order.projekt = getProjektIfNotInitialized(order.projekt)
        order.contactPerson = getUserIfNotInitialized(order.contactPerson)
        order.headOfBusinessManager = getUserIfNotInitialized(order.headOfBusinessManager)
        order.projectManager = getUserIfNotInitialized(order.projectManager)
        order.salesManager = getUserIfNotInitialized(order.salesManager)
        // order.paymentSchedules
        // order.positionen
        return order

Historial Git

868d6abb7 2025 -> 2026
63081666f Encabezados de archivos fuente: 2024 -> 2025.
27a5e6cad Visitorbook: corrección de errores en contactPersons. También afecta: vacation, AbstractPagesrest, PagesResolver
22ccc4877 WIP: Scripting
caea043eb Trabajo de migración en curso... (todas las pruebas de todos los paquetes: OK).

868d6abb7

2025 -> 2026
868d6abb75cd191a892911ac8e45058932cf9074
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt b/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
index 159dec1fb..bcc543053 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2025 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2026 Micromata GmbH, Germany (www.micromata.com)
 //
 // ProjectForge tiene doble licencia.
 //

63081666f

Encabezados de archivos fuente: 2024 -> 2025.
63081666f620fb87315f01b817e560e0b2f6a33a
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt b/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
index 3fcd09f45..159dec1fb 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2024 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2025 Micromata GmbH, Germany (www.micromata.com)
 //
 // ProjectForge tiene doble licencia.
 //

27a5e6cad

Visitorbook: corrección de errores en contactPersons. También afecta: vacation, AbstractPagesrest, PagesResolver
27a5e6cad8d0bc0ee0578fb9fb812e3caff1ab0f
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt b/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
index d8f6c502b..3fcd09f45 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
@@ -28,6 +28,7 @@ import org.projectforge.business.address.AddressbookCache
 import org.projectforge.business.address.AddressbookDO
 import org.projectforge.business.fibu.*
 import org.projectforge.business.fibu.kost.*
+import org.projectforge.business.orga.VisitorbookDO
 import org.projectforge.business.task.TaskDO
 import org.projectforge.business.task.TaskTree
 import org.projectforge.business.teamcal.admin.TeamCalCache
@@ -165,6 +166,17 @@ class PfCaches {
         return vacation
     }
 
+    /**
+     * Rellena las personas de contacto (empleados).
+     * @param visitorbook El libro de visitas a rellenar.
+     * @return El libro de visitas rellenado para encadenamiento.
+     */
+    fun initialize(visitorbook: VisitorbookDO): VisitorbookDO {
+        visitorbook.contactPersons =
+            visitorbook.contactPersons?.mapNotNull { getEmployeeIfNotInitialized(it) }?.toMutableSet()
+        return visitorbook
+    }
+
     fun initialize(satz: BuchungssatzDO): BuchungssatzDO {
         satz.konto = getKontoIfNotInitialized(satz.konto)
         satz.gegenKonto = getKontoIfNotInitialized(satz.gegenKonto)

22ccc4877

WIP: Scripting
22ccc487728cb7ca4fa66ae3fcaae5a98d6c59bd
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt b/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
index fadf41fe1..d8f6c502b 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
@@ -35,6 +35,7 @@ import org.projectforge.business.teamcal.admin.model.TeamCalDO
 import org.projectforge.business.timesheet.TimesheetDO
 import org.projectforge.business.user.UserGroupCache
 import org.projectforge.business.vacation.model.VacationDO
+import org.projectforge.framework.persistence.api.BaseDO
 import org.projectforge.framework.persistence.user.entities.GroupDO
 import org.projectforge.framework.persistence.user.entities.PFUserDO
 import org.springframework.beans.factory.annotation.Autowired
@@ -64,6 +65,9 @@ class PfCaches {
     @Autowired
     private lateinit var projektCache: ProjektCache
 
+    @Autowired
+    private lateinit var rechnungCache: RechnungCache
+
     @Autowired
     private lateinit var taskTree: TaskTree
 
@@ -78,6 +82,23 @@ class PfCaches {
         instance = this
     }
 
+    /**
+     * Rellena el kunde, projekt y usuarios de la orden dada.
+     * @param order La orden a rellenar.
+     * @return La orden rellenada para encadenamiento.
+     */
+    fun initialize(order: AuftragDO): AuftragDO {
+        order.kunde = getKundeIfNotInitialized(order.kunde)
+        order.projekt = getProjektIfNotInitialized(order.projekt)
+        order.contactPerson = getUserIfNotInitialized(order.contactPerson)
+        order.headOfBusinessManager = getUserIfNotInitialized(order.headOfBusinessManager)
+        order.projectManager = getUserIfNotInitialized(order.projectManager)
+        order.salesManager = getUserIfNotInitialized(order.salesManager)
+        // order.paymentSchedules
+        // order.positionen
+        return order
+    }
+
     /**
      * Rellena el usuario y kost1 del empleado dado.
      * @param employee El empleado a rellenar.
@@ -144,6 +165,43 @@ class PfCaches {
         return vacation
     }
 
+    fun initialize(satz: BuchungssatzDO): BuchungssatzDO {
+        satz.konto = getKontoIfNotInitialized(satz.konto)
+        satz.gegenKonto = getKontoIfNotInitialized(satz.gegenKonto)
+        satz.kost1 = getKost1IfNotInitialized(satz.kost1)
+        satz.kost2 = getKost2IfNotInitialized(satz.kost2)
+        return satz
+    }
+
+    fun initialize(invoice: RechnungDO): RechnungDO {

caea043eb

Trabajo de migración en curso... (todas las pruebas de todos los paquetes: OK).
caea043eb1c6d1752322fcbe2de762f9b5e6946d
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt b/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
index 536145855..fadf41fe1 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt
@@ -83,7 +83,7 @@ class PfCaches {
      * @param employee El empleado a rellenar.
      * @return El empleado rellenado para encadenamiento.
      */
-    fun populate(employee: EmployeeDO): EmployeeDO {
+    fun initialize(employee: EmployeeDO): EmployeeDO {
         employee.user = getUserIfNotInitialized(employee.user)
         employee.kost1 = getKost1IfNotInitialized(employee.kost1)
         return employee
@@ -94,7 +94,7 @@ class PfCaches {
      * @param kost2 El kost2 a rellenar.
      * @return El kost2 rellenado para encadenamiento.
      */
-    fun populate(kost2: Kost2DO): Kost2DO {
+    fun initialize(kost2: Kost2DO): Kost2DO {
         val projekt = getProjektByKost2(kost2.id)
         val kunde = getKunde(projekt?.kunde?.nummer)
         projekt?.let { it.kunde = kunde }
@@ -107,7 +107,7 @@ class PfCaches {
      * @param project El proyecto a rellenar.
      * @return El proyecto rellenado para encadenamiento.
      */
-    fun populate(project: ProjektDO): ProjektDO {
+    fun initialize(project: ProjektDO): ProjektDO {
         project.headOfBusinessManager = getUserIfNotInitialized(project.headOfBusinessManager)
         project.konto = getKontoIfNotInitialized(project.konto)
         project.kunde = getKundeIfNotInitialized(project.kunde)
@@ -123,10 +123,10 @@ class PfCaches {
      * @param timesheet La hoja de tiempos a rellenar.
      * @return La hoja de tiempos rellenada para encadenamiento.
      */
-    fun populate(timesheet: TimesheetDO): TimesheetDO {
+    fun initialize(timesheet: TimesheetDO): TimesheetDO {
         timesheet.user = getUser(timesheet.userId)
         timesheet.task = getTask(timesheet.taskId)
-        timesheet.kost2 = getKost2(timesheet.kost2Id)?.also { populate(it) }
+        timesheet.kost2 = getKost2(timesheet.kost2Id)?.also { initialize(it) }
         return timesheet
     }
 
@@ -135,7 +135,7 @@ class PfCaches {
      * @param vacation Las vacaciones a rellenar.
      * @return El kost2 rellenado para encadenamiento.
      */
-    fun populate(vacation: VacationDO): VacationDO {
+    fun initialize(vacation: VacationDO): VacationDO {
         vacation.employee = getEmployeeIfNotInitialized(vacation.employee)
         vacation.manager = getEmployeeIfNotInitialized(vacation.manager)
         vacation.replacement = getEmployeeIfNotInitialized(vacation.replacement)
@@ -149,7 +149,7 @@ class PfCaches {
      * @param kost2Id El kost2Id a rellenar.
      */
     fun getAndPopulateKost2(kost2Id: Long?): Kost2DO? {
-        return getKost2(kost2Id)?.also { populate(it) }
+        return getKost2(kost2Id)?.also { initialize(it) }