From deceb3e32c148e5403a12529657c22568587bd58 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Thu, 23 Oct 2014 11:38:55 +0200
Subject: [PATCH] OO-1268: deduplicate all identities from all sources

---
 .../assessment/AssessmentMainController.java  | 31 ++++++++++++-------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/src/main/java/org/olat/course/assessment/AssessmentMainController.java b/src/main/java/org/olat/course/assessment/AssessmentMainController.java
index 3dec256812b..c749cc74653 100644
--- a/src/main/java/org/olat/course/assessment/AssessmentMainController.java
+++ b/src/main/java/org/olat/course/assessment/AssessmentMainController.java
@@ -674,16 +674,23 @@ public class AssessmentMainController extends MainLayoutBasicController implemen
 	 * @return List of identities
 	 */
 	private List<Identity> getAllAssessableIdentities() {
-
+		Set<Identity> duplicateKiller = new HashSet<>();
+		List<Identity> assessableIdentities = new ArrayList<>();
+		
 		List<Identity> participants = businessGroupService.getMembers(coachedGroups, GroupRoles.participant.name());
-		Set<Identity> duplicateKiller = new HashSet<>(participants);
+		for(Identity participant:participants) {
+			if(!duplicateKiller.contains(participant)) {
+				assessableIdentities.add(participant);
+				duplicateKiller.add(participant);
+			}
+		}
 		
 		if((repoTutor && coachedGroups.isEmpty()) || (callback.mayAssessAllUsers() || callback.mayViewAllUsersAssessments())) {
 			List<Identity> courseParticipants = repositoryService.getMembers(re, GroupRoles.participant.name());
-			for(Identity courseParticipant:courseParticipants) {
-				if(!duplicateKiller.contains(courseParticipant)) {
-					participants.add(courseParticipant);
-					duplicateKiller.add(courseParticipant);
+			for(Identity participant:courseParticipants) {
+				if(!duplicateKiller.contains(participant)) {
+					assessableIdentities.add(participant);
+					duplicateKiller.add(participant);
 				}
 			}
 		}
@@ -692,14 +699,16 @@ public class AssessmentMainController extends MainLayoutBasicController implemen
 			mayViewAllUsersAssessments = true;
 			ICourse course = CourseFactory.loadCourse(ores);
 			CoursePropertyManager pm = course.getCourseEnvironment().getCoursePropertyManager();
-			List<Identity> assessedRsers = pm.getAllIdentitiesWithCourseAssessmentData(participants);
-			for(Identity assessedRser:assessedRsers) {
-				if(!duplicateKiller.contains(assessedRser)) {
-					participants.add(assessedRser);
+			List<Identity> assessedUsers = pm.getAllIdentitiesWithCourseAssessmentData(participants);
+			for(Identity assessedUser:assessedUsers) {
+				if(!duplicateKiller.contains(assessedUser)) {
+					assessableIdentities.add(assessedUser);
+					duplicateKiller.add(assessedUser);
 				}
 			}
 		}
-		return participants;
+		
+		return assessableIdentities;
 	}
 	
 	private void fillAlternativeToAssessableIdentityList(AssessmentToolOptions options) {
-- 
GitLab