From 782159e9e9094f14747e6e3d3a9ec26bf5ba3d64 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 1 Dec 2017 09:32:59 +0100 Subject: [PATCH] OO-3176 : hardened the automatic next with some additional debug code --- .../ui/AssessmentTestDisplayController.java | 45 +++++++++++-------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java b/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java index e4b1f7be252..c7d4992bef6 100644 --- a/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java +++ b/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java @@ -648,7 +648,9 @@ public class AssessmentTestDisplayController extends BasicController implements break; case response: handleResponse(ureq, qe.getStringResponseMap(), qe.getFileResponseMap(), qe.getComment()); - nextItemIfAllowed(ureq); + if(!nextItemIfAllowed(ureq)) { + logWarn("Cannot automatically go to the next question", null); + } break; case endTestPart: confirmEndTestPart(ureq); @@ -775,23 +777,30 @@ public class AssessmentTestDisplayController extends BasicController implements * * @param ureq */ - private void nextItemIfAllowed(UserRequest ureq) { - if(testSessionController.hasFollowingNonLinearItem() - && testSessionController.getTestSessionState() != null - && !testSessionController.getTestSessionState().isEnded() - && !testSessionController.getTestSessionState().isExited()) { - - TestSessionState testSessionState = testSessionController.getTestSessionState(); - TestPlanNodeKey itemNodeKey = testSessionState.getCurrentItemKey(); - if(itemNodeKey != null) { - TestPlanNode currentItemNode = testSessionState.getTestPlan().getNode(itemNodeKey); - boolean hasFeedbacks = qtiWorksCtrl.willShowSomeAssessmentItemFeedbacks(currentItemNode); - //allow skipping - if(!hasFeedbacks) { - processNextItem(ureq); - } - } - } + private boolean nextItemIfAllowed(UserRequest ureq) { + if (testSessionController.hasFollowingNonLinearItem() + && testSessionController.getTestSessionState() != null + && !testSessionController.getTestSessionState().isEnded() + && !testSessionController.getTestSessionState().isExited()) { + + try { + TestSessionState testSessionState = testSessionController.getTestSessionState(); + TestPlanNodeKey itemNodeKey = testSessionState.getCurrentItemKey(); + if (itemNodeKey != null) { + TestPlanNode currentItemNode = testSessionState.getTestPlan().getNode(itemNodeKey); + boolean hasFeedbacks = qtiWorksCtrl.willShowSomeAssessmentItemFeedbacks(currentItemNode); + // allow skipping + if (!hasFeedbacks) { + processNextItem(ureq); + return true; + } + } + } catch (QtiCandidateStateException e) { + logError("", e);//log informations + ServletUtil.printOutRequestParameters(ureq.getHttpReq()); + } + } + return false; } private void processNextItem(UserRequest ureq) { -- GitLab