processserviceimpl.java

来自「xiorkflow工作流源码 是一个java开发的工作流源码」· Java 代码 · 共 258 行

JAVA
258
字号
package name.xio.xiorkflow.domain.logic;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import name.xio.util.PathUtil;
import name.xio.util.SingleIOFilenameFilter;
import name.xio.xiorkflow.domain.Process;
import name.xio.xiorkflow.domain.ProcessResult;
import name.xio.xml.SimpleXMLWorkShop;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdom.Document;
import org.jdom.JDOMException;

public class ProcessServiceImpl implements ProcessService {

    public ProcessServiceImpl() {
        this.setWebAppRootKey(ProcessServiceImpl.WEB_APP_ROOT_KEY);
        this.setBaseDirName(ProcessServiceImpl.BASE_DIR_NAME);
        this.setDefaultFileName(ProcessServiceImpl.DEFAULT_FILE_NAME);
        this.setFileType(ProcessServiceImpl.FILE_TYPE);
    }

    public List listProcess() {
        File baseDir = new File(this.getWebAppRoot(), this.getBaseDirName());
        File[] files = baseDir.listFiles(new SingleIOFilenameFilter(this
                .getFileType()));

        List list = new ArrayList();
        for (int i = 0; i < files.length; i++) {
            File file = files[i];
            list.add(file);
        }

        return list;
    }

    public ProcessResult getProcess(String name) {
        ProcessResult result = new ProcessResult();

        File baseDir = new File(this.getWebAppRoot(), this.getBaseDirName());
        File file = new File(baseDir, name + PathUtil.SEPARATOR_FORMAT
                + this.getFileType());

        if (!file.exists()) {
            result.setStatus(ProcessService.FILE_NOT_FOUND);
            return result;
        }

        Process process = new Process();
        process.setName(name);
        try {
            process.setDoc(SimpleXMLWorkShop.file2Doc(file));
        } catch (IOException e) {
            result.setStatus(ProcessService.IO_ERROR);
            result.setMes(e.getMessage());
            process = null;
            log.warn("io error on getprocess:" + e.getMessage());
        } catch (JDOMException e) {
            result.setStatus(ProcessService.XML_PARSER_ERROR);
            result.setMes(e.getMessage());
            process = null;
            log.warn("jdom error on getprocess:" + e.getMessage());
        }

        result.setProcess(process);

        return result;
    }

    public ProcessResult addProcess(Process process) {
        ProcessResult result = new ProcessResult();

        File baseDir = new File(this.getWebAppRoot(), this.getBaseDirName());
        File file = new File(baseDir, process.getName()
                + PathUtil.SEPARATOR_FORMAT + this.getFileType());

        if (file.exists()) {
            result.setStatus(ProcessService.FILE_EXIST);
            return result;
        }

        Document doc = process.getDoc();

        try {
            SimpleXMLWorkShop.outputXML(doc, file);
        } catch (FileNotFoundException e) {
            result.setStatus(ProcessService.FILE_NOT_FOUND);
            result.setMes(e.getMessage());
            log.warn("file not found on addprocess:" + e.getMessage());
            return result;
        } catch (IOException e) {
            result.setStatus(ProcessService.IO_ERROR);
            result.setMes(e.getMessage());
            log.warn("io error on addprocess:" + e.getMessage());
            return result;
        }

        result.setStatus(ProcessService.SUCCESS);

        return result;
    }

    public ProcessResult deleteProcess(Process process) {
        ProcessResult result = new ProcessResult();

        File baseDir = new File(this.getWebAppRoot(), this.getBaseDirName());
        File file = new File(baseDir, process.getName()
                + PathUtil.SEPARATOR_FORMAT + this.getFileType());

        if (!file.exists()) {
            result.setStatus(ProcessService.FILE_NOT_FOUND);
            return result;
        }

        if (file.delete()) {
            result.setStatus(ProcessService.SUCCESS);
        }
        else {
            result.setStatus(ProcessService.FAIL);
        }

        return result;
    }

    public ProcessResult updateProcess(Process process) {
        ProcessResult result = new ProcessResult();

        File baseDir = new File(this.getWebAppRoot(), this.getBaseDirName());
        File file = new File(baseDir, process.getName()
                + PathUtil.SEPARATOR_FORMAT + this.getFileType());

        if (!file.exists()) {
            result.setStatus(ProcessService.FILE_NOT_FOUND);
            return result;
        }

        Document doc = process.getDoc();

        try {
            SimpleXMLWorkShop.outputXML(doc, file);
        } catch (FileNotFoundException e) {
            result.setStatus(ProcessService.FILE_NOT_FOUND);
            result.setMes(e.getMessage());
            log.warn("file not found on updateprocess:" + e.getMessage());
            return result;
        } catch (IOException e) {
            result.setStatus(ProcessService.IO_ERROR);
            result.setMes(e.getMessage());
            log.warn("io error on updateprocess:" + e.getMessage());
            return result;
        }

        result.setStatus(ProcessService.SUCCESS);

        return result;
    }

    /**
     * @return Returns the baseDirName.
     */
    public String getBaseDirName() {
        return baseDirName;
    }

    /**
     * @param baseDirName The baseDirName to set.
     */
    public void setBaseDirName(String baseDirName) {
        this.baseDirName = baseDirName;
    }

    /**
     * @return Returns the defaultFileName.
     */
    public String getDefaultFileName() {
        return this.defaultFileName;
    }

    /**
     * @param defaultFileName The defaultFileName to set.
     */
    public void setDefaultFileName(String defaultFileName) {
        this.defaultFileName = defaultFileName;
    }

    /**
     * @return Returns the fileType.
     */
    public String getFileType() {
        return this.fileType;
    }

    /**
     * @param fileType The fileType to set.
     */
    public void setFileType(String fileType) {
        this.fileType = fileType;
    }

    /**
     * @return Returns the webAppRoot.
     */
    public String getWebAppRoot() {
        return this.webAppRoot;
    }

    /**
     * @param webAppRoot The webAppRoot to set.
     */
    public void setWebAppRoot(String webAppRoot) {
        this.webAppRoot = webAppRoot;
    }

    /**
     * @return Returns the webAppRootKey.
     */
    public String getWebAppRootKey() {
        return this.webAppRootKey;
    }

    /**
     * @param webAppRootKey The webAppRootKey to set.
     */
    public void setWebAppRootKey(String webAppRootKey) {
        this.webAppRootKey = webAppRootKey;
        this.setWebAppRoot(System.getProperty(this.getWebAppRootKey()));
    }

    private Log log = LogFactory.getLog(ProcessServiceImpl.class);

    public final static String WEB_APP_ROOT_KEY = "xiorkflow.root";

    public final static String BASE_DIR_NAME = "processes";

    public final static String DEFAULT_FILE_NAME = "default";

    public final static String FILE_TYPE = "xml";

    //
    private String webAppRootKey;

    private String baseDirName;

    private String defaultFileName;

    private String fileType;

    //
    private String webAppRoot;

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?