package org.theospi.portfolio.matrix.control; import java.util.HashMap; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.ObjectNotFoundException; import org.sakaiproject.exception.IdUnusedException; import org.sakaiproject.metaobj.shared.mgt.IdManager; import org.sakaiproject.metaobj.shared.model.Id; import org.sakaiproject.metaobj.utils.mvc.intf.Controller; import org.sakaiproject.site.api.Site; import org.sakaiproject.site.cover.SiteService; import org.sakaiproject.spring.util.SpringTool; import org.sakaiproject.tool.api.SessionManager; import org.springframework.validation.Errors; import org.springframework.web.servlet.ModelAndView; import org.theospi.portfolio.matrix.MatrixManager; import org.theospi.portfolio.matrix.model.ScaffoldingCell; import org.theospi.portfolio.matrix.model.WizardPageDefinition; import org.theospi.portfolio.wizard.mgt.WizardManager; import org.theospi.portfolio.wizard.model.WizardPageSequence; public class ViewCellInformationController implements Controller{ private MatrixManager matrixManager; private WizardManager wizardManager; private IdManager idManager = null; private SessionManager sessionManager; protected final Log logger = LogFactory.getLog(getClass()); public ModelAndView handleRequest(Object requestModel, Map request, Map session, Map application, Errors errors) { WizardPageDefinition wizPageDef = null; Map<String, Object> model = new HashMap<String, Object>(); String siteTitle = ""; String printFriendly = (String) request.get("printFriendly"); if (printFriendly != null) { model.put("printFriendly", true); } String strId = (String) request.get("sCell_id"); if (strId == null) { strId = (String) session.get("sCell_id"); session.remove("sCell_id"); } if (strId == null) { //must have passed something else strId = (String) session.get("page_def_id"); session.remove("page_def_id"); } ScaffoldingCell sCell = null; Id id = getIdManager().getId(strId); try { sCell = matrixManager.getScaffoldingCell(id); } catch (ObjectNotFoundException e) { logger.debug("Can't find scaffolding cell with id: " + strId + ". Trying as a wizard page definition."); } if (sCell == null) { sCell = matrixManager.getScaffoldingCellByWizardPageDef(id); } if(sCell != null) { wizPageDef = sCell.getWizardPageDefinition(); siteTitle = sCell.getScaffolding().getWorksiteName(); String matrixTitle = sCell.getScaffolding().getTitle(); model.put("matrix_title", matrixTitle); } else { //it must be a wizard wizPageDef = matrixManager.getWizardPageDefinition(id); try { Site site = SiteService.getSite(wizPageDef.getSiteId()); siteTitle = site.getTitle(); WizardPageSequence wps = wizardManager.getWizardPageSeqByDef(wizPageDef.getId()); String wizardTitle = wps.getCategory().getWizard().getName(); model.put("wizard_title", wizardTitle); } catch (IdUnusedException e) { logger.warn("unable to find site: " + wizPageDef.getSiteId()); } } model.put("site_title", siteTitle); model.put("wizardPageDef", wizPageDef); String overrideLastView = (String)request.get("override." + SpringTool.LAST_VIEW_VISITED); if (overrideLastView != null && !"".equalsIgnoreCase(overrideLastView)) { session.put(SpringTool.LAST_VIEW_VISITED, overrideLastView); } return new ModelAndView("success", model); } public MatrixManager getMatrixManager() { return matrixManager; } public void setMatrixManager(MatrixManager matrixManager) { this.matrixManager = matrixManager; } public IdManager getIdManager() { return idManager; } public void setIdManager(IdManager idManager) { this.idManager = idManager; } public SessionManager getSessionManager() { return sessionManager; } public void setSessionManager(SessionManager sessionManager) { this.sessionManager = sessionManager; } public WizardManager getWizardManager() { return wizardManager; } public void setWizardManager(WizardManager wizardManager) { this.wizardManager = wizardManager; } }