From aaea9a17ccc6f8e8bd3d64cab1e6ee09ca156854 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Fri, 17 Apr 2020 15:08:49 +0200
Subject: [PATCH] OO-4643: extend trim for text entries to insecable spaces

---
 pom.xml                                               |  2 +-
 .../ui/editor/interactions/FIBEditorController.java   |  2 ++
 .../interactions/FIBTextEntrySettingsController.java  | 11 ++++++-----
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/pom.xml b/pom.xml
index a755a023bae..566cc0b0565 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,7 +78,7 @@
 		<version.selenium>3.141.59</version.selenium>
 		<version.drone>2.5.1</version.drone>
 		<activemq.version>5.15.11</activemq.version>
-		<qtiworks.version>1.0.18</qtiworks.version>
+		<qtiworks.version>1.0.19</qtiworks.version>
 
 	    <!-- properties for testing and Q&A -->
 	    <!-- by default no tests are executed so far (April 2011). Use appropriate profiles and properties on the command line -->
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java
index 384ef40ec5a..b67a5028d3d 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java
@@ -55,6 +55,7 @@ import org.xml.sax.helpers.DefaultHandler;
 
 import nu.validator.htmlparser.common.XmlViolationPolicy;
 import nu.validator.htmlparser.sax.HtmlParser;
+import uk.ac.ed.ph.jqtiplus.internal.util.StringUtilities;
 
 /**
  * 
@@ -357,6 +358,7 @@ public class FIBEditorController extends FormBasicController {
 						solution = attributes.getValue(i);
 						if(solution != null) {
 							solution = itemBuilder.unescapeDataQtiSolution(solution);
+							solution = StringUtilities.trim(solution);
 						}
 					} else if("data-qti-solution-empty".equals(name)) {
 						solutionEmpty = attributes.getValue(i);
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java
index 9294d751d22..0b568c5ffb3 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java
@@ -41,6 +41,7 @@ import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder.TextEn
 import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder.TextEntryAlternative;
 import org.olat.ims.qti21.ui.editor.AssessmentTestEditorController;
 
+import uk.ac.ed.ph.jqtiplus.internal.util.StringUtilities;
 import uk.ac.ed.ph.jqtiplus.types.Identifier;
 
 /**
@@ -241,7 +242,7 @@ public class FIBTextEntrySettingsController extends FormBasicController {
 
 	@Override
 	protected void formOK(UserRequest ureq) {
-		interaction.setSolution(solutionEl.getValue());
+		interaction.setSolution(StringUtilities.trim(solutionEl.getValue()));
 		interaction.setPlaceholder(placeholderEl.getValue());
 		List<TextEntryAlternative> alternatives = new ArrayList<>(alternativeRows.size());
 		for(AlternativeRow row:alternativeRows) {
@@ -253,24 +254,24 @@ public class FIBTextEntrySettingsController extends FormBasicController {
 				String[] valArr = val.split("[;]");
 				for(int i=0;i<valArr.length; i++) {
 					if(i==0) {
-						alternative.setAlternative(valArr[i]);
+						alternative.setAlternative(StringUtilities.trim(valArr[i]));
 						alternatives.add(alternative);
 					} else {
 						TextEntryAlternative newAlternative = new TextEntryAlternative();
-						newAlternative.setAlternative(valArr[i]);
+						newAlternative.setAlternative(StringUtilities.trim(valArr[i]));
 						newAlternative.setScore(alternative.getScore());
 						alternatives.add(newAlternative);
 					}
 				}
 			} else {
-				alternative.setAlternative(val);
+				alternative.setAlternative(StringUtilities.trim(val));
 				alternatives.add(alternative);
 			}
 		}
 		interaction.setAlternatives(alternatives);
 		interaction.setCaseSensitive(caseSensitiveEl.isAtLeastSelected(1));
 		if(StringHelper.containsNonWhitespace(expectedLengthEl.getValue())) {
-			interaction.setExpectedLength(new Integer(expectedLengthEl.getValue()));
+			interaction.setExpectedLength(Integer.valueOf(expectedLengthEl.getValue()));
 		} else {
 			interaction.setExpectedLength(null);
 		}
-- 
GitLab