/**
* OLAT - Online Learning and Training<br>
* http://www.olat.org
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br>
* University of Zurich, Switzerland.
* <hr>
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* This file has been modified by the OpenOLAT community. Changes are licensed
* under the Apache 2.0 license as the original file.
*/
package org.olat.course.run.preview;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.olat.core.id.Identity;
import org.olat.core.id.OLATResourceable;
import org.olat.core.logging.AssertException;
import org.olat.core.manager.BasicManager;
import org.olat.core.util.event.GenericEventListener;
import org.olat.course.assessment.AssessmentManager;
import org.olat.course.nodes.AssessableCourseNode;
import org.olat.course.nodes.CourseNode;
import org.olat.course.run.scoring.ScoreEvaluation;
import org.olat.course.run.userview.UserCourseEnvironment;
import org.olat.group.BusinessGroup;
import org.olat.modules.assessment.AssessmentEntry;
import org.olat.modules.assessment.model.AssessmentEntryStatus;
/**
* Initial Date: 08.02.2005
*
* @author Mike Stock
*/
final class PreviewAssessmentManager extends BasicManager implements AssessmentManager {
private Map<String,Float> nodeScores = new HashMap<String,Float>();
private Map<String,Boolean> nodePassed = new HashMap<String,Boolean>();
private Map<String,Integer> nodeAttempts = new HashMap<String,Integer>();
private Map<String,Long> nodeAssessmentID = new HashMap<String,Long>();
/**
* @see org.olat.course.assessment.AssessmentManager#saveNodeScore(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, org.olat.core.id.Identity, java.lang.Float)
*/
private void saveNodeScore(CourseNode courseNode, Float score) {
nodeScores.put(courseNode.getIdent(), score);
}
@Override
public List<AssessmentEntry> getAssessmentEntries(CourseNode courseNode) {
return Collections.emptyList();
}
@Override
public List<AssessmentEntry> getAssessmentEntriesWithStatus(CourseNode courseNode, AssessmentEntryStatus status, boolean excludeZeroScore) {
return Collections.emptyList();
}
@Override
public AssessmentEntry getAssessmentEntry(CourseNode courseNode, Identity assessedIdentity) {
return null;
}
@Override
public List<AssessmentEntry> getAssessmentEntries(Identity assessedIdentity) {
return Collections.emptyList();
}
@Override
public List<AssessmentEntry> getAssessmentEntries(BusinessGroup group, CourseNode courseNode) {
return Collections.emptyList();
}
@Override
public AssessmentEntry createAssessmentEntry(CourseNode courseNode, Identity assessedIdentity, ScoreEvaluation scoreEvaluation) {
return null;
}
@Override
public AssessmentEntry updateAssessmentEntry(AssessmentEntry assessmentEntry) {
return assessmentEntry;
}
/**
* @see org.olat.course.assessment.AssessmentManager#saveNodeAttempts(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, org.olat.core.id.Identity, java.lang.Integer)
*/
@Override
public void saveNodeAttempts(CourseNode courseNode, Identity identity, Identity assessedIdentity, Integer attempts) {
nodeAttempts.put(courseNode.getIdent(), attempts);
}
/**
* @see org.olat.course.assessment.AssessmentManager#saveNodeComment(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, org.olat.core.id.Identity, java.lang.String)
*/
@Override
public void saveNodeComment(CourseNode courseNode, Identity identity, Identity assessedIdentity, String comment) {
throw new AssertException("Not implemented for preview.");
}
/**
* @see org.olat.course.assessment.AssessmentManager#saveNodeCoachComment(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, java.lang.String)
*/
@Override
public void saveNodeCoachComment(CourseNode courseNode, Identity assessedIdentity, String comment) {
throw new AssertException("Not implemented for preview.");
}
/**
* @see org.olat.course.assessment.AssessmentManager#saveNodePassed(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, org.olat.core.id.Identity, java.lang.Boolean)
*/
private void saveNodePassed(CourseNode courseNode, Boolean passed) {
nodePassed.put(courseNode.getIdent(), passed);
}
/**
* @see org.olat.course.assessment.AssessmentManager#incrementNodeAttempts(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity)
*/
@Override
public void incrementNodeAttempts(CourseNode courseNode, Identity identity, UserCourseEnvironment userCourseEnvironment) {
Integer attempts = nodeAttempts.get(courseNode.getIdent());
if (attempts == null) attempts = new Integer(0);
int iAttempts = attempts.intValue();
iAttempts++;
nodeAttempts.put(courseNode.getIdent(), new Integer(iAttempts));
}
/**
* @see org.olat.course.assessment.AssessmentManager#incrementNodeAttemptsInBackground(org.olat.course.nodes.CourseNode,
* org.olat.core.id.Identity, org.olat.course.run.userview.UserCourseEnvironment)
*/
@Override
public void incrementNodeAttemptsInBackground(CourseNode courseNode, Identity identity, UserCourseEnvironment userCourseEnvironment) {
incrementNodeAttempts(courseNode, identity, userCourseEnvironment);
}
/**
* @see org.olat.course.assessment.AssessmentManager#getNodeScore(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity)
*/
@Override
public Float getNodeScore(CourseNode courseNode, Identity identity) {
return nodeScores.get(courseNode.getIdent());
}
/**
* @see org.olat.course.assessment.AssessmentManager#getNodeComment(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity)
*/
@Override
public String getNodeComment(CourseNode courseNode, Identity identity) {
return "This is a preview"; //default comment for preview
}
/**
* @see org.olat.course.assessment.AssessmentManager#getNodeCoachComment(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity)
*/
@Override
public String getNodeCoachComment(CourseNode courseNode, Identity identity) {
return "This is a preview"; //default comment for preview
}
/**
* @see org.olat.course.assessment.AssessmentManager#getNodePassed(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity)
*/
@Override
public Boolean getNodePassed(CourseNode courseNode, Identity identity) {
return nodePassed.get(courseNode.getIdent());
}
@Override
public Boolean getNodeFullyAssessed(CourseNode courseNode, Identity identity) {
return nodePassed.get(courseNode.getIdent());
}
/**
* @see org.olat.course.assessment.AssessmentManager#getNodeAttempts(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity)
*/
@Override
public Integer getNodeAttempts(CourseNode courseNode, Identity identity) {
Integer attempts = nodeAttempts.get(courseNode.getIdent());
return (attempts == null ? new Integer(0) : attempts);
}
/**
* @see org.olat.course.assessment.AssessmentManager#registerForAssessmentChangeEvents(org.olat.core.util.event.GenericEventListener, org.olat.core.id.Identity)
*/
@Override
public void registerForAssessmentChangeEvents(GenericEventListener gel, Identity identity) {
throw new AssertException("Not implemented for preview.");
}
/**
* @see org.olat.course.assessment.AssessmentManager#deregisterFromAssessmentChangeEvents(org.olat.core.util.event.GenericEventListener)
*/
@Override
public void deregisterFromAssessmentChangeEvents(GenericEventListener gel) {
throw new AssertException("Not implemented for preview.");
}
/**
*
* @see org.olat.course.assessment.AssessmentManager#saveAssessmentID(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, java.lang.String)
*/
private void saveAssessmentID(CourseNode courseNode, Long assessmentID) {
nodeAssessmentID.put(courseNode.getIdent(), assessmentID);
}
/**
*
* @param courseNode
* @param identity
* @return
*/
public Long getAssessmentID(CourseNode courseNode, Identity identity) {
return nodeAssessmentID.get(courseNode.getIdent());
}
@Override
public Date getScoreLastModifiedDate(CourseNode courseNode, Identity identity) {
return null;
}
/**
*
* @see org.olat.course.assessment.AssessmentManager#saveScoreEvaluation(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, org.olat.core.id.Identity, org.olat.course.run.scoring.ScoreEvaluation)
*/
@Override
public void saveScoreEvaluation(AssessableCourseNode courseNode, Identity identity, Identity assessedIdentity, ScoreEvaluation scoreEvaluation,
UserCourseEnvironment userCourseEnvironment, boolean incrementUserAttempts) {
saveNodeScore(courseNode, scoreEvaluation.getScore());
saveNodePassed(courseNode, scoreEvaluation.getPassed());
saveAssessmentID(courseNode, scoreEvaluation.getAssessmentID());
if(incrementUserAttempts) {
incrementNodeAttempts(courseNode, identity, userCourseEnvironment);
}
}
@Override
public OLATResourceable createOLATResourceableForLocking(Identity assessedIdentity) {
throw new AssertException("Not implemented for preview.");
}
}