From 7c6dfe0c7d0b7cc954b30c3e9f067da438036dbd Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Thu, 9 Jan 2020 14:44:38 +0100
Subject: [PATCH] OO-4438: grading time as excel import and bulk change

---
 .../CSVToAssessmentItemConverter.java         |  14 +++++++++
 .../MetadataBulkChangeController.java         |  28 ++++++++++++++----
 .../questionimport/qti-import-metadata.xlsx   | Bin 13940 -> 14062 bytes
 3 files changed, 37 insertions(+), 5 deletions(-)

diff --git a/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java b/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java
index c08886894c2..9da7d24c933 100644
--- a/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java
+++ b/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java
@@ -184,6 +184,7 @@ public class CSVToAssessmentItemConverter {
 			case "language": processLanguage(parts); break;
 			case "durchschnittliche bearbeitungszeit":
 			case "typical learning time": processTypicalLearningTime(parts); break;
+			case "required grading time": processCorrectionTime(parts); break;
 			case "itemschwierigkeit":
 			case "difficulty index": processDifficultyIndex(parts); break;
 			case "standardabweichung itemschwierigkeit":
@@ -229,6 +230,19 @@ public class CSVToAssessmentItemConverter {
 		}
 	}
 	
+	private void processCorrectionTime(String[] parts) {
+		if(currentItem == null || parts.length < 2) return;
+		
+		String time = parts[1];
+		if(StringHelper.containsNonWhitespace(time) && StringHelper.isLong(time.trim())) {
+			try {
+				currentItem.setCorrectionTime(Integer.valueOf(time.trim()));
+			} catch (NumberFormatException e) {
+				log.error("Cannot parse correction time: {}", time, e);
+			}
+		}
+	}
+	
 	private void processLicense(String[] parts) {
 		if(currentItem == null || parts.length < 2) return;
 		
diff --git a/src/main/java/org/olat/modules/qpool/ui/metadata/MetadataBulkChangeController.java b/src/main/java/org/olat/modules/qpool/ui/metadata/MetadataBulkChangeController.java
index 1298dcc3152..766f8d0d741 100644
--- a/src/main/java/org/olat/modules/qpool/ui/metadata/MetadataBulkChangeController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/metadata/MetadataBulkChangeController.java
@@ -22,6 +22,7 @@ package org.olat.modules.qpool.ui.metadata;
 import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.toBigDecimal;
 import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.toInt;
 import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.validateBigDecimal;
+import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.validateInteger;
 import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.validateElementLogic;
 import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.validateSelection;
 
@@ -84,7 +85,11 @@ public class MetadataBulkChangeController extends FormBasicController {
 	private SingleSelection taxonomyLevelEl;
 	private SingleSelection contextEl;
 	private FormLayoutContainer learningTimeContainer;
-	private IntegerElement learningTimeDayElement, learningTimeHourElement, learningTimeMinuteElement, learningTimeSecondElement;
+	private IntegerElement learningTimeDayElement;
+	private IntegerElement learningTimeHourElement;
+	private IntegerElement learningTimeMinuteElement;
+	private IntegerElement learningTimeSecondElement;
+	private TextElement correctionTimeElement;
 	private SingleSelection assessmentTypeEl;
 	private TextElement difficultyEl, stdevDifficultyEl, differentiationEl, numAnswerAltEl;
 	private SingleSelection licenseEl;
@@ -216,6 +221,10 @@ public class MetadataBulkChangeController extends FormBasicController {
 		learningTimeSecondElement = uifactory.addIntegerElement("learningTime.second", "", 0, learningTimeContainer);
 		learningTimeSecondElement.setDisplaySize(3);
 		
+		correctionTimeElement = uifactory.addTextElement("question.correctionTime", "question.correctionTime", 10, null, questionCont);
+		correctionTimeElement.setDisplaySize(4);
+		decorate(correctionTimeElement, questionCont);
+		
 		difficultyEl = uifactory.addTextElement("question.difficulty", "question.difficulty", 10, null, questionCont);
 		difficultyEl.setExampleKey("question.difficulty.example", null);
 		difficultyEl.setDisplaySize(4);
@@ -345,6 +354,8 @@ public class MetadataBulkChangeController extends FormBasicController {
 		allOk &= validateBigDecimal(stdevDifficultyEl, 0.0d, 1.0d, true);
 		allOk &= validateBigDecimal(differentiationEl, -1.0d, 1.0d, true);
 		
+		allOk &= validateInteger(correctionTimeElement, 0, 1000, isEnabled(correctionTimeElement));
+
 		//technical
 		allOk &= validateElementLogic(versionEl, versionEl.getMaxLength(), false, isEnabled(versionEl));
 		allOk &= validateSelection(statusEl, isEnabled(statusEl));
@@ -422,14 +433,21 @@ public class MetadataBulkChangeController extends FormBasicController {
 			itemImpl.setEducationalLearningTime(timeStr);
 		}
 		
-		if(isEnabled(difficultyEl))
+		if(isEnabled(correctionTimeElement) && StringHelper.isLong(correctionTimeElement.getValue())) {
+			itemImpl.setCorrectionTime(Integer.valueOf(correctionTimeElement.getValue()));
+		}
+		if(isEnabled(difficultyEl)) {
 			itemImpl.setDifficulty(toBigDecimal(difficultyEl.getValue()));
-		if(isEnabled(stdevDifficultyEl))
+		}
+		if(isEnabled(stdevDifficultyEl)) {
 			itemImpl.setStdevDifficulty(toBigDecimal(stdevDifficultyEl.getValue()));
-		if(isEnabled(differentiationEl))
+		}
+		if(isEnabled(differentiationEl)) {
 			itemImpl.setDifferentiation(toBigDecimal(differentiationEl.getValue()));
-		if(isEnabled(numAnswerAltEl))
+		}
+		if(isEnabled(numAnswerAltEl)) {
 			itemImpl.setNumOfAnswerAlternatives(toInt(numAnswerAltEl.getValue()));
+		}
 		if(isEnabled(assessmentTypeEl)) {
 			String assessmentType = assessmentTypeEl.isOneSelected() ? assessmentTypeEl.getSelectedKey() : null;
 			itemImpl.setAssessmentType(assessmentType);
diff --git a/src/main/resources/org/olat/ims/qti21/questionimport/qti-import-metadata.xlsx b/src/main/resources/org/olat/ims/qti21/questionimport/qti-import-metadata.xlsx
index 63dad9ed9c7f57f4fd6e1d72ab7d67165f39eb12..4db14381072ffe20f7b2837dad66c864c6d7571e 100644
GIT binary patch
delta 8353
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
L4%vY3KcW8z6uQ)^

delta 8260
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
WJ|UD(3=TD+pN|@8;~(<~0Q?uv70$5$

-- 
GitLab