package edu.harvard.i2b2.ontology.util;
import java.io.Writer;
import java.sql.ResultSet;
import javax.xml.stream.XMLEventFactory;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartDocument;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
public abstract class PatientDataXMLWriterUtil {
protected Writer conceptWriter;
protected XMLEventWriter eventWriter;
protected XMLEventFactory eventFactory = XMLEventFactory.newInstance();
public void startDocument() throws XMLStreamException {
StartDocument startDocument = eventFactory.createStartDocument();
eventFactory.createStartDocument("UTF", "1.0", true);
eventWriter.setPrefix("ns1", "http://www.i2b2.org/xsd/hive/pdo/1.1/");
eventWriter.add(startDocument);
XMLEvent end = eventFactory.createCharacters("\n");
eventWriter.add(end);
StartElement patientDataStartElement = eventFactory.createStartElement(
"", "ns1", "patient_data");
eventWriter.add(patientDataStartElement);
eventWriter.add(end);
}
public void endDocument() throws XMLStreamException {
EndElement patientDataEndElement = eventFactory.createEndElement("",
"ns1", "patient_data");
// XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
// Create XMLEventWriter
// eventWriter = outputFactory.createXMLEventWriter(conceptWriter);
eventWriter.add(patientDataEndElement);
eventWriter.add(eventFactory.createEndDocument());
eventWriter.close();
}
protected void createNode(XMLEventWriter eventWriter, String name,
String value) throws XMLStreamException {
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createCharacters("\n");
XMLEvent tab = eventFactory.createCharacters("\t");
// Create Start node
StartElement sElement = eventFactory.createStartElement("", "", name);
eventWriter.add(tab);
eventWriter.add(sElement);
// Create Content
Characters characters = eventFactory.createCharacters(value);
eventWriter.add(characters);
// Create End node
EndElement eElement = eventFactory.createEndElement("", "", name);
eventWriter.add(eElement);
eventWriter.add(end);
}
public abstract void startSet() throws XMLStreamException;
public abstract void endSet() throws XMLStreamException;
public abstract void buildConcept(ResultSet conceptResultSet)
throws Exception;
public static XMLEventWriter createXMLEventWriter(Writer writer)
throws XMLStreamException {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
// Create XMLEventWriter
return outputFactory.createXMLEventWriter(writer);
}
}