From d7e13d0098c1e35ea16e7cba79ca6f4508f501d0 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 1 Nov 2017 21:16:14 +0100
Subject: [PATCH] OO-3104: check if the value is identifier based and compare
 the 2 identifiers

---
 .../ui/components/AssessmentRenderFunctions.java   | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java
index 6e44dcd8a71..3199e9125f4 100644
--- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java
+++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java
@@ -63,6 +63,7 @@ import uk.ac.ed.ph.jqtiplus.value.Cardinality;
 import uk.ac.ed.ph.jqtiplus.value.DurationValue;
 import uk.ac.ed.ph.jqtiplus.value.FileValue;
 import uk.ac.ed.ph.jqtiplus.value.FloatValue;
+import uk.ac.ed.ph.jqtiplus.value.IdentifierValue;
 import uk.ac.ed.ph.jqtiplus.value.IntegerValue;
 import uk.ac.ed.ph.jqtiplus.value.ListValue;
 import uk.ac.ed.ph.jqtiplus.value.MultipleValue;
@@ -132,12 +133,13 @@ public class AssessmentRenderFunctions {
     // or not(@templateIdentifier)
     // or (qw:value-contains(qw:get-template-value(@templateIdentifier), @identifier) and not(@showHide='hide'))])"/>
 	public static boolean isVisible(Choice choice, ItemSessionState iSessionState) {
-		Value templateValue = choice.getTemplateIdentifier() == null ? null : iSessionState.getTemplateValue(choice.getTemplateIdentifier());
-
-		return choice.getTemplateIdentifier() != null 
-				//TODO the check must be checked
-				|| (templateValue != null && templateValue.toString().equals(choice.getIdentifier().toString()))
-				|| choice.getVisibilityMode() != VisibilityMode.HIDE_IF_MATCH;
+		if(choice.getTemplateIdentifier() == null) return true;
+		
+		Value templateValue = iSessionState.getTemplateValue(choice.getTemplateIdentifier());
+		boolean visible = templateValue instanceof IdentifierValue
+				&& ((IdentifierValue)templateValue).identifierValue().equals(choice.getIdentifier())
+				&& choice.getVisibilityMode() != VisibilityMode.HIDE_IF_MATCH;
+		return visible;
 	}
 	
 	//<xsl:if test="qw:is-invalid-response(@responseIdentifier)">
-- 
GitLab