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