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 9c53d51a6f27427501fa6deb5f407913e7c93c49..1f37625ad1990448693deb7001653253d7fb5a92 100644 --- a/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java +++ b/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java @@ -55,6 +55,7 @@ public class CSVToAssessmentItemConverter { private static final OLog log = Tracing.createLoggerFor(CSVToAssessmentItemConverter.class); + private int currentLine; private int kprimPosition = 0; private ImportOptions options; private final QtiSerializer qtiSerializer; @@ -70,10 +71,16 @@ public class CSVToAssessmentItemConverter { return items; } + public int getCurrentLine() { + return currentLine; + } + public void parse(String input) { String[] lines = input.split("\r?\n"); for (int i = 0; i<lines.length; i++) { + currentLine = i+1; + String line = lines[i]; if (line.equals("")) { continue; diff --git a/src/main/java/org/olat/ims/qti21/questionimport/TextInputController.java b/src/main/java/org/olat/ims/qti21/questionimport/TextInputController.java index 2fed63b45d768f1d1c13687aa54a4fe992ddff88..5faaab251d81625bb19238f3e03588c8cd4f4b5a 100644 --- a/src/main/java/org/olat/ims/qti21/questionimport/TextInputController.java +++ b/src/main/java/org/olat/ims/qti21/questionimport/TextInputController.java @@ -51,7 +51,6 @@ public class TextInputController extends StepFormBasicController { private String validatedInp; private TextElement inputElement; - private List<AssessmentItemAndMetadata> parsedItems; private final AssessmentItemsPackage importedItems; private final ImportOptions options; @@ -92,8 +91,18 @@ public class TextInputController extends StepFormBasicController { String inp = inputElement.getValue(); if(validatedInp == null || !validatedInp.equals(inp)) { - boolean errors = convertInputField(); - allOk &= !errors; + CSVToAssessmentItemConverter converter = new CSVToAssessmentItemConverter(options, qtiService.qtiSerializer()); + try { + converter.parse(inputElement.getValue()); + List<AssessmentItemAndMetadata> items = converter.getItems(); + if(items == null || items.isEmpty()) { + inputElement.setErrorKey("form.mandatory.hover", null); + allOk &= false; + } + } catch (Exception e) { + inputElement.setErrorKey("error.at.line", new String[] { Integer.toString(converter.getCurrentLine()) }); + allOk &= false; + } } return allOk & super.validateFormLogic(ureq); @@ -101,16 +110,10 @@ public class TextInputController extends StepFormBasicController { @Override protected void formOK(UserRequest ureq) { - importedItems.setItems(parsedItems); - fireEvent(ureq, StepsEvent.ACTIVATE_NEXT); - } - - private boolean convertInputField() { - boolean importDataError = false; CSVToAssessmentItemConverter converter = new CSVToAssessmentItemConverter(options, qtiService.qtiSerializer()); converter.parse(inputElement.getValue()); - parsedItems = converter.getItems(); - return importDataError; + importedItems.setItems(converter.getItems()); + fireEvent(ureq, StepsEvent.ACTIVATE_NEXT); } private static class ExampleMapper implements Mapper { diff --git a/src/main/java/org/olat/ims/qti21/questionimport/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti21/questionimport/_i18n/LocalStrings_de.properties index c4bdb8bdc07a426c401ec63d9054b8428bddec7d..7b90d6b01b38bbe0df60c7d5bc924183652195d6 100644 --- a/src/main/java/org/olat/ims/qti21/questionimport/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/ims/qti21/questionimport/_i18n/LocalStrings_de.properties @@ -14,3 +14,4 @@ item.type.fib=$org.olat.ims.qti.editor\:item.type.fib item.type.kprim=$org.olat.ims.qti.editor\:item.type.kprim item.type.mc=$org.olat.ims.qti.editor\:item.type.mc item.type.sc=$org.olat.ims.qti.editor\:item.type.sc +error.at.line=Problem auf Zeile {0} diff --git a/src/main/java/org/olat/ims/qti21/questionimport/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti21/questionimport/_i18n/LocalStrings_en.properties index 9dd0dabfd55398edfdba12048bfb8a60acd3c96c..0373ba6cb2117befecbe86577a235b0da089160a 100644 --- a/src/main/java/org/olat/ims/qti21/questionimport/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/ims/qti21/questionimport/_i18n/LocalStrings_en.properties @@ -13,4 +13,5 @@ item.type.essay=$org.olat.ims.qti.editor\:item.type.essay item.type.fib=$org.olat.ims.qti.editor\:item.type.fib item.type.kprim=$org.olat.ims.qti.editor\:item.type.kprim item.type.mc=$org.olat.ims.qti.editor\:item.type.mc -item.type.sc=$org.olat.ims.qti.editor\:item.type.sc \ No newline at end of file +item.type.sc=$org.olat.ims.qti.editor\:item.type.sc +error.at.line=Issue with line {0} \ No newline at end of file