BaseUserGroupRightService.ktBaseUserGroupRightsDO objects. Resolves raw ID strings to sorted GroupDO and PFUserDO collections via GroupService and UserService. Maintains a singleton instance via @PostConstruct for static access.| Dependency | Type | Purpose |
|---|---|---|
GroupService | @Autowired | Resolves group IDs to GroupDO entities |
UserService | @Autowired | Resolves user IDs to PFUserDO entities |
Each access tier (full, readonly, minimal) x entity type (groups, users) has a corresponding getter:
| Method | Returns |
|---|---|
getSortedFullAccessGroups(rights) | Collection<GroupDO> |
getSortedFullAccessUsers(rights) | Collection<PFUserDO> |
getSortedReadonlyAccessGroups(rights) | Collection<GroupDO> |
getSortedReadonlyAccessUsers(rights) | Collection<PFUserDO> |
getSortedMinimalAccessGroups(rights) | Collection<GroupDO> |
getSortedMinimalAccessUsers(rights) | Collection<PFUserDO> |
Each access tier x entity type has two overloads—one accepting a Collection<IdObject<Long>?>? and one accepting a raw String? of comma-separated IDs:
| Method | Input |
|---|---|
setFullAccessGroups | Collection<IdObject<Long>?>? or String? |
setFullAccessUsers | Collection<IdObject<Long>?>? or String? |
setReadonlyAccessGroups | Collection<IdObject<Long>?>? or String? |
setReadonlyAccessUsers | Collection<IdObject<Long>?>? or String? |
setMinimalAccessGroups | Collection<IdObject<Long>?>? or String? |
setMinimalAccessUsers | Collection<IdObject<Long>?>? or String? |
asSortedIdStrings(collection)@JvmStatic. Converts a collection of IdObject<Long> to a sorted, comma-separated string of IDs. Filters nulls, sorts numerically, joins with ",". Returns null if the collection is null or empty.
// Example: [Group(3), Group(1), Group(2)] → "1,2,3"
asSortedIdStrings(idString)@JvmStatic. Parses a CSV string, extracts valid Long values, sorts them, and returns the normalized CSV string. Filters blank/invalid entries. Returns null for null input.
instance@JvmStatic lateinit var with private setter. Initialized in @PostConstruct. Provides global static access to the Spring-managed singleton for utility contexts where dependency injection is unavailable.
The getter/setter pattern ensures that the raw CSV strings are always kept sorted and normalized. The two overloads per setter (collection vs. string) support both UI-driven editing (where a multi-select produces a collection of entities) and programmatic/API-driven editing (where raw ID strings are provided).
The singleton instance pattern is a pragmatic bridge between Spring DI and older static-utility code. Newer code should prefer constructor injection of BaseUserGroupRightService.
868d6abb7 2025 -> 2026 63081666f Source file headers: 2024-> 2025. a33f8f203 Migration stuff in progress... (all tests of all packages: OK).