package org.vaadin.mideaas.editor;
import java.io.ByteArrayOutputStream;
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.w3c.dom.Document;
import org.w3c.dom.Element;
public class ClaraXmlUtil {
public static String createHelloWorld(String layoutClass, String message) {
try {
Document doc = createEmptyDoc();
Element root = doc.createElement(layoutClass);
root.setAttribute("xmlns", "urn:import:com.vaadin.ui");
root.setAttribute("id", "layout1");
//root.setAttribute("xmlns:tk", "urn:import:com.vaadin.addon.touchkit.ui");
doc.appendChild(root);
Element label = doc.createElement("Label");
label.setAttribute("id", "label1");
label.setAttribute("value", message);
root.appendChild(label);
Element button = doc.createElement("Button");
button.setAttribute("id", "button1");
button.setAttribute("caption", "Click here");
root.appendChild(button);
return docToString(doc);
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null; // XXX
}
private static Document createEmptyDoc() throws ParserConfigurationException {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
Document doc = docFactory.newDocumentBuilder().newDocument();
doc.setXmlVersion("1.0");
return doc;
}
private static String docToString(Document doc) throws TransformerException {
DOMSource source = new DOMSource(doc);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
StreamResult result = new StreamResult(stream);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
transformer.transform(source, result);
return stream.toString();
}
}