com.pureinfo.srm.config.workflow.domain.WorkflowMgrImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.pureinfo.srm.config.workflow.domain.WorkflowMgrImpl.java

Source

/**
 * PureInfo Quake
 * @(#)WorkflowMgrImpl.java   1.0 Oct 14, 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.domain;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.dom4j.Element;

import com.pureinfo.force.exception.PureException;
import com.pureinfo.srm.config.workflow.model.WfProcess;
import com.pureinfo.srm.config.workflow.model.WfRole;

/**
 * <P>
 * Created on Oct 14, 2005 9:10:03 AM <BR>
 * Last modified on Oct 14, 2005
 * </P>
 * 
 * @author Freeman.Hu
 * @version 1.0, Oct 14, 2005
 * @since Quake 1.0
 */
public class WorkflowMgrImpl implements IWorkflowMgr {
    public final static String ELEMENT_ROLE = "role";

    public final static String ELEMENT_PROCESS = "process";

    public final static String ELEMENT_ROLES = "roles";

    public final static String ELEMENT_PROCESSES = "processes";

    private Map /* WfRole */ m_roles;

    private Map /* WfProcess */ m_processes;

    public WfRole getRole(String _sId) throws PureException {
        if (m_roles == null) {
            throw new PureException(PureException.UNKNOWN, "init role");
        }
        return (WfRole) m_roles.get(_sId);
    }

    public Map /* WfRole */ getRoles() throws PureException {
        if (m_roles == null) {
            throw new PureException(PureException.UNKNOWN, "init role");
        }
        return m_roles;
    }

    /**
     * @see com.pureinfo.srm.config.workflow.domain.IWorkflowMgr#loadRolesFromXML(org.dom4j.Element)
     */
    public void loadRolesFromXML(Element _element) throws PureException {
        m_roles = new HashMap();

        List roleEles = _element.elements(ELEMENT_ROLE);
        for (Iterator iter = roleEles.iterator(); iter.hasNext();) {
            Element roleEle = (Element) iter.next();
            WfRole role = new WfRole();
            role.fromXML(roleEle);
            m_roles.put(role.getName(), role);
        }
    }

    /**
     * @see com.pureinfo.srm.config.workflow.domain.IWorkflowMgr#storeRoleToXML(org.dom4j.Element)
     */
    public void storeRolesToXML(Element _element) throws PureException {
        if (m_roles == null) {
            throw new PureException(PureException.UNKNOWN, "init role");
        }

        for (Iterator iter = m_roles.keySet().iterator(); iter.hasNext();) {
            WfRole role = (WfRole) m_roles.get(iter.next());
            Element roleEle = _element.addElement(ELEMENT_ROLE);
            role.toXMLElement(roleEle);
        }
    }

    public void loadProcessesFromXML(Element _element) throws PureException {
        m_processes = new HashMap();
        List processEles = _element.elements(ELEMENT_PROCESS);
        for (Iterator iter = processEles.iterator(); iter.hasNext();) {
            Element processEle = (Element) iter.next();
            WfProcess process = new WfProcess();
            process.fromXML(processEle);
            m_processes.put(process.getName(), process);
        }
    }

    public void storeProcessesToXML(Element _element) throws PureException {
        if (m_roles == null) {
            throw new PureException(PureException.UNKNOWN, "init role");
        }

        for (Iterator iter = m_processes.keySet().iterator(); iter.hasNext();) {
            WfProcess process = (WfProcess) m_processes.get(iter.next());
            Element processEle = _element.addElement(ELEMENT_PROCESS);
            process.toXMLElement(processEle);
        }
    }

    /**
     * @see com.pureinfo.srm.config.workflow.domain.IWorkflowMgr#getProcess(java.lang.String)
     */
    public WfProcess getProcess(String _sName) throws PureException {
        if (m_processes == null) {
            throw new PureException(PureException.UNKNOWN, "init process");
        }
        return (WfProcess) m_processes.get(_sName);
    }

    public void setProcess(String _sName, WfProcess _process) throws PureException {
        if (m_processes == null) {
            throw new PureException(PureException.UNKNOWN, "init process");
        }
        if (_process.getActivities().size() == 0) {
            m_processes.remove(_process.getName());
        } else {
            m_processes.put(_sName, _process);
        }
    }

    /**
     * @see com.pureinfo.srm.config.workflow.domain.IWorkflowMgr#loadWorkflow(org.dom4j.Element)
     */
    public void loadWorkflow(Element _element) throws PureException {
        loadRolesFromXML(_element.element(ELEMENT_ROLES));
        loadProcessesFromXML(_element.element(ELEMENT_PROCESSES));
    }

    /**
     * @see com.pureinfo.srm.config.workflow.domain.IWorkflowMgr#storeWorkflow(org.dom4j.Element)
     */
    public void storeWorkflow(Element _element) throws PureException {
        storeRolesToXML(_element.addElement(ELEMENT_ROLES));
        storeProcessesToXML(_element.addElement(ELEMENT_PROCESSES));
    }

    /**
     * @see com.pureinfo.srm.config.workflow.domain.IWorkflowMgr#getProcesses()
     */
    public Map getProcesses() throws PureException {
        return m_processes;
    }
}