#1086: HibernateSearchUsersGroupsBridge.kt
projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt Classe Kotlin, projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt 118 lignes · 84 code · 22 commentaires · 12 vides
Objectif : Fichier source : teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt. HibernateSearchUsersGroupsBridge.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 la redistribuer et/ou
// la 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
// QUALITÉ MARCHANDE 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.teamcal.admin.model
import mu.KotlinLogging
import org.hibernate.search.engine.backend.document.DocumentElement
import org.hibernate.search.mapper.pojo.bridge.TypeBridge
import org.hibernate.search.mapper.pojo.bridge.runtime.TypeBridgeWriteContext
import org.projectforge.business.common.BaseUserGroupRightsDO
import org.projectforge.business.user.GroupsComparator
import org.projectforge.business.user.UserGroupCache
import org.projectforge.business.user.UsersComparator
import org.projectforge.common.DatabaseDialect
import org.projectforge.common.StringHelper
import org.projectforge.database.DatabaseSupport
import org.projectforge.framework.persistence.user.entities.GroupDO
import org.projectforge.framework.persistence.user.entities.PFUserDO
import java.util.*
private val log = KotlinLogging.logger {}
class HibernateSearchUsersGroupsBridge : TypeBridge<BaseUserGroupRightsDO> {
private val groupsComparator = GroupsComparator()
private val usersComparator = UsersComparator()
override fun write(
target: DocumentElement,
bridgedElement: BaseUserGroupRightsDO,
context: TypeBridgeWriteContext
) {
val userGroupCache = UserGroupCache.getInstance()
val sb = StringBuilder()
if (DatabaseSupport.getInstance().getDialect() != DatabaseDialect.HSQL) {
appendGroups(getSortedGroups(userGroupCache, bridgedElement.fullAccessGroupIds), sb)
appendGroups(getSortedGroups(userGroupCache, bridgedElement.readonlyAccessGroupIds), sb)
appendGroups(getSortedGroups(userGroupCache, bridgedElement.minimalAccessGroupIds), sb)
appendUsers(getSortedUsers(userGroupCache, bridgedElement.fullAccessUserIds), sb)
appendUsers(getSortedUsers(userGroupCache, bridgedElement.readonlyAccessUserIds), sb)
appendUsers(getSortedUsers(userGroupCache, bridgedElement.minimalAccessUserIds), sb)
}
if (log.isDebugEnabled) {
log.debug(sb.toString())
}
target.addValue("usersgroups", sb.toString())
}
private fun getSortedGroups(
userGroupCache: UserGroupCache,
groupIds: String?
): Collection<GroupDO>? {
if (groupIds.isNullOrEmpty()) {
return null
}
val sortedGroups: MutableCollection<GroupDO> = TreeSet(groupsComparator)
val ids = StringHelper.splitToLongs(groupIds, ",", false)
for (id in ids) {
val group = userGroupCache.getGroup(id)
if (group != null) {
sortedGroups.add(group)
} else {
log.warn("Groupe avec l'id '$id' introuvable dans UserGroupCache. La chaîne groupIds était : $groupIds")
}
}
return sortedGroups
}
private fun getSortedUsers(
userGroupCache: UserGroupCache,
userIds: String?
): Collection<PFUserDO>? {
if (userIds.isNullOrEmpty()) {
return null
}
val sortedUsers: MutableCollection<PFUserDO> = TreeSet(usersComparator)
val ids = StringHelper.splitToLongs(userIds, ",", false)
for (id in ids) {
Historique Git
868d6abb7 2025 -> 2026
63081666f En-têtes des fichiers source : 2024 -> 2025.
8c0b82f21 Importations inutilisées supprimées.
4c04cfd65 CHANGEMENT-MAJEUR ! Migration des identifiants entiers vers des identifiants Long (y compris les clés étrangères, etc.)
c04fb0d51 Migration en cours...
868d6abb7
2025 -> 2026868d6abb75cd191a892911ac8e45058932cf9074
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt
index 7678f8448..375d6969e 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.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/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt
index 47c6e2d70..7678f8448 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.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.
//
8c0b82f21
Importations inutilisées supprimées.8c0b82f212543f1da4a56ab523e8e599850e8338
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt
index c48290704..47c6e2d70 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt
@@ -25,9 +25,7 @@ package org.projectforge.business.teamcal.admin.model
import mu.KotlinLogging
import org.hibernate.search.engine.backend.document.DocumentElement
-import org.hibernate.search.engine.backend.document.IndexFieldReference
import org.hibernate.search.mapper.pojo.bridge.TypeBridge
-import org.hibernate.search.mapper.pojo.bridge.binding.TypeBindingContext
import org.hibernate.search.mapper.pojo.bridge.runtime.TypeBridgeWriteContext
import org.projectforge.business.common.BaseUserGroupRightsDO
import org.projectforge.business.user.GroupsComparator
@@ -38,7 +36,6 @@ import org.projectforge.common.StringHelper
import org.projectforge.database.DatabaseSupport
import org.projectforge.framework.persistence.user.entities.GroupDO
import org.projectforge.framework.persistence.user.entities.PFUserDO
-import org.slf4j.LoggerFactory
import java.util.*
private val log = KotlinLogging.logger {} 4c04cfd65
CHANGEMENT-MAJEUR ! Migration des identifiants entiers vers des identifiants Long (y compris les clés étrangères, etc.)4c04cfd652210afe373d55f53a5300c85997b109
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt
index a1884451f..c48290704 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt
@@ -79,7 +79,7 @@ class HibernateSearchUsersGroupsBridge : TypeBridge<BaseUserGroupRightsDO> {
return null
}
val sortedGroups: MutableCollection<GroupDO> = TreeSet(groupsComparator)
- val ids = StringHelper.splitToInts(groupIds, ",", false)
+ val ids = StringHelper.splitToLongs(groupIds, ",", false)
for (id in ids) {
val group = userGroupCache.getGroup(id)
if (group != null) {
@@ -99,7 +99,7 @@ class HibernateSearchUsersGroupsBridge : TypeBridge<BaseUserGroupRightsDO> {
return null
}
val sortedUsers: MutableCollection<PFUserDO> = TreeSet(usersComparator)
- val ids = StringHelper.splitToInts(userIds, ",", false)
+ val ids = StringHelper.splitToLongs(userIds, ",", false)
for (id in ids) {
val user = userGroupCache.getUser(id)
if (user != null) { c04fb0d51
Migration en cours...c04fb0d51cdba72e1bf43720ea1982dc166bb145
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt
index 89a315f55..a1884451f 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt
@@ -20,63 +20,68 @@
// avec ce programme ; sinon, consultez http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////
+
package org.projectforge.business.teamcal.admin.model
-import org.apache.commons.lang3.StringUtils
-import org.hibernate.search.bridge.TwoWayStringBridge
+import mu.KotlinLogging
+import org.hibernate.search.engine.backend.document.DocumentElement
+import org.hibernate.search.engine.backend.document.IndexFieldReference
+import org.hibernate.search.mapper.pojo.bridge.TypeBridge
+import org.hibernate.search.mapper.pojo.bridge.binding.TypeBindingContext
+import org.hibernate.search.mapper.pojo.bridge.runtime.TypeBridgeWriteContext
+import org.projectforge.business.common.BaseUserGroupRightsDO
+import org.projectforge.business.user.GroupsComparator
+import org.projectforge.business.user.UserGroupCache
+import org.projectforge.business.user.UsersComparator
+import org.projectforge.common.DatabaseDialect
import org.projectforge.common.StringHelper
import org.projectforge.database.DatabaseSupport
-import org.slf4j.Logger
+import org.projectforge.framework.persistence.user.entities.GroupDO
+import org.projectforge.framework.persistence.user.entities.PFUserDO
import org.slf4j.LoggerFactory
import java.util.*
-/**
- * Pont utilisateurs et groupes pour la recherche Hibernate.
- *
- * @author Kai Reinhard (k.reinhard@micromata.de)
- */
-class HibernateSearchUsersGroupsBridge : TwoWayStringBridge {
- private val groupsComparator: GroupsComparator = GroupsComparator()
+private val log = KotlinLogging.logger {}
+
+class HibernateSearchUsersGroupsBridge : TypeBridge<BaseUserGroupRightsDO> {
- private val usersComparator: UsersComparator = UsersComparator()
+ private val groupsComparator = GroupsComparator()
+ private val usersComparator = UsersComparator()
- /**
- * Obtient tous les noms des groupes et utilisateurs et crée un index contenant tous les noms d'utilisateurs et de groupes séparés par '|'. <br></br>
- */
- override fun objectToString(`object`: Any): String {
- if (`object` is String) return `object`
- val userGroupCache: UserGroupCache = UserGroupCache.getInstance()
- val doObject: BaseUserGroupRightsDO = `object` as BaseUserGroupRightsDO
+ override fun write(
+ target: DocumentElement,
+ bridgedElement: BaseUserGroupRightsDO,
+ context: TypeBridgeWriteContext
+ ) {