From 139941d5ee6d9a336738554d58e94c579db20406 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Fri, 31 Jul 2020 15:50:58 +0200
Subject: [PATCH] OO-4830: on the fly loading of missing graders

---
 .../olat/modules/grading/manager/GradingServiceImpl.java | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/olat/modules/grading/manager/GradingServiceImpl.java b/src/main/java/org/olat/modules/grading/manager/GradingServiceImpl.java
index 9d9d0f22353..818da3c2b0a 100644
--- a/src/main/java/org/olat/modules/grading/manager/GradingServiceImpl.java
+++ b/src/main/java/org/olat/modules/grading/manager/GradingServiceImpl.java
@@ -36,6 +36,7 @@ import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import org.apache.logging.log4j.Logger;
+import org.olat.basesecurity.BaseSecurity;
 import org.olat.basesecurity.IdentityRef;
 import org.olat.commons.calendar.CalendarUtils;
 import org.olat.core.commons.persistence.DB;
@@ -119,6 +120,8 @@ public class GradingServiceImpl implements GradingService, UserDataDeletable, Re
 	@Autowired
 	private MailManager mailManager;
 	@Autowired
+	private BaseSecurity securityManager;
+	@Autowired
 	private GradingModule gradingModule;
 	@Autowired
 	private TaxonomyModule taxonomyModule;
@@ -306,7 +309,11 @@ public class GradingServiceImpl implements GradingService, UserDataDeletable, Re
 		}
 		
 		for(IdentityTimeRecordStatistics record:records) {
-			GraderWithStatistics statistics = identityToStatistics.get(record.getKey());
+			Long graderIdentityKey = record.getKey();
+			GraderWithStatistics statistics = identityToStatistics.computeIfAbsent(graderIdentityKey, key -> {
+				Identity grader = securityManager.loadIdentityByKey(graderIdentityKey);
+				return new GraderWithStatistics(grader, GraderStatistics.empty(graderIdentityKey));
+			});
 			statistics.addRecordedTimeInSeconds(record.getTime());
 			statistics.addRecordedMetadataTimeInSeconds(record.getMetadataTime());
 		}
-- 
GitLab