com.pureinfo.srm.config.workflow.action.WorkflowConfigAction.java Source code

Java tutorial

Introduction

Here is the source code for com.pureinfo.srm.config.workflow.action.WorkflowConfigAction.java

Source

/**
 * 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(), ','));
        }
    }
}