use of org.olat.ims.qti21.AssessmentSessionAuditLogger in project openolat by klemens.
the class CorrectionIdentityAssessmentItemController method doSave.
private void doSave() {
TestSessionState testSessionState = itemCorrection.getTestSessionState();
AssessmentTestSession candidateSession = itemCorrection.getTestSession();
try (AssessmentSessionAuditLogger candidateAuditLogger = qtiService.getAssessmentSessionAuditLogger(candidateSession, false)) {
TestPlanNodeKey testPlanNodeKey = itemCorrection.getItemNode().getKey();
String stringuifiedIdentifier = testPlanNodeKey.getIdentifier().toString();
ParentPartItemRefs parentParts = AssessmentTestHelper.getParentSection(testPlanNodeKey, testSessionState, resolvedAssessmentTest);
AssessmentItemSession itemSession = qtiService.getOrCreateAssessmentItemSession(candidateSession, parentParts, stringuifiedIdentifier);
itemSession.setManualScore(identityInteractionsCtrl.getManualScore());
itemSession.setCoachComment(identityInteractionsCtrl.getComment());
itemSession.setToReview(identityInteractionsCtrl.isToReview());
itemSession = qtiService.updateAssessmentItemSession(itemSession);
itemCorrection.setItemSession(itemSession);
candidateAuditLogger.logCorrection(candidateSession, itemSession, getIdentity());
candidateSession = qtiService.recalculateAssessmentTestSessionScores(candidateSession.getKey());
itemCorrection.setTestSession(candidateSession);
model.updateLastSession(itemCorrection.getAssessedIdentity(), candidateSession);
} catch (IOException e) {
logError("", e);
}
}
use of org.olat.ims.qti21.AssessmentSessionAuditLogger in project OpenOLAT by OpenOLAT.
the class QTI21ServiceImpl method extraTimeAssessmentTestSession.
@Override
public void extraTimeAssessmentTestSession(AssessmentTestSession session, int extraTime, Identity actor) {
testSessionDao.extraTime(session, extraTime);
// commit before event
dbInstance.commit();
AssessmentSessionAuditLogger candidateAuditLogger = getAssessmentSessionAuditLogger(session, false);
candidateAuditLogger.logTestExtend(session, extraTime, actor);
RetrieveAssessmentTestSessionEvent event = new RetrieveAssessmentTestSessionEvent(session.getKey());
OLATResourceable sessionOres = OresHelper.createOLATResourceableInstance(AssessmentTestSession.class, session.getKey());
coordinatorManager.getCoordinator().getEventBus().fireEventToListenersOf(event, sessionOres);
}
use of org.olat.ims.qti21.AssessmentSessionAuditLogger in project OpenOLAT by OpenOLAT.
the class QTI21ServiceImpl method pullSession.
@Override
public AssessmentTestSession pullSession(AssessmentTestSession session, DigitalSignatureOptions signatureOptions, Identity actor) {
session = getAssessmentTestSession(session.getKey());
if (session.getFinishTime() == null) {
if (qtiModule.isDigitalSignatureEnabled()) {
signAssessmentResult(session, signatureOptions, session.getIdentity());
}
session.setFinishTime(new Date());
}
session.setTerminationTime(new Date());
session = updateAssessmentTestSession(session);
// make sure that the changes committed before sending the event
dbInstance.commit();
AssessmentSessionAuditLogger candidateAuditLogger = getAssessmentSessionAuditLogger(session, false);
candidateAuditLogger.logTestRetrieved(session, actor);
OLATResourceable sessionOres = OresHelper.createOLATResourceableInstance(AssessmentTestSession.class, session.getKey());
coordinatorManager.getCoordinator().getEventBus().fireEventToListenersOf(new RetrieveAssessmentTestSessionEvent(session.getKey()), sessionOres);
return session;
}
use of org.olat.ims.qti21.AssessmentSessionAuditLogger in project openolat by klemens.
the class QTI21ServiceImpl method extraTimeAssessmentTestSession.
@Override
public void extraTimeAssessmentTestSession(AssessmentTestSession session, int extraTime, Identity actor) {
testSessionDao.extraTime(session, extraTime);
// commit before event
dbInstance.commit();
AssessmentSessionAuditLogger candidateAuditLogger = getAssessmentSessionAuditLogger(session, false);
candidateAuditLogger.logTestExtend(session, extraTime, actor);
RetrieveAssessmentTestSessionEvent event = new RetrieveAssessmentTestSessionEvent(session.getKey());
OLATResourceable sessionOres = OresHelper.createOLATResourceableInstance(AssessmentTestSession.class, session.getKey());
coordinatorManager.getCoordinator().getEventBus().fireEventToListenersOf(event, sessionOres);
}
use of org.olat.ims.qti21.AssessmentSessionAuditLogger in project openolat by klemens.
the class QTI21ServiceImpl method getAssessmentSessionAuditLogger.
@Override
public AssessmentSessionAuditLogger getAssessmentSessionAuditLogger(AssessmentTestSession session, boolean authorMode) {
if (authorMode) {
return new AssessmentSessionAuditOLog();
}
if (session.getIdentity() == null && StringHelper.containsNonWhitespace(session.getAnonymousIdentifier())) {
return new AssessmentSessionAuditOLog();
}
try {
File auditLog = getAssessmentSessionAuditLogFile(session);
FileOutputStream outputStream = new FileOutputStream(auditLog, true);
return new AssessmentSessionAuditFileLog(outputStream);
} catch (IOException e) {
log.error("Cannot open the user specific log audit, fall back to OLog", e);
return new AssessmentSessionAuditOLog();
}
}
Aggregations