EN · DE · RU · FR · ES

#820 : PfCaches.kt

projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt Classe Kotlin, projectforge-business/src/main/kotlin/org/projectforge/business/PfCaches.kt 428 lignes · 271 code · 98 commentaires · 59 vides
Objectif : Fichier source : org/projectforge/business/PfCaches.kt. PfCaches.kt fait partie de l'application open-source de gestion de projet ProjectForge.

Source (100 premières lignes)

/////////////////////////////////////////////////////////////////////////////
//
// Projet ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2026 Micromata GmbH, Allemagne (www.micromata.com)
//
// ProjectForge est sous double licence.
//
// Cette édition communautaire est un logiciel libre ; vous pouvez le redistribuer et/ou
// le modifier selon les termes de la GNU General Public License telle que publiée
// par la Free Software Foundation ; version 3 de la Licence.
//
// Cette édition communautaire est distribuée dans l'espoir qu'elle sera utile,
// mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de
// COMMERCIALISATION ou D'ADÉQUATION À UN USAGE PARTICULIER. Voir la GNU General
// Public License pour plus de détails.
//
// Vous devriez avoir reçu une copie de la GNU General Public License avec
// ce programme ; sinon, consultez 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

/**
 * Cache auxiliaire pour éviter le chargement paresseux des entités. Pour un accès pratique à la plupart des caches.
 * Idéal pour une utilisation par des 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
    }

    /**
     * Remplit le kunde, le projet et les utilisateurs de la commande donnée.
     * @param order La commande à remplir.
     * @return La commande remplie pour le chaînage.
     */
    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

Historique Git

868d6abb7 2025 -> 2026
63081666f En-têtes des fichiers source : 2024 -> 2025.
27a5e6cad Visitorbook : correction de bug sur les contactPersons. Également concerné : vacation, AbstractPagesrest, PagesResolver
22ccc4877 WIP : Scripting
caea043eb Migration en cours... (tous les tests de tous les packages : 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 @@
 // Projet ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2025 Micromata GmbH, Allemagne (www.micromata.com)
+// Copyright (C) 2001-2026 Micromata GmbH, Allemagne (www.micromata.com)
 //
 // ProjectForge est sous double licence.
 //

63081666f

En-têtes des fichiers source : 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 @@
 // Projet ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2024 Micromata GmbH, Allemagne (www.micromata.com)
+// Copyright (C) 2001-2025 Micromata GmbH, Allemagne (www.micromata.com)
 //
 // ProjectForge est sous double licence.
 //

27a5e6cad

Visitorbook : correction de bug sur les contactPersons. Également concerné : 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
     }
 
+    /**
+     * Remplit les personnes de contact (employés).
+     * @param visitorbook Le visitorbook à remplir.
+     * @return Le visitorbook rempli pour le chaînage.
+     */
+    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
     }
 
+    /**
+     * Remplit le kunde, le projet et les utilisateurs de la commande donnée.
+     * @param order La commande à remplir.
+     * @return La commande remplie pour le chaînage.
+     */
+    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
+    }
+
     /**
      * Remplit l'utilisateur et le kost1 de l'employé donné.
      * @param employee L'employé à remplir.
@@ -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

Migration en cours... (tous les tests de tous les packages : 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 L'employé à remplir.
      * @return L'employé rempli pour le chaînage.
      */
-    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 Le kost2 à remplir.
      * @return Le kost2 rempli pour le chaînage.
      */
-    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 Le projet à remplir.
      * @return Le projet rempli pour le chaînage.
      */
-    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 feuille de temps à remplir.
      * @return La feuille de temps remplie pour le chaînage.
      */
-    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 Le congé à remplir.
      * @return Le kost2 rempli pour le chaînage.
      */
-    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 L'ID kost2 à remplir.
      */
     fun getAndPopulateKost2(kost2Id: Long?): Kost2DO? {
-        return getKost2(kost2Id)?.also { populate(it) }
+        return getKost2(kost2Id)?.also { initialize(it) }