Java tutorial
/** * PureInfo Quake * @(#)WorkflowConfigAction.java 1.0 Oct 13, 2005 * * Copyright(c) 2004-2005, PureInfo Information Technology Corp. Ltd. * All rights reserved, see the license file. * * www.pureinfo.com.cn */ package com.pureinfo.srm.config.workflow.action; import java.util.HashMap; import java.util.Map; import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.struts.action.ActionForward; import com.pureinfo.ark.interaction.ActionBase; import com.pureinfo.force.exception.PureException; import com.pureinfo.srm.config.workflow.WorkflowHelper; import com.pureinfo.srm.config.workflow.model.WfActivity; import com.pureinfo.srm.config.workflow.model.WfProcess; /** * <P> * Created on Oct 13, 2005 8:26:57 PM <BR> * Last modified on Oct 13, 2005 * </P> * * @author Freeman.Hu * @version 1.0, Oct 13, 2005 * @since Quake 1.0 */ public class WorkflowConfigAction extends ActionBase { private static Logger logger = Logger.getLogger(WorkflowConfigAction.class); /** * @see com.pureinfo.ark.interaction.ActionBase#executeAction() */ public ActionForward executeAction() throws PureException { String sAction = request.getParameter("action"); String procStr = request.getParameter("processes"); if (logger.isInfoEnabled()) { logger.info(procStr); } if (procStr == null) { procStr = ""; logger.warn("parameter processes is null"); } String[] processes = StringUtils.split(procStr, ','); if (sAction == null || sAction.equals("")) { logger.info("set work select!"); for (int i = 0; i < processes.length; i++) { String sName = processes[i]; WfProcess process = WorkflowHelper.getProcess(sName); if (process == null) { request.setAttribute(sName, "0"); request.setAttribute(sName + "$edit", ""); request.setAttribute(sName + "$directAdd", ""); request.setAttribute(sName + "$firstCheck", ""); request.setAttribute(sName + "$lastCheck", ""); } else { request.setAttribute(sName, process.getType()); setRoles(process, sName, "edit"); setRoles(process, sName, "directAdd"); setRoles(process, sName, "firstCheck"); setRoles(process, sName, "lastCheck"); } } } else if (sAction.equals("set")) { logger.info("set work flow!"); for (int i = 0; i < processes.length; i++) { String sName = processes[i]; WfProcess process = new WfProcess(sName); Map acts = new HashMap(); String sType = request.getParameter(sName); process.setType(sType); int nType = Integer.parseInt(sType); request.setAttribute(sName, sType); switch (nType) { case 2: addAct(acts, sName, "lastCheck"); case 1: addAct(acts, sName, "edit"); addAct(acts, sName, "firstCheck"); case 0: addAct(acts, sName, "directAdd"); } process.setActities(acts); WorkflowHelper.updateProcess(process); } WorkflowHelper.store(); request.setAttribute("success", "true"); } String sForward = request.getParameter("forward"); return mapping.findForward(sForward); } private void addAct(Map _acts, String _sProcessName, String _sActName) throws PureException { String sName = _sProcessName + "$" + _sActName; String sValue = request.getParameter(sName); request.setAttribute(sName, sValue); if (!sValue.equals("")) { if (sValue == null) { sValue = ""; logger.warn("parameter " + _sProcessName + "$" + _sActName + " is null"); } WfActivity act = new WfActivity(_sActName); act.setRoles(sValue); _acts.put(_sActName, act); } } private void setRoles(WfProcess _process, String _sProcessName, String _sActName) { WfActivity act = (WfActivity) _process.getActivities().get(_sActName); if (act == null) { request.setAttribute(_sProcessName + "$" + _sActName, ""); } else { Set names = act.getRoles().keySet(); request.setAttribute(_sProcessName + "$" + _sActName, StringUtils.join(names.iterator(), ',')); } } }