TurtleDB
A mini distributed database system
src/ca/uqac/dim/turtledb/XmlQueryFormatter.java
Go to the documentation of this file.
00001 /*-------------------------------------------------------------------------
00002     Simple distributed database engine
00003     Copyright (C) 2012  Sylvain Hallé
00004 
00005     This program is free software: you can redistribute it and/or modify
00006     it under the terms of the GNU General Public License as published by
00007     the Free Software Foundation, either version 3 of the License, or
00008     (at your option) any later version.
00009 
00010     This program is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013     GNU General Public License for more details.
00014 
00015     You should have received a copy of the GNU General Public License
00016     along with this program.  If not, see <http://www.gnu.org/licenses/>.
00017  -------------------------------------------------------------------------*/
00018 package ca.uqac.dim.turtledb;
00019 
00020 import java.io.StringWriter;
00021 import javax.xml.transform.*;
00022 import javax.xml.transform.dom.DOMSource;
00023 import javax.xml.transform.stream.StreamResult;
00024 import org.w3c.dom.*;
00025 
00036 public class XmlQueryFormatter
00037 {
00043   public static Document toXmlDocument(Relation q)
00044   {
00045     XmlQueryVisitor v = new XmlQueryVisitor();
00046     try
00047     {
00048       q.accept(v);
00049     }
00050     catch (EmptyQueryVisitor.VisitorException e)
00051     {
00052       e.printStackTrace();
00053     }
00054     return v.getDocument();
00055   }
00056   
00063   public static String toXmlString(Relation q)
00064   {
00065     Document doc = toXmlDocument(q);
00066     try
00067     {
00068        DOMSource domSource = new DOMSource(doc);
00069        StringWriter writer = new StringWriter();
00070        StreamResult result = new StreamResult(writer);
00071        TransformerFactory tf = TransformerFactory.newInstance();
00072        tf.setAttribute("indent-number", new Integer(2));
00073        Transformer transformer = tf.newTransformer();
00074        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
00075        transformer.transform(domSource, result);
00076        return writer.toString();
00077     }
00078     catch(TransformerException ex)
00079     {
00080        ex.printStackTrace();
00081        return null;
00082     }
00083   }
00084 }