/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/osp/trunk/matrix/api-impl/src/java/org/theospi/portfolio/workflow/impl/WorkflowManagerImpl.java $ * $Id: WorkflowManagerImpl.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $ *********************************************************************************** * * Copyright (c) 2005, 2006, 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.workflow.impl; import java.util.HashSet; import java.util.Set; import org.sakaiproject.authz.api.SecurityService; import org.sakaiproject.entity.api.EntityManager; import org.sakaiproject.entity.api.Reference; import org.sakaiproject.metaobj.shared.mgt.IdManager; import org.sakaiproject.metaobj.shared.model.Id; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.theospi.portfolio.matrix.MatrixFunctionConstants; import org.theospi.portfolio.matrix.model.Scaffolding; import org.theospi.portfolio.matrix.model.WizardPageDefinition; import org.theospi.portfolio.security.AuthorizationFacade; import org.theospi.portfolio.shared.model.ObjectWithWorkflow; import org.theospi.portfolio.wizard.model.Wizard; import org.theospi.portfolio.workflow.mgt.WorkflowManager; import org.theospi.portfolio.workflow.model.Workflow; import org.theospi.portfolio.workflow.model.WorkflowItem; public class WorkflowManagerImpl extends HibernateDaoSupport implements WorkflowManager { private AuthorizationFacade authorizationFacade; private SecurityService securityService; private EntityManager entityManager; private IdManager idManager; public Workflow createNew(String description, String siteId, Id securityQualifier, String securityViewFunction, String securityEditFunction) { // TODO Auto-generated method stub return null; } public Workflow getWorkflow(Id workflowId) { Workflow workflow = (Workflow)getHibernateTemplate().get(Workflow.class, workflowId); if (workflow == null) { return null; } /* if (workflow.getSecurityQualifier() != null) { getAuthorizationFacade().checkPermission(workflow.getSecurityViewFunction(), workflow.getSecurityQualifier()); } */ return workflow; } public Workflow saveWorkflow(Workflow workflow) { if (workflow.isNewObject()) { workflow.setNewId(workflow.getId()); workflow.setId(null); getHibernateTemplate().save(workflow); workflow.setNewObject(false); } else { getHibernateTemplate().saveOrUpdate(workflow); } return workflow; } public void deleteWorkflow(Workflow workflow) { //for(Iterator iter = workflow.getItems().iterator(); iter.hasNext();) { // WorkflowItem item = (WorkflowItem)iter.next(); // getHibernateTemplate().delete(item); //} workflow.getItems().clear(); getHibernateTemplate().delete(workflow); //getHibernateTemplate(). } public Reference decorateReference(Workflow workflow, String reference) { // TODO Auto-generated method stub return null; } public Workflow getWorkflow(String id) { return getWorkflow(getIdManager().getId(id)); } public Set createEvalWorkflows(ObjectWithWorkflow obj) { return createEvalWorkflows(obj, obj.getEvaluationDevice()); } public Set createEvalWorkflows(ObjectWithWorkflow obj, Id evalId) { if (obj instanceof WizardPageDefinition) return createEvalWorkflowsHelper(obj, evalId); else return createEvalWorkflowsWizard((Wizard)obj); } protected Set createEvalWorkflowsHelper(ObjectWithWorkflow wpd, Id eval) { Set workflows = wpd.getEvalWorkflows(); if (validEval(eval) && workflows.size() == 0) { Workflow w_none = new Workflow("No Workflow", wpd); Workflow w_complete = new Workflow("Complete Workflow", wpd); Workflow w_return = new Workflow("Return Workflow", wpd); Workflow w_returned = new Workflow("Returned Workflow", wpd); Id id = wpd.getId() != null ? wpd.getId() : wpd.getNewId(); w_complete.add(new WorkflowItem(WorkflowItem.STATUS_CHANGE_WORKFLOW, id, MatrixFunctionConstants.COMPLETE_STATUS)); w_return.add(new WorkflowItem(WorkflowItem.CONTENT_LOCKING_WORKFLOW, id, WorkflowItem.CONTENT_LOCKING_UNLOCK)); w_return.add(new WorkflowItem(WorkflowItem.STATUS_CHANGE_WORKFLOW, id, MatrixFunctionConstants.READY_STATUS)); w_returned.add(new WorkflowItem(WorkflowItem.CONTENT_LOCKING_WORKFLOW, id, WorkflowItem.CONTENT_LOCKING_UNLOCK)); w_returned.add(new WorkflowItem(WorkflowItem.STATUS_CHANGE_WORKFLOW, id, MatrixFunctionConstants.RETURNED_STATUS)); workflows.add(w_none); workflows.add(w_complete); workflows.add(w_return); workflows.add(w_returned); } else if (validEval(eval)) { workflows = new HashSet(); } return workflows; } protected boolean validEval(Id eval) { boolean retVal = false; if (eval != null && eval.getValue() != null && !eval.getValue().equals("")) { retVal = true; } return retVal; } protected Set createEvalWorkflowsWizard(Wizard wizard) { Set workflows = wizard.getEvalWorkflows(); Id eval = wizard.getEvaluationDevice(); /* for (Iterator iter = wizard.getSupportItems().iterator(); iter.hasNext();) { WizardSupportItem wsi = (WizardSupportItem)iter.next(); String type = wsi.getGenericType(); if (type.equals(WizardFunctionConstants.EVALUATION_TYPE)) { eval = wsi.getContentType(); break; } } */ if (validEval(eval) && workflows.size() == 0) { Workflow w_none = new Workflow("No Workflow", wizard); Workflow w_complete = new Workflow("Complete Workflow", wizard); Workflow w_return = new Workflow("Return Workflow", wizard); Workflow w_returned = new Workflow("Returned Workflow", wizard); Id id = wizard.getId() != null ? wizard.getId() : wizard.getNewId(); w_complete.add(new WorkflowItem(WorkflowItem.STATUS_CHANGE_WORKFLOW, id, MatrixFunctionConstants.COMPLETE_STATUS)); w_return.add(new WorkflowItem(WorkflowItem.CONTENT_LOCKING_WORKFLOW, id, WorkflowItem.CONTENT_LOCKING_UNLOCK)); w_return.add(new WorkflowItem(WorkflowItem.STATUS_CHANGE_WORKFLOW, id, MatrixFunctionConstants.READY_STATUS)); w_returned.add(new WorkflowItem(WorkflowItem.CONTENT_LOCKING_WORKFLOW, id, WorkflowItem.CONTENT_LOCKING_UNLOCK)); w_returned.add(new WorkflowItem(WorkflowItem.STATUS_CHANGE_WORKFLOW, id, MatrixFunctionConstants.RETURNED_STATUS)); workflows.add(w_none); workflows.add(w_complete); workflows.add(w_return); workflows.add(w_returned); } else if (!validEval(eval)) { workflows = new HashSet(); } return workflows; } /** * @return Returns the authorizationFacade. */ public AuthorizationFacade getAuthorizationFacade() { return authorizationFacade; } /** * @param authorizationFacade The authorizationFacade to set. */ public void setAuthorizationFacade(AuthorizationFacade authorizationFacade) { this.authorizationFacade = authorizationFacade; } /** * @return Returns the entityManager. */ public EntityManager getEntityManager() { return entityManager; } /** * @param entityManager The entityManager to set. */ public void setEntityManager(EntityManager entityManager) { this.entityManager = entityManager; } /** * @return Returns the idManager. */ public IdManager getIdManager() { return idManager; } /** * @param idManager The idManager to set. */ public void setIdManager(IdManager idManager) { this.idManager = idManager; } /** * @return Returns the securityService. */ public SecurityService getSecurityService() { return securityService; } /** * @param securityService The securityService to set. */ public void setSecurityService(SecurityService securityService) { this.securityService = securityService; } }