Skip to content
Snippets Groups Projects
Commit c0e06a57 authored by srosse's avatar srosse
Browse files

OO-2882: catch the error and show the line where it happened

parent 94576c15
No related branches found
No related tags found
No related merge requests found
...@@ -55,6 +55,7 @@ public class CSVToAssessmentItemConverter { ...@@ -55,6 +55,7 @@ public class CSVToAssessmentItemConverter {
private static final OLog log = Tracing.createLoggerFor(CSVToAssessmentItemConverter.class); private static final OLog log = Tracing.createLoggerFor(CSVToAssessmentItemConverter.class);
private int currentLine;
private int kprimPosition = 0; private int kprimPosition = 0;
private ImportOptions options; private ImportOptions options;
private final QtiSerializer qtiSerializer; private final QtiSerializer qtiSerializer;
...@@ -70,10 +71,16 @@ public class CSVToAssessmentItemConverter { ...@@ -70,10 +71,16 @@ public class CSVToAssessmentItemConverter {
return items; return items;
} }
public int getCurrentLine() {
return currentLine;
}
public void parse(String input) { public void parse(String input) {
String[] lines = input.split("\r?\n"); String[] lines = input.split("\r?\n");
for (int i = 0; i<lines.length; i++) { for (int i = 0; i<lines.length; i++) {
currentLine = i+1;
String line = lines[i]; String line = lines[i];
if (line.equals("")) { if (line.equals("")) {
continue; continue;
......
...@@ -51,7 +51,6 @@ public class TextInputController extends StepFormBasicController { ...@@ -51,7 +51,6 @@ public class TextInputController extends StepFormBasicController {
private String validatedInp; private String validatedInp;
private TextElement inputElement; private TextElement inputElement;
private List<AssessmentItemAndMetadata> parsedItems;
private final AssessmentItemsPackage importedItems; private final AssessmentItemsPackage importedItems;
private final ImportOptions options; private final ImportOptions options;
...@@ -92,8 +91,18 @@ public class TextInputController extends StepFormBasicController { ...@@ -92,8 +91,18 @@ public class TextInputController extends StepFormBasicController {
String inp = inputElement.getValue(); String inp = inputElement.getValue();
if(validatedInp == null || !validatedInp.equals(inp)) { if(validatedInp == null || !validatedInp.equals(inp)) {
boolean errors = convertInputField(); CSVToAssessmentItemConverter converter = new CSVToAssessmentItemConverter(options, qtiService.qtiSerializer());
allOk &= !errors; 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); return allOk & super.validateFormLogic(ureq);
...@@ -101,16 +110,10 @@ public class TextInputController extends StepFormBasicController { ...@@ -101,16 +110,10 @@ public class TextInputController extends StepFormBasicController {
@Override @Override
protected void formOK(UserRequest ureq) { 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()); CSVToAssessmentItemConverter converter = new CSVToAssessmentItemConverter(options, qtiService.qtiSerializer());
converter.parse(inputElement.getValue()); converter.parse(inputElement.getValue());
parsedItems = converter.getItems(); importedItems.setItems(converter.getItems());
return importDataError; fireEvent(ureq, StepsEvent.ACTIVATE_NEXT);
} }
private static class ExampleMapper implements Mapper { private static class ExampleMapper implements Mapper {
......
...@@ -14,3 +14,4 @@ item.type.fib=$org.olat.ims.qti.editor\:item.type.fib ...@@ -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.kprim=$org.olat.ims.qti.editor\:item.type.kprim
item.type.mc=$org.olat.ims.qti.editor\:item.type.mc item.type.mc=$org.olat.ims.qti.editor\:item.type.mc
item.type.sc=$org.olat.ims.qti.editor\:item.type.sc item.type.sc=$org.olat.ims.qti.editor\:item.type.sc
error.at.line=Problem auf Zeile {0}
...@@ -13,4 +13,5 @@ item.type.essay=$org.olat.ims.qti.editor\:item.type.essay ...@@ -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.fib=$org.olat.ims.qti.editor\:item.type.fib
item.type.kprim=$org.olat.ims.qti.editor\:item.type.kprim item.type.kprim=$org.olat.ims.qti.editor\:item.type.kprim
item.type.mc=$org.olat.ims.qti.editor\:item.type.mc item.type.mc=$org.olat.ims.qti.editor\:item.type.mc
item.type.sc=$org.olat.ims.qti.editor\:item.type.sc item.type.sc=$org.olat.ims.qti.editor\:item.type.sc
\ No newline at end of file error.at.line=Issue with line {0}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment