#1086: HibernateSearchUsersGroupsBridge.kt
projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt Clase Kotlin, projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt 118 líneas · 84 código · 22 comentarios · 12 en blanco
Propósito: Archivo fuente: teamcal/admin/model/HibernateSearchUsersGroupsBridge.kt. HibernateSearchUsersGroupsBridge.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
// 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.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("Grupo con id '$id' no encontrado en UserGroupCache. La cadena groupIds era: $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) {
Historial Git
868d6abb7 2025 -> 2026
63081666f Encabezados de archivos fuente: 2024 -> 2025.
8c0b82f21 Importaciones no utilizadas eliminadas.
4c04cfd65 CAMBIO IMPORTANTE: Migración de ids enteros a ids Long (incluyendo claves foráneas, etc.)
c04fb0d51 Migración en curso...
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 @@
// 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/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 @@
// 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.
//
8c0b82f21
Importaciones no utilizadas eliminadas.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
CAMBIO IMPORTANTE: Migración de ids enteros a ids Long (incluyendo claves foráneas, 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
Migración en curso...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 @@
// with this program; if not, see 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.*
-/**
- * Puente de usuarios y grupos para la búsqueda de 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()
- /**
- * Obtiene todos los nombres de grupos y usuarios y crea un índice que contiene todos los nombres de usuarios y grupos separados por '|'. <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
+ ) {