⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jaxp_fpdl_serializer.java

📁 Fire-Workflow-Engine-All-In-One-20090208 包含全部文档
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/** * Copyright 2003-2008 陈乜云(非也,Chen Nieyun) * All rights reserved.  *  * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation。 * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses. * */package org.fireflow.model.io;import java.io.BufferedWriter;import java.io.IOException;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.Writer;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Properties;import java.util.logging.Level;import java.util.logging.Logger;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.fireflow.model.DataField;import org.fireflow.model.Duration;import org.fireflow.model.EventListener;import org.fireflow.model.Task;import org.fireflow.model.WorkflowProcess;import org.fireflow.model.net.Activity;import org.fireflow.model.net.EndNode;import org.fireflow.model.net.StartNode;import org.fireflow.model.net.Synchronizer;import org.fireflow.model.net.Transition;import org.fireflow.model.reference.Application;import org.fireflow.model.reference.Form;import org.fireflow.model.reference.Participant;import org.fireflow.model.reference.SubWorkflowProcess;import org.w3c.dom.Document;import org.w3c.dom.Element;/** * * @author chennieyun */public class JAXP_FPDL_Serializer implements FPDLNames {    String encoding = "UTF-8";    protected void serialize(WorkflowProcess workflowProcess, Writer out)            throws IOException, FPDLSerializerException {        try {            Document document = workflowProcessToDom(workflowProcess);            DOMSource doms = new DOMSource(document);                        StreamResult result = new StreamResult(new BufferedWriter(out));                        TransformerFactory tf = TransformerFactory.newInstance();            tf.setAttribute("indent-number", new Integer(2));            Transformer transformer = tf.newTransformer();            Properties properties = transformer.getOutputProperties();            properties.setProperty(OutputKeys.ENCODING, encoding);            properties.setProperty(OutputKeys.METHOD, "xml");            properties.setProperty(OutputKeys.INDENT, "yes");            properties.setProperty(OutputKeys.DOCTYPE_PUBLIC, PUBLIC_ID);            properties.setProperty(OutputKeys.DOCTYPE_SYSTEM, SYSTEM_ID);            transformer.setOutputProperties(properties);            transformer.transform(doms, result);        } catch (TransformerException ex) {            Logger.getLogger(JAXP_FPDL_Serializer.class.getName()).log(Level.SEVERE, null, ex);        }    }    public void serialize(WorkflowProcess workflowProcess, OutputStream out)            throws IOException, FPDLSerializerException {        serialize(workflowProcess,new OutputStreamWriter(out,encoding));        /*        try {            Document document = workflowProcessToDom(workflowProcess);            DOMSource doms = new DOMSource(document);            StreamResult result = new StreamResult(new BufferedWriter(new OutputStreamWriter(out)));            TransformerFactory tf = TransformerFactory.newInstance();            tf.setAttribute("indent-number", new Integer(2));            Transformer transformer = tf.newTransformer();            Properties properties = transformer.getOutputProperties();            properties.setProperty(OutputKeys.ENCODING, encoding);            properties.setProperty(OutputKeys.METHOD, "xml");            properties.setProperty(OutputKeys.INDENT, "yes");            properties.setProperty(OutputKeys.DOCTYPE_PUBLIC, PUBLIC_ID);            properties.setProperty(OutputKeys.DOCTYPE_SYSTEM, SYSTEM_ID);            transformer.setOutputProperties(properties);            transformer.transform(doms, result);        } catch (TransformerException ex) {            Logger.getLogger(JAXP_FPDL_Serializer.class.getName()).log(Level.SEVERE, null, ex);        }         */    }    public Document workflowProcessToDom(WorkflowProcess workflowProcess)            throws FPDLSerializerException {        DocumentBuilder docBuilder = null;        try {            docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();        } catch (ParserConfigurationException ex) {            Logger.getLogger(JAXP_FPDL_Serializer.class.getName()).log(Level.SEVERE, null, ex);            throw new FPDLSerializerException(ex.getMessage());        }        Document document = docBuilder.newDocument();        Element workflowProcessElement = document.createElementNS(FPDL_URI, WORKFLOW_PROCESS);        workflowProcessElement.setPrefix(FPDL_NS_PREFIX);//                workflowProcessElement.setAttributeNS(XSD_URI, NAME, XSD_URI)//        workflowProcessElement.addNamespace(FPDL_NS_PREFIX, FPDL_URI);//        workflowProcessElement.addNamespace(XSD_NS_PREFIX, XSD_URI);//        workflowProcessElement.addNamespace(XSI_NS_PREFIX, XSI_URI);        workflowProcessElement.setAttribute(ID, workflowProcess.getId());        workflowProcessElement.setAttribute(NAME, workflowProcess.getName());        workflowProcessElement.setAttribute(DISPLAY_NAME, workflowProcess.getDisplayName());        workflowProcessElement.setAttribute(RESOURCE_FILE, workflowProcess.getResourceFile());        workflowProcessElement.setAttribute(RESOURCE_MANAGER, workflowProcess.getResourceManager());        document.appendChild(workflowProcessElement);        Util4JAXPSerializer.addElement(document, workflowProcessElement, DESCRIPTION,                workflowProcess.getDescription());        writeDataFields(workflowProcess.getDataFields(), workflowProcessElement, document);        writeStartNode(workflowProcess.getStartNode(), workflowProcessElement, document);        writeActivities(workflowProcess.getActivities(), workflowProcessElement, document);        writeSynchronizers(workflowProcess.getSynchronizers(),                workflowProcessElement, document);        writeEndNodes(workflowProcess.getEndNodes(), workflowProcessElement, document);        writeTransitions(workflowProcess.getTransitions(),                workflowProcessElement, document);        writeEventListeners(workflowProcess.getEventListeners(), workflowProcessElement, document);        writeExtendedAttributes(workflowProcess.getExtendedAttributes(),                workflowProcessElement, document);//        Document document = df.createDocument(workflowProcessElement);//        document.addDocType(WORKFLOW_PROCESS, this.PUBLIC_ID, this.SYSTEM_ID);        return document;    }    public String getEncoding() {        return encoding;    }    public void setEncoding(String encoding) {        this.encoding = encoding;    }    protected void writeEventListeners(List eventListeners, Element parentElement, Document document) {        if (eventListeners == null || eventListeners.size() == 0) {            return;        }        Element eventListenersElm =                Util4JAXPSerializer.addElement(document, parentElement,                EVENT_LISTENERS);        for (int i = 0; i < eventListeners.size(); i++) {            EventListener listener = (EventListener) eventListeners.get(i);            Element eventListenerElm = Util4JAXPSerializer.addElement(document,                    eventListenersElm, EVENT_LISTENER);            eventListenerElm.setAttribute(CLASS_NAME, listener.getClassName());        }    }    protected void writeDataFields(List dataFields, Element parent, Document document)            throws FPDLSerializerException {        if (dataFields == null || dataFields.size() == 0) {            return;        }        Element dataFieldsElement = Util4JAXPSerializer.addElement(document, parent,                DATA_FIELDS);        Iterator iter = dataFields.iterator();        while (iter.hasNext()) {            DataField dataField = (DataField) iter.next();            Element dataFieldElement = Util4JAXPSerializer.addElement(document,                    dataFieldsElement, DATA_FIELD);            dataFieldElement.setAttribute(ID, dataField.getId());            dataFieldElement.setAttribute(NAME, dataField.getName());            dataFieldElement.setAttribute(DISPLAY_NAME, dataField.getDisplayName());            dataFieldElement.setAttribute(DATA_TYPE, dataField.getDataType());            dataFieldElement.setAttribute(INITIAL_VALUE,                    dataField.getInitialValue());            Util4JAXPSerializer.addElement(document, dataFieldElement, DESCRIPTION, dataField.getDescription());            writeExtendedAttributes(dataField.getExtendedAttributes(),                    dataFieldElement, document);        }    }    protected void writeEndNodes(List endNodes, Element parent, Document document) {        Element endNodesElement = Util4JAXPSerializer.addElement(document, parent, END_NODES);        Iterator iter = endNodes.iterator();        while (iter.hasNext()) {            writeEndNode((EndNode) iter.next(), endNodesElement, document);        }    }    protected void writeEndNode(EndNode endNode, Element parent, Document document) {        Element endNodeElement = Util4JAXPSerializer.addElement(document, parent, END_NODE);        endNodeElement.setAttribute(ID, endNode.getId());        endNodeElement.setAttribute(NAME, endNode.getName());        endNodeElement.setAttribute(DISPLAY_NAME, endNode.getDisplayName());        Util4JAXPSerializer.addElement(document, endNodeElement, DESCRIPTION, endNode.getDescription());        writeExtendedAttributes(endNode.getExtendedAttributes(), endNodeElement, document);    }    protected void writeStartNode(StartNode startNode, Element parent, Document document)            throws FPDLSerializerException {        if (startNode == null) {            return;        }        Element startElement = Util4JAXPSerializer.addElement(document, parent, START_NODE);

⌨️ 快捷键说明

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