package org.sakaiproject.metaobj.shared.control; import org.sakaiproject.metaobj.utils.mvc.intf.Controller; import org.sakaiproject.metaobj.utils.mvc.intf.FormController; import org.sakaiproject.metaobj.utils.mvc.intf.CancelableController; import org.sakaiproject.metaobj.shared.mgt.StructuredArtifactDefinitionManager; import org.sakaiproject.metaobj.shared.model.StructuredArtifactDefinitionBean; import org.sakaiproject.content.api.ResourceEditingHelper; import org.sakaiproject.content.api.ResourceToolActionPipe; import org.sakaiproject.content.api.ResourceToolAction; import org.sakaiproject.tool.api.ToolSession; import org.sakaiproject.tool.api.ActiveTool; import org.sakaiproject.tool.cover.ToolManager; import org.sakaiproject.tool.cover.SessionManager; import org.sakaiproject.site.api.Site; import org.sakaiproject.site.cover.SiteService; import org.sakaiproject.exception.IdUnusedException; import org.springframework.web.servlet.ModelAndView; import org.springframework.validation.Errors; import java.util.*; import java.util.Map.Entry; /** * Created by IntelliJ IDEA. * User: johnellis * Date: Jan 29, 2007 * Time: 11:07:06 AM * To change this template use File | Settings | File Templates. */ public class FormCreateResourceHelper implements Controller, FormController, CancelableController { private StructuredArtifactDefinitionManager structuredArtifactDefinitionManager; public ModelAndView handleRequest(Object requestModel, Map request, Map session, Map application, Errors errors) { FormCreateHelperBean bean = (FormCreateHelperBean) requestModel; if (bean.getFormId() == null || bean.getFormId().length() == 0) { errors.rejectValue("formId", "FORM_ID_REQUIRED"); return null; } session.put(ResourceEditingHelper.CREATE_SUB_TYPE, bean.getFormId()); return new ModelAndView("formHelper"); } public StructuredArtifactDefinitionManager getStructuredArtifactDefinitionManager() { return structuredArtifactDefinitionManager; } public void setStructuredArtifactDefinitionManager(StructuredArtifactDefinitionManager structuredArtifactDefinitionManager) { this.structuredArtifactDefinitionManager = structuredArtifactDefinitionManager; } /** * Create a map of all data the form requries. * Useful for building up drop down lists, etc. * * @param request * @param command * @param errors * @return ref data */ public Map referenceData(Map request, Object command, Errors errors) { Map ref = new Hashtable(); Map<String, List> homes = getStructuredArtifactDefinitionManager().findCategorizedHomes(false); List categorizedHomes = new ArrayList(); for (Iterator i=homes.entrySet().iterator();i.hasNext();) { try { Entry<String, List> entry = (Entry)i.next(); Site site = SiteService.getSite(entry.getKey()); List homesList = entry.getValue(); Collections.sort(homesList); categorizedHomes.add(new SiteHomeWrapper(site, homesList)); } catch (IdUnusedException e) { throw new RuntimeException(e); } } Collections.sort(categorizedHomes); ref.put("categorizedFormList", categorizedHomes); List globalHomes = getStructuredArtifactDefinitionManager().findGlobalHomes(); globalHomes = filterHidden(globalHomes); Collections.sort(globalHomes); ref.put("globalForms", globalHomes); return ref; } protected List filterHidden(List globalHomes) { for (Iterator<StructuredArtifactDefinitionBean> i=globalHomes.iterator();i.hasNext();) { if (i.next().isSystemOnly()) { i.remove(); } } return globalHomes; } public boolean isCancel(Map request) { Object cancel = request.get("canceling"); if (cancel == null) { return false; } return cancel.equals("true"); } public ModelAndView processCancel(Map request, Map session, Map application, Object command, Errors errors) throws Exception { ResourceToolActionPipe pipe = (ResourceToolActionPipe)session.get(ResourceToolAction.ACTION_PIPE); pipe.setActionCanceled(true); pipe.setActionCompleted(false); return new ModelAndView("cancel"); } }