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 957aab47d5890e7524b6a3bf61b1385295de9d47..9cd799db6d9e585bd2b02594f14c47f6dcd80e81 100644 --- a/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java +++ b/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java @@ -322,12 +322,17 @@ public class CSVToAssessmentItemConverter { private void build() { if(currentItem != null) { - String question = currentItem.getItemBuilder().getQuestion(); - if(!StringHelper.isHtml(question)) { - question = "<p>" + question + "</p>"; + try { + String question = currentItem.getItemBuilder().getQuestion(); + if(!StringHelper.isHtml(question)) { + question = "<p>" + question + "</p>"; + } + currentItem.getItemBuilder().setQuestion(question); + currentItem.getItemBuilder().build(); + } catch (Exception e) { + log.error("", e); + currentItem.setHasError(true); } - currentItem.getItemBuilder().setQuestion(question); - currentItem.getItemBuilder().build(); } } diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java index 2320d2e6fcd6686bc163836601f4b6b996f86e88..eef797785c10e8e5f7a71d85cb38bc7a2cfe8982 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java @@ -696,11 +696,16 @@ public class AssessmentTestComposerController extends MainLayoutBasicController TreeNode sectionNode = getNearestSection(selectedNode); String firstItemId = null; + boolean errorOnImport = false; try { AssessmentSection section = (AssessmentSection)sectionNode.getUserObject(); - List<AssessmentItemAndMetadata> itemsAndMetadata = importPackage.getItems(); for(AssessmentItemAndMetadata itemAndMetadata:itemsAndMetadata) { + if(itemAndMetadata.isHasError()) { + errorOnImport = true; + continue; + } + AssessmentItemBuilder itemBuilder = itemAndMetadata.getItemBuilder(); AssessmentItem assessmentItem = itemBuilder.getAssessmentItem(); AssessmentItemRef itemRef = doInsert(section, assessmentItem); @@ -712,18 +717,23 @@ public class AssessmentTestComposerController extends MainLayoutBasicController } } } catch (URISyntaxException e) { - showError("error.import.question"); + errorOnImport = true; logError("", e); } + if(errorOnImport) { + showError("error.import.question"); + } - //persist metadata - doSaveManifest(); - updateTreeModel(false); - - TreeNode newItemNode = menuTree.getTreeModel().getNodeById(firstItemId); - menuTree.setSelectedNode(newItemNode); - menuTree.open(newItemNode); - partEditorFactory(ureq, newItemNode); + if(firstItemId != null) { + //persist metadata + doSaveManifest(); + updateTreeModel(false); + + TreeNode newItemNode = menuTree.getTreeModel().getNodeById(firstItemId); + menuTree.setSelectedNode(newItemNode); + menuTree.open(newItemNode); + partEditorFactory(ureq, newItemNode); + } } private AssessmentItemRef doInsert(AssessmentSection section, AssessmentItem assessmentItem)