Skip to content
Snippets Groups Projects
Commit 91915182 authored by srosse's avatar srosse
Browse files

OO-1001: dedup the list of groups in the user import worklow

parent bb18535c
No related branches found
No related tags found
No related merge requests found
...@@ -21,8 +21,10 @@ package org.olat.admin.user.groups; ...@@ -21,8 +21,10 @@ package org.olat.admin.user.groups;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set;
import org.olat.core.CoreSpringFactory; import org.olat.core.CoreSpringFactory;
import org.olat.core.commons.persistence.PersistenceHelper; import org.olat.core.commons.persistence.PersistenceHelper;
...@@ -196,13 +198,14 @@ public class GroupSearchController extends StepFormBasicController { ...@@ -196,13 +198,14 @@ public class GroupSearchController extends StepFormBasicController {
if (StringHelper.containsNonWhitespace(searchValue)) { if (StringHelper.containsNonWhitespace(searchValue)) {
SearchBusinessGroupParams param1s = new SearchBusinessGroupParams(); SearchBusinessGroupParams param1s = new SearchBusinessGroupParams();
param1s.setNameOrDesc(searchValue); param1s.setNameOrDesc(searchValue);
Set<BusinessGroup> dedupGroups = new HashSet<>();
List<BusinessGroup> group1s = businessGroupService.findBusinessGroups(param1s, null, 0, -1); List<BusinessGroup> group1s = businessGroupService.findBusinessGroups(param1s, null, 0, -1);
filterGroups(group1s); filterGroups(group1s, dedupGroups);
SearchBusinessGroupParams param2s = new SearchBusinessGroupParams(); SearchBusinessGroupParams param2s = new SearchBusinessGroupParams();
param2s.setCourseTitle(searchValue); param2s.setCourseTitle(searchValue);
List<BusinessGroup> group2s = businessGroupService.findBusinessGroups(param2s, null, 0, -1); List<BusinessGroup> group2s = businessGroupService.findBusinessGroups(param2s, null, 0, -1);
filterGroups(group2s); filterGroups(group2s, dedupGroups);
List<BusinessGroup> groups = new ArrayList<BusinessGroup>(group1s.size() + group2s.size()); List<BusinessGroup> groups = new ArrayList<BusinessGroup>(group1s.size() + group2s.size());
groups.addAll(group1s); groups.addAll(group1s);
...@@ -233,10 +236,15 @@ public class GroupSearchController extends StepFormBasicController { ...@@ -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(); ) { 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(); groupIt.remove();
} else if(dedupGroups.contains(group)) {
groupIt.remove();
} else {
dedupGroups.add(group);
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment