From 9364977d4a09e870f47744ed3ecce4efb20762f0 Mon Sep 17 00:00:00 2001 From: anhefti Date: Tue, 11 Aug 2020 17:01:29 +0200 Subject: [PATCH] fixed no quiz data for exam --- .../servicelayer/dao/impl/ExamDAOImpl.java | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/ExamDAOImpl.java b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/ExamDAOImpl.java index 1cded3cb..1080109b 100644 --- a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/ExamDAOImpl.java +++ b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/ExamDAOImpl.java @@ -17,6 +17,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.function.Function; import java.util.function.Predicate; @@ -146,7 +147,7 @@ public class ExamDAOImpl implements ExamDAO { } } - if (from != null) { + if (from != null && exam.startTime != null) { if (exam.startTime.isBefore(from)) { return false; } @@ -773,7 +774,12 @@ public class ExamDAOImpl implements ExamDAO { // collect Exam's return recordMapping.entrySet() .stream() - .map(entry -> toDomainModel(entry.getValue(), quizzes.get(entry.getKey())).getOrThrow()) + .map(entry -> toDomainModel(entry.getValue(), quizzes.get(entry.getKey())) + .onError(error -> log.error( + "Failed to get quiz data from remote LMS for exam: ", + error)) + .getOr(null)) + .filter(Objects::nonNull) .collect(Collectors.toList()); }); } @@ -782,6 +788,10 @@ public class ExamDAOImpl implements ExamDAO { final ExamRecord record, final QuizData quizData) { + if (quizData == null) { + return Result.ofRuntimeError("No quizData found for exam: " + record); + } + return Result.tryCatch(() -> { final Collection supporter = (StringUtils.isNotBlank(record.getSupporter())) @@ -801,11 +811,11 @@ public class ExamDAOImpl implements ExamDAO { record.getInstitutionId(), record.getLmsSetupId(), record.getExternalId(), - (quizData != null) ? quizData.name : Constants.EMPTY_NOTE, - (quizData != null) ? quizData.description : Constants.EMPTY_NOTE, - (quizData != null) ? quizData.startTime : null, - (quizData != null) ? quizData.endTime : null, - (quizData != null) ? quizData.startURL : Constants.EMPTY_NOTE, + quizData.name, + quizData.description, + quizData.startTime, + quizData.endTime, + quizData.startURL, ExamType.valueOf(record.getType()), record.getOwner(), supporter,