diff --git a/src/main/java/org/olat/admin/user/groups/GroupSearchController.java b/src/main/java/org/olat/admin/user/groups/GroupSearchController.java index 98c5d51f8c613e704a2f8b7d99295d0ba4615c6f..6e65c3e56c7f3e202e19395b1baa2fa1cab9d3cd 100644 --- a/src/main/java/org/olat/admin/user/groups/GroupSearchController.java +++ b/src/main/java/org/olat/admin/user/groups/GroupSearchController.java @@ -21,8 +21,10 @@ package org.olat.admin.user.groups; import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Set; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.persistence.PersistenceHelper; @@ -196,13 +198,14 @@ public class GroupSearchController extends StepFormBasicController { if (StringHelper.containsNonWhitespace(searchValue)) { SearchBusinessGroupParams param1s = new SearchBusinessGroupParams(); param1s.setNameOrDesc(searchValue); + Set<BusinessGroup> dedupGroups = new HashSet<>(); List<BusinessGroup> group1s = businessGroupService.findBusinessGroups(param1s, null, 0, -1); - filterGroups(group1s); + filterGroups(group1s, dedupGroups); SearchBusinessGroupParams param2s = new SearchBusinessGroupParams(); param2s.setCourseTitle(searchValue); List<BusinessGroup> group2s = businessGroupService.findBusinessGroups(param2s, null, 0, -1); - filterGroups(group2s); + filterGroups(group2s, dedupGroups); List<BusinessGroup> groups = new ArrayList<BusinessGroup>(group1s.size() + group2s.size()); groups.addAll(group1s); @@ -233,10 +236,15 @@ public class GroupSearchController extends StepFormBasicController { } } - private void filterGroups(List<BusinessGroup> groups) { + private void filterGroups(List<BusinessGroup> groups, Set<BusinessGroup> dedupGroups) { for(Iterator<BusinessGroup> groupIt=groups.iterator(); groupIt.hasNext(); ) { - if(BusinessGroupManagedFlag.isManaged(groupIt.next(), BusinessGroupManagedFlag.membersmanagement)) { + BusinessGroup group = groupIt.next(); + if(BusinessGroupManagedFlag.isManaged(group, BusinessGroupManagedFlag.membersmanagement)) { groupIt.remove(); + } else if(dedupGroups.contains(group)) { + groupIt.remove(); + } else { + dedupGroups.add(group); } } }