From 985ad9693b82c83d6dba28a2d96a5ff5ce4e0bb9 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Mon, 9 Jan 2017 16:32:57 +0100 Subject: [PATCH] OO-2343: validate null or empty directed pairs in match editor --- .../interactions/MatchEditorController.java | 43 +++++++++++-------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java index 6ba0c917d60..804f923df42 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java @@ -202,27 +202,34 @@ public class MatchEditorController extends FormBasicController { if(singleMultiEl.isOneSelected() && singleMultiEl.isSelected(0)) { Map<String,String> sourseTargetMap = new HashMap<>(); String[] directedPairsIds = ureq.getHttpReq().getParameterValues("qtiworks_response_" + itemBuilder.getResponseIdentifier()); - for(String directedPairIds: directedPairsIds) { - String[] pairs = directedPairIds.split(" "); - String sourceId = pairs[0]; - String targetId = pairs[1]; - if(sourseTargetMap.containsKey(sourceId)) { - for(MatchWrapper sourceWrapper:sourceWrappers) { - if(sourceId.equals(sourceWrapper.getIdentifierString())) { - sourceWrapper.setErrorSingleChoice(true); + if(directedPairsIds == null || directedPairsIds.length == 0) { + for(MatchWrapper sourceWrapper:sourceWrappers) { + sourceWrapper.setErrorSingleChoice(true); + allOk &= false; + } + } else { + for(String directedPairIds: directedPairsIds) { + String[] pairs = directedPairIds.split(" "); + String sourceId = pairs[0]; + String targetId = pairs[1]; + if(sourseTargetMap.containsKey(sourceId)) { + for(MatchWrapper sourceWrapper:sourceWrappers) { + if(sourceId.equals(sourceWrapper.getIdentifierString())) { + sourceWrapper.setErrorSingleChoice(true); + } } + allOk &= false; + } else { + sourseTargetMap.put(sourceId, targetId); } - allOk &= false; - } else { - sourseTargetMap.put(sourceId, targetId); } - } - - for(MatchWrapper sourceWrapper:sourceWrappers) { - String sourceId = sourceWrapper.getIdentifierString(); - if(!sourseTargetMap.containsKey(sourceId)) { - sourceWrapper.setErrorSingleChoice(true); - allOk &= false; + + for(MatchWrapper sourceWrapper:sourceWrappers) { + String sourceId = sourceWrapper.getIdentifierString(); + if(!sourseTargetMap.containsKey(sourceId)) { + sourceWrapper.setErrorSingleChoice(true); + allOk &= false; + } } } } -- GitLab