/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/osp/trunk/matrix/tool/src/java/org/theospi/portfolio/matrix/control/ReviewPostProcessor.java $ * $Id: ReviewPostProcessor.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $ *********************************************************************************** * * Copyright (c) 2005, 2006, 2007, 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.theospi.portfolio.matrix.control; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.sakaiproject.authz.api.SecurityService; import org.sakaiproject.component.cover.ComponentManager; import org.sakaiproject.metaobj.security.AuthenticationManager; import org.sakaiproject.metaobj.shared.mgt.IdManager; import org.sakaiproject.metaobj.shared.model.Id; import org.sakaiproject.metaobj.utils.mvc.intf.Controller; import org.springframework.validation.Errors; import org.springframework.web.servlet.ModelAndView; import org.theospi.portfolio.review.ReviewHelper; import org.theospi.portfolio.shared.mgt.WorkflowEnabledManager; import org.theospi.portfolio.workflow.model.Workflow; public class ReviewPostProcessor implements Controller { private IdManager idManager = null; private SecurityService securityService; private AuthenticationManager authManager = null; public ModelAndView handleRequest(Object requestModel, Map request, Map session, Map application, Errors errors) { Map<String, Object> model = new HashMap<String, Object>(); String strId = (String)request.get("workflowId"); Id objId = idManager.getId((String)request.get("objId")); String view = "success"; if (strId != null) { Id id = idManager.getId(strId); String manager = (String)request.get("manager"); getWorkflowEnabledManager(manager).processWorkflow(id, objId); model.put("page_id", objId); } else { Set workflows = (Set)session.get(ReviewHelper.REVIEW_POST_PROCESSOR_WORKFLOWS); List wfList = Arrays.asList(workflows.toArray()); if(!isSuperUser()){ wfList = removeResetWorkflow(wfList); } Collections.sort(wfList, Workflow.getComparator()); model.put("workflows", wfList); model.put("obj_id", objId); model.put("manager", request.get("manager")); view="enter"; } return new ModelAndView(view, model); } private List removeResetWorkflow(List wfList){ List newList = new ArrayList(); for (Iterator iter = wfList.iterator(); iter.hasNext();) { Workflow wf = (Workflow) iter.next(); if(!wf.getTitle().equals("Return Workflow")){ newList.add(wf); } } return newList; } private boolean isSuperUser(){ return (getSecurityService().isSuperUser(authManager.getAgent().getId().getValue())) ? true : false; } /** * @return Returns the idManager. */ public IdManager getIdManager() { return idManager; } /** * @param idManager The idManager to set. */ public void setIdManager(IdManager idManager) { this.idManager = idManager; } protected WorkflowEnabledManager getWorkflowEnabledManager(String name) { return (WorkflowEnabledManager)ComponentManager.get(name); } public SecurityService getSecurityService() { return securityService; } public void setSecurityService(SecurityService securityService) { this.securityService = securityService; } public AuthenticationManager getAuthManager() { return authManager; } public void setAuthManager(AuthenticationManager authManager) { this.authManager = authManager; } }