From ef8cbfcd62579f7610ef038f98388980bbcb3974 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Fri, 17 Jan 2020 10:08:34 +0100
Subject: [PATCH] OO-4473: show error message in QTI statistics if question is
 missing

---
 .../ui/statistics/QTI21StatisticResourceResult.java    | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticResourceResult.java b/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticResourceResult.java
index f28262382cd..c10e0cc35be 100644
--- a/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticResourceResult.java
+++ b/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticResourceResult.java
@@ -33,6 +33,9 @@ import org.olat.core.gui.components.tree.TreeModel;
 import org.olat.core.gui.components.tree.TreeNode;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
+import org.olat.core.gui.control.generic.messages.MessageUIFactory;
+import org.olat.core.gui.translator.Translator;
+import org.olat.core.util.Util;
 import org.olat.course.nodes.CourseNodeConfiguration;
 import org.olat.course.nodes.CourseNodeFactory;
 import org.olat.course.nodes.QTICourseNode;
@@ -47,6 +50,7 @@ import org.olat.ims.qti21.QTI21StatisticsManager;
 import org.olat.ims.qti21.model.QTI21QuestionType;
 import org.olat.ims.qti21.model.QTI21StatisticSearchParams;
 import org.olat.ims.qti21.model.xml.QtiNodesExtractor;
+import org.olat.ims.qti21.ui.AssessmentTestDisplayController;
 import org.olat.repository.RepositoryEntry;
 
 import uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem;
@@ -359,6 +363,12 @@ public class QTI21StatisticResourceResult implements StatisticResourceResult {
 	private Controller createAssessmentItemController(UserRequest ureq, WindowControl wControl,
 			AssessmentItemRef assessmentItemRef, String sectionTitle, boolean printMode) {
 		ResolvedAssessmentItem resolvedAssessmentItem = resolvedAssessmentTest.getResolvedAssessmentItem(assessmentItemRef);
+		if(resolvedAssessmentItem == null || resolvedAssessmentItem.getItemLookup() == null) {
+			Translator translator = Util.createPackageTranslator(AssessmentTestDisplayController.class, ureq.getLocale());
+			String text = translator.translate("error.assessment.item.missing");
+			Controller errorCtrl = MessageUIFactory.createErrorMessage(ureq, wControl, "", text);
+			return TitledWrapperHelper.getWrapper(ureq, wControl, errorCtrl, courseNode, "o_icon_error");
+		}
 		
 		Controller ctrl = new QTI21AssessmentItemStatisticsController(ureq, wControl,
 				assessmentItemRef, resolvedAssessmentItem, sectionTitle, this, withFilter, printMode);
-- 
GitLab