Create SVG in UI
[clamp.git] / src / main / java / org / onap / clamp / clds / util / XmlTools.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP CLAMP
4  * ================================================================================
5  * Copyright (C) 2019 Nokia. All rights
6  *                             reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END============================================
20  * ===================================================================
21  *
22  */
23
24 package org.onap.clamp.clds.util;
25
26 import java.io.StringWriter;
27 import javax.xml.XMLConstants;
28 import javax.xml.transform.OutputKeys;
29 import javax.xml.transform.Transformer;
30 import javax.xml.transform.TransformerException;
31 import javax.xml.transform.TransformerFactory;
32 import javax.xml.transform.dom.DOMSource;
33 import javax.xml.transform.stream.StreamResult;
34 import org.apache.batik.anim.dom.SVGDOMImplementation;
35 import org.apache.batik.dom.GenericDOMImplementation;
36 import org.apache.batik.util.SVGConstants;
37 import org.w3c.dom.DOMImplementation;
38 import org.w3c.dom.Document;
39
40 public class XmlTools {
41
42     /**
43      * Private constructor to avoid creating instances of util class.
44      */
45     private XmlTools(){
46     }
47
48     /**
49      * Transforms document to XML string.
50      *
51      * @param doc XML document
52      * @return XML string
53      */
54     public static String exportXmlDocumentAsString(Document doc) {
55         try {
56             TransformerFactory tf = TransformerFactory.newInstance();
57             tf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
58             Transformer transformer = tf.newTransformer();
59             transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
60             StringWriter writer = new StringWriter();
61             transformer.transform(new DOMSource(doc), new StreamResult(writer));
62             return writer.getBuffer().toString();
63         } catch (TransformerException e) {
64             throw new RuntimeException(e);
65         }
66     }
67
68     /**
69      * Creates empty svg document.
70      *
71      * @return Document
72      */
73     public static Document createEmptySvgDocument() {
74         DOMImplementation domImplementation = GenericDOMImplementation.getDOMImplementation();
75         String svgNs = SVGDOMImplementation.SVG_NAMESPACE_URI;
76         return domImplementation.createDocument(svgNs, SVGConstants.SVG_SVG_TAG, null);
77     }
78 }