From f6f8449cc8fd959ce5f877abb90894e9140a60b2 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Tue, 6 Oct 2015 12:30:16 +0200 Subject: [PATCH] OO-1635: get the serializer from the QTI21Service --- .../java/org/olat/ims/qti21/QTI21Service.java | 2 ++ .../ims/qti21/manager/QTI21ServiceImpl.java | 27 +++++++++++++++++++ .../AssessmentItemEditorController.java | 14 +++------- .../AssessmentTestComposerController.java | 15 +---------- 4 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/olat/ims/qti21/QTI21Service.java b/src/main/java/org/olat/ims/qti21/QTI21Service.java index d0d60d7c5d6..a3bbceb7aa3 100644 --- a/src/main/java/org/olat/ims/qti21/QTI21Service.java +++ b/src/main/java/org/olat/ims/qti21/QTI21Service.java @@ -80,6 +80,8 @@ public interface QTI21Service { public <E extends ResolvedAssessmentObject<?>> E loadAndResolveAssessmentObject(File resourceDirectory); + public boolean updateAssesmentObject(File resourceFile, ResolvedAssessmentObject<?> resolvedAssessmentObject); + public UserTestSession createTestSession(Identity identity, AssessmentEntry assessmentEntry, RepositoryEntry entry, String subIdent, RepositoryEntry testEntry, diff --git a/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java b/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java index b89578b7712..60ff6c6330e 100644 --- a/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java +++ b/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java @@ -69,6 +69,7 @@ import org.w3c.dom.Document; import uk.ac.ed.ph.jqtiplus.JqtiExtensionManager; import uk.ac.ed.ph.jqtiplus.JqtiExtensionPackage; import uk.ac.ed.ph.jqtiplus.QtiConstants; +import uk.ac.ed.ph.jqtiplus.node.AssessmentObject; import uk.ac.ed.ph.jqtiplus.node.AssessmentObjectType; import uk.ac.ed.ph.jqtiplus.node.QtiNode; import uk.ac.ed.ph.jqtiplus.node.result.AbstractResult; @@ -78,7 +79,9 @@ import uk.ac.ed.ph.jqtiplus.node.result.OutcomeVariable; import uk.ac.ed.ph.jqtiplus.notification.NotificationRecorder; import uk.ac.ed.ph.jqtiplus.reading.AssessmentObjectXmlLoader; import uk.ac.ed.ph.jqtiplus.reading.QtiXmlReader; +import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentItem; import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentObject; +import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentTest; import uk.ac.ed.ph.jqtiplus.serialization.QtiSerializer; import uk.ac.ed.ph.jqtiplus.state.ItemSessionState; import uk.ac.ed.ph.jqtiplus.state.TestPlanNodeKey; @@ -208,6 +211,30 @@ public class QTI21ServiceImpl implements QTI21Service, InitializingBean, Disposa } return result; } + + @Override + public boolean updateAssesmentObject(File resourceFile, ResolvedAssessmentObject<?> resolvedAssessmentObject) { + AssessmentObject assessmentObject; + if(resolvedAssessmentObject instanceof ResolvedAssessmentItem) { + assessmentObject = ((ResolvedAssessmentItem)resolvedAssessmentObject) + .getItemLookup().getRootNodeHolder().getRootNode(); + } else if(resolvedAssessmentObject instanceof ResolvedAssessmentTest) { + assessmentObject = ((ResolvedAssessmentTest)resolvedAssessmentObject) + .getTestLookup().getRootNodeHolder().getRootNode(); + } else { + return false; + } + + try(FileOutputStream out = new FileOutputStream(resourceFile)) { + qtiSerializer().serializeJqtiObject(assessmentObject, out); + //TODO qti + assessmentTestsAndItemsCache.remove(resourceFile); + return true; + } catch(Exception e) { + log.error("", e); + return false; + } + } @Override public URI createAssessmentObjectUri(File resourceDirectory) { diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java index 94f5da88fa1..4db2bab27e4 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java @@ -20,7 +20,6 @@ package org.olat.ims.qti21.ui.editor; import java.io.File; -import java.io.FileOutputStream; import java.net.URI; import java.util.List; @@ -34,6 +33,7 @@ import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.ims.qti21.QTI21Constants; +import org.olat.ims.qti21.QTI21Service; import org.olat.ims.qti21.ui.AssessmentItemDisplayController; import org.olat.modules.assessment.AssessmentEntry; import org.olat.modules.assessment.AssessmentService; @@ -45,7 +45,6 @@ import uk.ac.ed.ph.jqtiplus.node.item.interaction.ChoiceInteraction; import uk.ac.ed.ph.jqtiplus.node.item.interaction.Interaction; import uk.ac.ed.ph.jqtiplus.node.test.AssessmentItemRef; import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentItem; -import uk.ac.ed.ph.jqtiplus.serialization.QtiSerializer; /** * @@ -64,7 +63,7 @@ public class AssessmentItemEditorController extends BasicController { private AssessmentItemDisplayController displayCtrl; @Autowired - private QtiSerializer qtiSerializer; + private QTI21Service qtiService; @Autowired private AssessmentService assessmentService; @@ -150,13 +149,6 @@ public class AssessmentItemEditorController extends BasicController { private void doSaveAssessmentItem() { URI itemUri = resolvedAssessmentItem.getItemLookup().getSystemId(); File itemFile = new File(itemUri); - AssessmentItem assessmentItem = resolvedAssessmentItem.getItemLookup().getRootNodeHolder().getRootNode(); - - try(FileOutputStream out = new FileOutputStream(itemFile)) { - qtiSerializer.serializeJqtiObject(assessmentItem, out); - } catch(Exception e) { - logError("", e); - showError("serialize.error"); - } + qtiService.updateAssesmentObject(itemFile, resolvedAssessmentItem); } } \ No newline at end of file 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 a8566ecc121..464539964f3 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 @@ -20,7 +20,6 @@ package org.olat.ims.qti21.ui.editor; import java.io.File; -import java.io.FileOutputStream; import java.net.URI; import org.olat.core.commons.fullWebApp.LayoutMain3ColsController; @@ -55,7 +54,6 @@ import uk.ac.ed.ph.jqtiplus.node.test.AssessmentTest; import uk.ac.ed.ph.jqtiplus.node.test.TestPart; import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentItem; import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentTest; -import uk.ac.ed.ph.jqtiplus.serialization.QtiSerializer; /** * Assessment test editor and composer. @@ -84,8 +82,6 @@ public class AssessmentTestComposerController extends MainLayoutBasicController @Autowired private QTI21Service qtiService; - @Autowired - private QtiSerializer qtiSerializer; public AssessmentTestComposerController(UserRequest ureq, WindowControl wControl, TooledStackedPanel toolbar, RepositoryEntry testEntry) { @@ -178,14 +174,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController private void doSaveAssessmentTest() { URI testURI = resolvedAssessmentTest.getTestLookup().getSystemId(); File testFile = new File(testURI); - AssessmentTest assessmentTest = resolvedAssessmentTest.getTestLookup().getRootNodeHolder().getRootNode(); - - try(FileOutputStream out = new FileOutputStream(testFile)) { - qtiSerializer.serializeJqtiObject(assessmentTest, out); - } catch(Exception e) { - logError("", e); - showError("serialize.error"); - } + qtiService.updateAssesmentObject(testFile, resolvedAssessmentTest); } private void doUpdate(AssessmentSection section) { @@ -198,8 +187,6 @@ public class AssessmentTestComposerController extends MainLayoutBasicController menuTree.setDirty(true); } } - - } private void partEditorFactory(UserRequest ureq, TreeNode selectedNode) { -- GitLab