package org.springmodules.examples.workflow.osworkflow.web; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.acegisecurity.context.SecurityContextHolder; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; import org.springframework.web.servlet.view.RedirectView; import org.springmodules.examples.workflow.osworkflow.model.Document; import org.springmodules.examples.workflow.osworkflow.service.DocumentApprovalWorkflow; /** * @author robh */ public class DocumentApprovalController extends MultiActionController { private DocumentApprovalWorkflow workflow; public void setWorkflow(DocumentApprovalWorkflow workflow) { this.workflow = workflow; } public ModelAndView start(HttpServletRequest request, HttpServletResponse response) { workflow.startNewWorkflow(); return status(request, response); } public ModelAndView status(HttpServletRequest request, HttpServletResponse response) { Map model = new HashMap(); model.put("document", workflow.getCurrentDocument()); model.put("comments", workflow.getCurrentComments()); model.put("currentSteps", workflow.getCurrentStepDescriptors()); model.put("historySteps", workflow.getHistoryStepDescriptors()); model.put("availableActions", workflow.getAvailableActionDescriptors()); model.put("state", workflow.getCurrentState()); return new ModelAndView("status", model); } public ModelAndView underway(HttpServletRequest request, HttpServletResponse response) { List queryResults = this.workflow.getUnderwayWorkflows(); return new ModelAndView("underway", "ids", queryResults); } public ModelAndView approve(HttpServletRequest request, HttpServletResponse response) { Document document = this.workflow.getCurrentDocument(); this.workflow.approveCurrentDocument(); return new ModelAndView("approved", "document", document); } public ModelAndView logout(HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(); session.invalidate(); SecurityContextHolder.setContext(null); return new ModelAndView(new RedirectView("/index.jsp", true)); } }