--- /dev/null
+package org.simantics.xml.sax.base;\r
+\r
+import java.io.File;\r
+import java.io.FileOutputStream;\r
+import java.io.IOException;\r
+\r
+import javax.xml.stream.XMLOutputFactory;\r
+import javax.xml.stream.XMLStreamException;\r
+import javax.xml.stream.XMLStreamWriter;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.Session;\r
+import org.simantics.db.common.request.ReadRequest;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.message.ILogger;\r
+import org.simantics.message.MessageService;\r
+\r
+public class AbstractExporter {\r
+ \r
+ private Session session;\r
+ private File file;\r
+ private ILogger logger;\r
+ private Resource root;\r
+ private XMLWriter xmlWriter;\r
+ \r
+ public AbstractExporter(Session session, File file , Resource root, XMLWriter xmlWriter) {\r
+ this.session = session;\r
+ this.file = file;\r
+ this.root = root;\r
+ this.xmlWriter = xmlWriter;\r
+ }\r
+ \r
+ public AbstractExporter(Session session, File file , Resource root) {\r
+ this.session = session;\r
+ this.file = file;\r
+ this.root = root;\r
+ }\r
+ \r
+ public void setXmlWriter(XMLWriter xmlWriter) {\r
+ this.xmlWriter = xmlWriter;\r
+ }\r
+ \r
+ public void doExport() throws DatabaseException {\r
+ doExport(MessageService.getDefault()); \r
+ }\r
+ \r
+ public void doExport(ILogger logger) throws DatabaseException {\r
+ ExportRequest req = new ExportRequest();\r
+ session.syncRequest(req);\r
+ }\r
+ \r
+ \r
+ private class ExportRequest extends ReadRequest {\r
+ @Override\r
+ public void run(ReadGraph graph) throws DatabaseException {\r
+ XMLStreamWriter writer = null;\r
+ try {\r
+ XMLOutputFactory output = XMLOutputFactory.newInstance();\r
+ writer = output.createXMLStreamWriter(new FileOutputStream(file),"UTF-8");\r
+ writer.writeStartDocument("UTF-8", "1.0");\r
+ xmlWriter.write(root, writer);\r
+ \r
+ writer.writeEndDocument();\r
+ writer.close();\r
+ } catch (IOException|XMLStreamException e) {\r
+ try {\r
+ writer.close();\r
+ } catch (XMLStreamException err) {\r
+ \r
+ }\r
+ throw new DatabaseException(e);\r
+ } \r
+ \r
+ \r
+ }\r
+ }\r
+\r
+}\r