package org.sakaiproject.tool.assessment.ui.listener.author; import java.util.ArrayList; 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.event.cover.EventTrackingService; import org.sakaiproject.tool.assessment.facade.AgentFacade; import org.sakaiproject.tool.assessment.facade.PublishedAssessmentFacade; import org.sakaiproject.tool.assessment.services.GradingService; import org.sakaiproject.tool.assessment.services.assessment.PublishedAssessmentService; import org.sakaiproject.tool.assessment.ui.bean.author.AssessmentBean; import org.sakaiproject.tool.assessment.ui.bean.author.AuthorBean; import org.sakaiproject.tool.assessment.ui.bean.author.PublishRepublishNotificationBean; import org.sakaiproject.tool.assessment.ui.bean.author.PublishedAssessmentSettingsBean; import org.sakaiproject.tool.assessment.ui.listener.util.ContextUtil; import org.sakaiproject.util.FormattedText; public class ConfirmRepublishAssessmentListener implements ActionListener { // To Do: I think this can be combined with SavePublishedSettingsListener. private static Log log = LogFactory.getLog(ConfirmRepublishAssessmentListener.class); public void processAction(ActionEvent ae) throws AbortProcessingException { AuthorBean author = (AuthorBean) ContextUtil.lookupBean("author"); // in case we're in published assessment pool edit view, disable that mode if (author.getIsEditPoolFlow()) { author.setIsEditPoolFlow(false); } PublishedAssessmentService assessmentService = new PublishedAssessmentService(); SavePublishedSettingsListener savePublishedSettingsListener = new SavePublishedSettingsListener(); PublishedAssessmentSettingsBean assessmentSettings = (PublishedAssessmentSettingsBean) ContextUtil.lookupBean("publishedSettings"); assessmentSettings.setTitle(FormattedText.convertFormattedTextToPlaintext(assessmentSettings.getTitle())); Long assessmentId = assessmentSettings.getAssessmentId(); PublishedAssessmentFacade assessment = assessmentService.getPublishedAssessment(assessmentId.toString()); /* PublishedAccessControl control = (PublishedAccessControl)assessment.getAssessmentAccessControl(); if (control == null){ control = new PublishedAccessControl(); // need to fix accessControl so it can take AssessmentFacade // later control.setAssessmentBase(assessment.getData()); } */ EventTrackingService.post(EventTrackingService.newEvent("sam.pubsetting.edit", "siteId=" + AgentFacade.getCurrentSiteId() + ", publishedAssessmentId=" + assessmentId, true)); FacesContext context = FacesContext.getCurrentInstance(); //boolean error = savePublishedSettingsListener.setPublishedSettings(assessmentService, assessmentSettings, context, control, assessment, false); /* if (error){ assessmentSettings.setOutcome("editPublishedAssessmentSettings"); return; } */ boolean gbError = savePublishedSettingsListener.checkScore(assessmentSettings, assessment, context); if (gbError){ author.setOutcome("editAssessment"); return; } //savePublishedSettingsListener.updateGB(assessmentSettings, assessment); //assessmentService.saveAssessment(assessment); //These outcome are set for Cancel button in publishAssessment.jsp String actionCommand = ae.getComponent().getId(); if (actionCommand.startsWith("republishRegrade")) { log.debug("republishRegrade"); //author.setOutcome("editAssessment"); author.setIsRepublishAndRegrade(true); } else if (actionCommand.startsWith("republish")) { log.debug("republish"); //author.setOutcome("editAssessment"); author.setIsRepublishAndRegrade(false); } /* This is commented out for 1534 else if (actionCommand.startsWith("publish")) { log.debug("publish"); author.setOutcome("editPublishedAssessmentSettings"); } */ PublishedAssessmentSettingsBean publishedAssessmentSettings = (PublishedAssessmentSettingsBean) ContextUtil .lookupBean("publishedSettings"); Long publishedAssessmentId = publishedAssessmentSettings.getAssessmentId(); GradingService gradingService = new GradingService(); ArrayList al = gradingService.getHasGradingDataAndHasSubmission(publishedAssessmentId); AssessmentBean assessmentBean = (AssessmentBean) ContextUtil.lookupBean("assessmentBean"); if (al.size() == 2) { assessmentBean.setHasGradingData(((Boolean)al.get(0)).booleanValue()); assessmentBean.setHasSubmission(((Boolean)al.get(1)).booleanValue()); } else { assessmentBean.setHasGradingData(false); assessmentBean.setHasSubmission(false); } publishedAssessmentSettings.setReleaseToGroupsAsString(assessment.getReleaseToGroups()); publishedAssessmentSettings.setUpdateMostCurrentSubmission(false); PublishRepublishNotificationBean publishRepublishNotification = (PublishRepublishNotificationBean) ContextUtil.lookupBean("publishRepublishNotification"); publishRepublishNotification.setSendNotification(false); if (author.getIsRepublishAndRegrade()) { publishRepublishNotification.setPrePopulateText(ContextUtil.getLocalizedString("org.sakaiproject.tool.assessment.bundle.AssessmentSettingsMessages","pre_populate_text_regrade_republish")); } else { publishRepublishNotification.setPrePopulateText(ContextUtil.getLocalizedString("org.sakaiproject.tool.assessment.bundle.AssessmentSettingsMessages","pre_populate_text_republish")); } author.setOutcome("saveSettingsAndConfirmPublish"); } }