org.jboss.tools.jbpm.convert.bpmnto.util.DomXmlWriter.java Source code

Java tutorial

Introduction

Here is the source code for org.jboss.tools.jbpm.convert.bpmnto.util.DomXmlWriter.java

Source

/******************************************************************************* 
 * Copyright (c) 2008 Red Hat, Inc. 
 * Distributed under license by Red Hat, Inc. All rights reserved. 
 * This program is made available under the terms of the 
 * Eclipse Public License v1.0 which accompanies this distribution, 
 * and is available at http://www.eclipse.org/legal/epl-v10.html 
 * 
 * Contributors: 
 * Red Hat, Inc. - initial API and implementation 
 ******************************************************************************/

package org.jboss.tools.jbpm.convert.bpmnto.util;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.*;
import org.dom4j.io.*;

/**
 * @author Grid Qian
 * 
 *         this is for generating dom element or attribute
 */
public class DomXmlWriter {

    /*
     * map a dom document to a string
     */
    public static String toString(Document document) throws IOException {
        OutputFormat outputFormat = new OutputFormat("  ", true);
        Writer writer = new StringWriter();
        XMLWriter xmlWriter = new XMLWriter(writer, outputFormat);
        xmlWriter.write(document);
        xmlWriter.flush();
        writer.flush();
        return writer.toString();
    }

    /*
     * create a dom tree
     */
    public static Document createDomTree(boolean useNamespace, String url, String rootElementName) {
        Document document = DocumentHelper.createDocument();
        Element root = null;

        if (useNamespace) {
            Namespace jbpmNamespace = new Namespace(null, url);
            root = document.addElement(rootElementName, jbpmNamespace.getURI());
        } else {
            root = document.addElement(rootElementName);
        }
        root.addText(System.getProperty("line.separator"));

        return document;
    }

    /*
     * add a new element to a dom element
     */
    public static Element addElement(Element element, String elementName) {
        Element newElement = element.addElement(elementName);
        return newElement;
    }

    /*
     * add a new element to the location of a dom element
     */
    @SuppressWarnings("unchecked")
    public static Element addElement(Element element, String elementName, int location) {
        Element newElement = null;
        if (element.elements(elementName) != null && element.elements(elementName).size() > location
                && location >= 0) {
            newElement = DocumentHelper.createElement(elementName);
            element.elements(elementName).add(location, newElement);
        }
        return newElement;
    }

    /*
     * add a attribute to a dom element
     */
    public static void addAttribute(Element e, String attributeName, String value) {
        if (value != null) {
            e.addAttribute(attributeName, value);
        }
    }

    /*
     * get a named element from a element (any depth)
     */
    public static List<Element> getElementsByName(Element element, String name) {
        List<Element> list = new ArrayList<Element>();
        for (Object ele : element.elements()) {
            if (name.equals(((Element) ele).getName())) {
                list.add((Element) ele);
            }
            list.addAll(getElementsByName((Element) ele, name));
        }
        return list;
    }

    /*
     * set a element attribute using a same name attribute of other element
     */
    public static void mapAttribute(Element ele, String attrName, Element sourceEle) {
        DomXmlWriter.addAttribute(ele, attrName, sourceEle.attributeValue(attrName));
    }

}