package edu.harvard.i2b2.ontology.util;
import java.sql.ResultSet;
import java.util.Date;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
import edu.harvard.i2b2.common.util.jaxb.DTOFactory;
/**
* StAX class to write concept set of the PatientData Object.
*
* @author rkuttan
*
*/
public class ConceptXMLWriterUtil extends PatientDataXMLWriterUtil {
private Date updateDate, downloadDate;
private String sourceSystemCd;
private DTOFactory dtoFactory = new DTOFactory();
// XMLEventFactory eventFactory = XMLEventFactory.newInstance();
public ConceptXMLWriterUtil(XMLEventWriter eventWriter)
throws XMLStreamException {
this.eventWriter = eventWriter;
}
@Override
public void startSet() throws XMLStreamException {
// Create and write Start Tag
StartElement conceptSetStartElement = eventFactory.createStartElement(
"", "ns1", "concept_set");
eventWriter.add(conceptSetStartElement);
}
@Override
public void endSet() throws XMLStreamException {
EndElement conceptSetEndElement = eventFactory.createEndElement("",
"ns1", "concept_set");
eventWriter.add(conceptSetEndElement);
}
@Override
public void buildConcept(ResultSet conceptResultSet) throws Exception {
// Create a EventFactory
XMLEvent end = eventFactory.createCharacters("\n");
// Create config open tag
StartElement configStartElement = eventFactory.createStartElement("",
"", "concept");
eventWriter.add(configStartElement);
updateDate = conceptResultSet.getDate("update_date");
if (updateDate != null) {
eventWriter.add(eventFactory.createAttribute("update_date",
dtoFactory.getXMLGregorianCalendar(updateDate.getTime())
.toString()));
}
downloadDate = conceptResultSet.getDate("download_date");
if (downloadDate != null) {
eventWriter.add(eventFactory.createAttribute("download_date",
dtoFactory.getXMLGregorianCalendar(downloadDate.getTime())
.toString()));
}
sourceSystemCd = conceptResultSet.getString("sourcesystem_cd");
if (sourceSystemCd != null) {
eventWriter.add(eventFactory.createAttribute("sourcesystem_cd",
sourceSystemCd));
}
eventWriter.add(end);
// Write the different nodes
createNode(eventWriter, "concept_path", conceptResultSet
.getString("c_dimcode"));
createNode(eventWriter, "concept_cd", conceptResultSet
.getString("c_basecode"));
createNode(eventWriter, "name_char", conceptResultSet
.getString("c_name"));
eventWriter.add(eventFactory.createEndElement("", "", "concept"));
eventWriter.add(end);
}
public void close() throws XMLStreamException {
eventWriter.add(eventFactory.createEndDocument());
eventWriter.close();
}
}