package com.oa.dao.impl; import java.io.FileNotFoundException; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Component; import com.oa.dao.WorkFlowDao; import com.oa.extend.JbpmCore; import com.oa.model.Users; import com.oa.model.WorkFlow; @Component("workFlowDao") public class WorkFlowDaoImp implements WorkFlowDao { private SuperDao superDao; private JbpmCore jbpmCore; public Serializable addWorkFlow(String processDefinition, String processImage) throws FileNotFoundException { String workFlowName = jbpmCore .deployProcessDefinition(processDefinition); WorkFlow wf= (WorkFlow) superDao.check("from WorkFlow w where w.name= ?",new Object[]{workFlowName}); if(wf == null){ wf = new WorkFlow(); wf.setName(workFlowName); wf.setProcessDefinition(processDefinition); wf.setProcessImage(processImage); } return superDao.add(wf); } // public void addOrUpdateWorkflow(String processDef,String processImage) throws FileNotFoundException { // String workflowName = jbpmCore.deployProcessDefinition(processDef); // //首先根据流程名称,查询是否已有Workflow对象 //// Workflow wf = (Workflow)getSession().createQuery("select w from Workflow w where w.name = ?") //// .setParameter(0, workflowName) //// .uniqueResult(); // System.out.println(workflowName+"++++++++++++++"); // //// Users login=userService.login("from Users u where u.account = ? and u.password= ?", new Object[]{user.getAccount(),user.getPassword()}); // // WorkFlow wf= (WorkFlow) superDao.check("from WorkFlow w where w.name= ?",new Object[]{workflowName}); //// System.out.println("workflowDaoImp +"+wf.toString()); // if(wf == null){ // wf = new WorkFlow(); // wf.setName(workflowName); // wf.setProcessDefinition(processDef); // wf.setProcessImage(processImage); //// getHibernateTemplate().save(wf); // superDao.add(wf); // }else{ // wf.setProcessDefinition(processDef); // wf.setProcessImage(processImage); //// getHibernateTemplate().update(wf); // superDao.update(wf); // } // } public void updateWorkFlow(String processDefinition, String processImage,int id) { String workFlowName = ""; try { workFlowName = jbpmCore.deployProcessDefinition(processDefinition); } catch (FileNotFoundException e) { e.printStackTrace(); } // 首先根据流程名称,查询是否已有Workflow对象 // WorkFlow wf = (WorkFlow) superDao.select( // "from WorkFlow w where w.name= " + workFlowName).get(0); WorkFlow wf=new WorkFlow(); wf.setId(id); // if(wf !=null){ wf.setProcessDefinition(processDefinition); wf.setProcessImage(processImage); superDao.update(wf); // } } public void deleteWorkFlow(WorkFlow workFlow) { jbpmCore.delProcessDefinition(workFlow.getName()); superDao.delete(workFlow); } public WorkFlow getWorkFlow(Class clazz,Serializable id){ return (WorkFlow) superDao.select(clazz, id); } public WorkFlow findWorkFlow(Class clazz, Serializable id) { return (WorkFlow) superDao.select(clazz, id); } public List<WorkFlow> getAllWorkFlows(Class clazz, String hql) { return ObjectToWorkFlow(superDao.getAllObjects(clazz, hql)); } private List<WorkFlow> ObjectToWorkFlow(List<Object> lists) { List<WorkFlow> workFlows = new ArrayList<WorkFlow>(); for (Object o : lists) { workFlows.add((WorkFlow) o); } return workFlows; } public List<WorkFlow> getPageWorkFlows(int index, Class clazz, String hql) { return ObjectToWorkFlow(superDao.getPage(index, clazz, hql)); } public SuperDao getSuperDao() { return superDao; } @Resource public void setSuperDao(SuperDao superDao) { this.superDao = superDao; } public JbpmCore getJbpmCore() { return jbpmCore; } @Resource public void setJbpmCore(JbpmCore jbpmCore) { this.jbpmCore = jbpmCore; } }