From 714abe5424fc1e0c57802b6cd4bfea6bd5ccb37c Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 4 Oct 2017 11:52:09 +0200 Subject: [PATCH] OO-3061: make sure the deleted sessions are committed and reload the finished sessions --- .../java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java | 5 +++++ .../olat/ims/qti21/ui/AssessmentTestDisplayController.java | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) 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 aadf4ec80bf..595c2b17a59 100644 --- a/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java +++ b/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java @@ -48,6 +48,7 @@ import javax.xml.transform.stream.StreamResult; import org.apache.commons.io.IOUtils; import org.olat.basesecurity.IdentityRef; +import org.olat.core.commons.persistence.DB; import org.olat.core.gui.components.form.flexible.impl.MultipartFileInfos; import org.olat.core.helpers.Settings; import org.olat.core.id.Identity; @@ -169,6 +170,8 @@ public class QTI21ServiceImpl implements QTI21Service, UserDataDeletable, Initia configXstream.alias("assessmentResultsOptions", QTI21AssessmentResultsOptions.class); } + @Autowired + private DB dbInstance; @Autowired private AssessmentTestSessionDAO testSessionDao; @Autowired @@ -430,12 +433,14 @@ public class QTI21ServiceImpl implements QTI21Service, UserDataDeletable, Initia @Override public boolean deleteAuthorAssessmentTestSession(RepositoryEntryRef testEntry) { + log.audit("Delete author assessment sessions for test: " + testEntry); List<AssessmentTestSession> sessions = testSessionDao.getAuthorAssessmentTestSession(testEntry); for(AssessmentTestSession session:sessions) { File fileStorage = testSessionDao.getSessionStorage(session); testSessionDao.deleteTestSession(session); FileUtils.deleteDirsAndFiles(fileStorage, true, true); } + dbInstance.commit();// make sure it's flushed on the database return true; } diff --git a/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java b/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java index e84ac06760d..3f7516800a9 100644 --- a/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java +++ b/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java @@ -280,7 +280,7 @@ public class AssessmentTestDisplayController extends BasicController implements candidateSession.setExploded(true); candidateSession = qtiService.updateAssessmentTestSession(candidateSession); } else { - qtiService.finishTestSession(candidateSession, testSessionController.getTestSessionState(), assessmentResult, + candidateSession = qtiService.finishTestSession(candidateSession, testSessionController.getTestSessionState(), assessmentResult, currentRequestTimestamp, getDigitalSignatureOptions(), getIdentity()); } } @@ -1422,7 +1422,7 @@ public class AssessmentTestDisplayController extends BasicController implements /* Handle immediate end of test session */ if (ended) { - qtiService.finishTestSession(candidateSession, testSessionState, assessmentResult, + candidateSession = qtiService.finishTestSession(candidateSession, testSessionState, assessmentResult, timestamp, getDigitalSignatureOptions(), getIdentity()); } else { TestPart currentTestPart = testSessionController.getCurrentTestPart(); -- GitLab