From 99afe74ebdcc4ef2ee58f8a521a7b8e7b45e0fdd Mon Sep 17 00:00:00 2001
From: aboeckle <alexander.boeckle@frentix.com>
Date: Wed, 8 Jul 2020 12:24:05 +0200
Subject: [PATCH] OO-4792: Fixed QTI1.2 self test

---
 .../org/olat/course/nodes/IQSELFCourseNode.java    | 14 ++++++++++++++
 .../org/olat/course/nodes/IQTESTCourseNode.java    | 11 +++++++----
 .../org/olat/course/nodes/iq/IQ12EditForm.java     |  4 ++--
 3 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java b/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
index 78e2da363b3..f7e9426215a 100644
--- a/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
@@ -104,6 +104,8 @@ public class IQSELFCourseNode extends AbstractAccessableCourseNode implements Se
 	private static final Logger log = Tracing.createLoggerFor(IQSELFCourseNode.class);
 	private static final String PACKAGE_IQ = Util.getPackageName(IQRunController.class);
 	public static final String TYPE = "iqself";
+	
+	private static final int CURRENT_CONFIG_VERSION = 3;
 
 	public IQSELFCourseNode() {
 		this(null);
@@ -327,7 +329,19 @@ public class IQSELFCourseNode extends AbstractAccessableCourseNode implements Se
 			config.set(IQEditController.CONFIG_KEY_TYPE, AssessmentInstance.QMD_ENTRY_TYPE_SELF);
 			config.set(IQEditController.CONFIG_KEY_SUMMARY, AssessmentInstance.QMD_ENTRY_SUMMARY_DETAILED);
 			config.set(IQEditController.CONFIG_KEY_CONFIG_REF, Boolean.TRUE);
+		} else {
+			int version = config.getConfigurationVersion();
+			if (version < CURRENT_CONFIG_VERSION) {
+				if (version <= 3) {
+					if (config.get(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS) instanceof Boolean) {
+						config.setStringValue(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS, String.valueOf(config.getBooleanEntry(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS)));
+					}
+				}
+				
+			}
 		}
+		
+		config.setConfigurationVersion(CURRENT_CONFIG_VERSION);
 	}
 	
 	@Override
diff --git a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
index ad517944464..ae0b482f791 100644
--- a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
@@ -139,7 +139,7 @@ public class IQTESTCourseNode extends AbstractAccessableCourseNode implements QT
 	private static final String TRANSLATOR_PACKAGE = Util.getPackageName(IQEditController.class);
 	public static final String TYPE = "iqtest";
 
-	private static final int CURRENT_CONFIG_VERSION = 2;
+	private static final int CURRENT_CONFIG_VERSION = 3;
 
 	private transient RepositoryEntry cachedReferenceRepositoryEntry;
 
@@ -634,13 +634,16 @@ public class IQTESTCourseNode extends AbstractAccessableCourseNode implements QT
 			if (version < CURRENT_CONFIG_VERSION) {
 				// Loaded config is older than current config version => migrate
 				if (version == 1) {
-					// migrate V1 => V2, new parameter 'enableScoreInfo'
-					version = 2;
 					config.set(IQEditController.CONFIG_KEY_ENABLESCOREINFO, Boolean.TRUE);
+				} else if (version <= 2) {
+					if (config.get(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS) instanceof Boolean) {
+						config.setStringValue(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS, String.valueOf(config.getBooleanEntry(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS)));
+					}
 				}
-				config.setConfigurationVersion(CURRENT_CONFIG_VERSION);
 			}
 		}
+		
+		config.setConfigurationVersion(CURRENT_CONFIG_VERSION);
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/course/nodes/iq/IQ12EditForm.java b/src/main/java/org/olat/course/nodes/iq/IQ12EditForm.java
index 87fdb604f7d..155837d31b8 100644
--- a/src/main/java/org/olat/course/nodes/iq/IQ12EditForm.java
+++ b/src/main/java/org/olat/course/nodes/iq/IQ12EditForm.java
@@ -160,7 +160,7 @@ public class IQ12EditForm extends FormBasicController {
 		// Only tests and selftests have summaries and score progress
 		if (!isSurvey) {
 			modConfig.set(IQEditController.CONFIG_KEY_SUMMARY, getSummary());
-			modConfig.set(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS, new Boolean(isShowResultsDateDependent()));
+			modConfig.set(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS, String.valueOf(isShowResultsDateDependent()));
 			modConfig.set(IQEditController.CONFIG_KEY_RESULTS_START_DATE, getShowResultsStartDate()); 
 			modConfig.set(IQEditController.CONFIG_KEY_RESULTS_END_DATE, getShowResultsEndDate());
 			modConfig.set(IQEditController.CONFIG_KEY_RESULT_ON_FINISH, isShowResultsAfterFinishTest());
@@ -223,7 +223,7 @@ public class IQ12EditForm extends FormBasicController {
 		showResultsOnHomePage.addActionListener(FormEvent.ONCLICK);
 		showResultsOnHomePage.setVisible(!isSurvey);
 		
-		Boolean showResultsActive = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS);
+		Boolean showResultsActive = Boolean.valueOf(modConfig.getStringValue(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS));
 		boolean showResultsDateDependent = false; // default false
 		if (showResultsActive != null) {
 			showResultsDateDependent = showResultsActive.booleanValue();
-- 
GitLab