/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/sam/trunk/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/author/TemplateLoadListener.java $
* $Id: TemplateLoadListener.java 106463 2012-04-02 12:20:09Z david.horwitz@uct.ac.za $
***********************************************************************************
*
* Copyright (c) 2004, 2005, 2006, 2008 The Sakai Foundation
*
* Licensed under the Educational Community License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.opensource.org/licenses/ECL-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
**********************************************************************************/
package org.sakaiproject.tool.assessment.ui.listener.author;
import java.text.SimpleDateFormat;
import java.util.Map;
import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.sakaiproject.tool.assessment.facade.AgentFacade;
import org.sakaiproject.tool.assessment.data.dao.assessment.AssessmentAccessControl;
import org.sakaiproject.tool.assessment.data.dao.assessment.AssessmentFeedback;
import org.sakaiproject.tool.assessment.data.dao.assessment.EvaluationModel;
import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentAccessControlIfc;
import org.sakaiproject.tool.assessment.facade.AssessmentTemplateFacade;
import org.sakaiproject.tool.assessment.services.assessment.AssessmentService;
import org.sakaiproject.tool.assessment.ui.bean.author.TemplateBean;
import org.sakaiproject.tool.assessment.ui.listener.util.ContextUtil;
import org.sakaiproject.tool.assessment.ui.bean.shared.BackingBean;
import org.sakaiproject.util.FormattedText;
/**
* <p>Description: Action Listener for loading a template</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Organization: Sakai Project</p>
* @author Ed Smiley
* @version $Id: TemplateLoadListener.java 106463 2012-04-02 12:20:09Z david.horwitz@uct.ac.za $
*/
public class TemplateLoadListener
extends TemplateBaseListener
implements ActionListener
{
private static Log log = LogFactory.getLog(TemplateLoadListener.class);
static private ContextUtil cu;
/**
* Normal listener method.
* @param ae
* @throws AbortProcessingException
*/
public void processAction(ActionEvent ae) throws AbortProcessingException
{
FacesContext context = FacesContext.getCurrentInstance();
TemplateBean templateBean = lookupTemplateBean(context);
//log.info("id=" + cu.lookupParam("templateId"));
String templateId = cu.lookupParam("templateId");
loadAssessment(templateBean, templateId);
}
/**
* Update an existing assessment.
* @param templateBean
* @param template
* @param props
* @return
* @throws java.lang.Exception
*/
/**
* @param templateBean
* @param templateId template id or "0" if create new
* @return true on success
* @throws java.lang.Exception
*/
public boolean loadAssessment(TemplateBean templateBean, String templateId)
{
try
{
AssessmentService delegate = new AssessmentService();
AssessmentTemplateFacade template = delegate.getAssessmentTemplate
(templateId);
templateBean.setIdString(templateId);
templateBean.setTemplateName(FormattedText.convertFormattedTextToPlaintext(template.getTitle()));
templateBean.setTemplateAuthor(FormattedText.convertFormattedTextToPlaintext((String) template.getAssessmentMetaDataMap(template.getAssessmentMetaDataSet()).get("author")));
templateBean.setTemplateDescription(template.getDescription());
// Assessment Access Control
AssessmentAccessControl aac = (AssessmentAccessControl)
template.getAssessmentAccessControl();
if (aac != null)
{
if (aac.getItemNavigation() != null)
templateBean.setItemAccessType(aac.getItemNavigation().toString());
if (aac.getAssessmentFormat() != null)
templateBean.setDisplayChunking(aac.getAssessmentFormat().toString());
if (aac.getItemNumbering() != null)
templateBean.setQuestionNumbering(aac.getItemNumbering().toString());
if (aac.getMarkForReview() != null) {
if (aac.getMarkForReview().equals(Integer.valueOf(1))) {
templateBean.setMarkForReview(Boolean.TRUE);
}
else {
templateBean.setMarkForReview(Boolean.FALSE);
}
}
else
templateBean.setMarkForReview(Boolean.FALSE);
if (aac.getSubmissionsSaved() != null)
templateBean.setSubmissionModel(aac.getSubmissionsSaved().toString());
if (aac.getUnlimitedSubmissions().equals(Boolean.TRUE)){
templateBean.setSubmissionModel(AssessmentAccessControlIfc.UNLIMITED_SUBMISSIONS.toString());
templateBean.setSubmissionNumber(null);
}
else{
templateBean.setSubmissionModel(AssessmentAccessControlIfc.LIMITED_SUBMISSIONS.toString());
if (aac.getSubmissionsAllowed() != null)
templateBean.setSubmissionNumber(aac.getSubmissionsAllowed().toString());
else
templateBean.setSubmissionNumber("0");
}
if (aac.getLateHandling() != null)
templateBean.setLateHandling(aac.getLateHandling().toString());
if (aac.getAutoSubmit() != null && aac.getAutoSubmit().intValue() == 1) {
templateBean.setAutomaticSubmission(Boolean.TRUE);
}
}
else {
templateBean.setAutomaticSubmission(Boolean.FALSE);
}
// Evaluation Model
EvaluationModel model = (EvaluationModel) template.getEvaluationModel();
if (model != null)
{
if (model.getAnonymousGrading() != null)
templateBean.setAnonymousGrading(model.getAnonymousGrading().toString());
templateBean.setToGradebook(model.getToGradeBook());
if (model.getScoringType() != null)
templateBean.setRecordedScore(model.getScoringType().toString());
//FacesContext.getCurrentInstance().getExternalContext().getSessionMap().
// put("template.em", model);
}
// Assessment Feedback
AssessmentFeedback feedback = (AssessmentFeedback)
template.getAssessmentFeedback();
if (feedback != null)
{
if (feedback.getFeedbackDelivery() != null)
templateBean.setFeedbackType
(feedback.getFeedbackDelivery().toString());
if (feedback.getFeedbackAuthoring() != null)
templateBean.setFeedbackAuthoring
(feedback.getFeedbackAuthoring().toString());
templateBean.setFeedbackComponent_QuestionText
(feedback.getShowQuestionText());
templateBean.setFeedbackComponent_StudentResp
(feedback.getShowStudentResponse());
templateBean.setFeedbackComponent_CorrectResp
(feedback.getShowCorrectResponse());
templateBean.setFeedbackComponent_StudentScore
(feedback.getShowStudentScore());
templateBean.setFeedbackComponent_StudentQuestionScore
(feedback.getShowStudentQuestionScore());
templateBean.setFeedbackComponent_QuestionLevel
(feedback.getShowQuestionLevelFeedback());
templateBean.setFeedbackComponent_SelectionLevel
(feedback.getShowSelectionLevelFeedback());
templateBean.setFeedbackComponent_GraderComments
(feedback.getShowGraderComments());
templateBean.setFeedbackComponent_Statistics
(feedback.getShowStatistics());
}
SimpleDateFormat format = new SimpleDateFormat();
templateBean.setCreatedDate(format.format(template.getCreatedDate()));
templateBean.setCreatedBy(template.getCreatedBy());
templateBean.setLastModified(template.getLastModifiedDate().toString());
templateBean.setLastModifiedBy(template.getLastModifiedBy());
templateBean.setTypeId(template.getTypeId().toString());
templateBean.setValueMap(template.getAssessmentMetaDataMap
(template.getAssessmentMetaDataSet()));
}
catch (RuntimeException ex)
{
log.error(ex.getMessage(), ex);
return false;
}
return true;
}
}