[Batchserver-cvs] batchserver/src/org/jmonks/batchserver/io/xml XMLFileWriter.java, 1.1, 1.2
Brought to you by:
suresh_pragada
From: Suresh <sur...@us...> - 2006-06-08 02:50:26
|
Update of /cvsroot/batchserver/batchserver/src/org/jmonks/batchserver/io/xml In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv2188/org/jmonks/batchserver/io/xml Modified Files: XMLFileWriter.java Log Message: no message Index: XMLFileWriter.java =================================================================== RCS file: /cvsroot/batchserver/batchserver/src/org/jmonks/batchserver/io/xml/XMLFileWriter.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** XMLFileWriter.java 7 Jun 2006 03:12:08 -0000 1.1 --- XMLFileWriter.java 7 Jun 2006 22:10:42 -0000 1.2 *************** *** 38,41 **** --- 38,43 ---- protected XMLStreamWriter writer=null; + private XMLIndentationEngine indentationEngine=new XMLIndentationEngine(); + private static Logger logger=Logger.getLogger(XMLFileWriter.class); *************** *** 49,52 **** --- 51,55 ---- writer=outputFactory.createXMLStreamWriter(new java.io.FileWriter(absoluteFilePath)); writer.writeStartDocument("ISO-8859-1", "1.0"); + indentationEngine.startElement(); writer.writeStartElement(this.fileSpec.rootElement); } *************** *** 72,77 **** XMLRecordSpec recordSpec=getRecordSpec(record.getRecordType()); String recordXpath=recordSpec.getRecordXPath(); ! String recordElement=recordXpath.substring(recordXpath.lastIndexOf('/')); writeCompositeElement(recordElement, record); } catch(XMLStreamException exception) --- 75,82 ---- XMLRecordSpec recordSpec=getRecordSpec(record.getRecordType()); String recordXpath=recordSpec.getRecordXPath(); ! int index=recordXpath.lastIndexOf('/'); ! String recordElement=recordXpath.substring(((index!=-1)?(index+1):0)); writeCompositeElement(recordElement, record); + writer.flush(); } catch(XMLStreamException exception) *************** *** 85,90 **** --- 90,97 ---- protected void writeSimpleElement(String fieldName,Object fieldValue) throws XMLStreamException { + indentationEngine.startElement(); writer.writeStartElement(fieldName); writer.writeCharacters((fieldValue!=null)?fieldValue.toString():""); + indentationEngine.endElement(); writer.writeEndElement(); } *************** *** 92,95 **** --- 99,103 ---- protected void writeCompositeElement(String recordElementName,XMLWriterRecord fieldValueAsRecord) throws XMLStreamException { + indentationEngine.startElement(); writer.writeStartElement(recordElementName); for(Iterator iterator=fieldValueAsRecord.getFieldNameIterator();iterator.hasNext();) *************** *** 110,114 **** } } ! writer.writeEndElement(); } --- 118,123 ---- } } ! indentationEngine.endElement(); ! writer.writeEndElement(); } *************** *** 157,160 **** --- 166,170 ---- try { + indentationEngine.endElement(); this.writer.writeEndElement(); this.writer.writeEndDocument(); *************** *** 214,216 **** --- 224,267 ---- } } + + private class XMLIndentationEngine + { + private boolean isPrevStartElement=false; + private boolean isPrevEndElement=false; + + private String indentationString="\n"; + + private XMLIndentationEngine() + { + } + + private void startElement() throws XMLStreamException + { + isPrevEndElement=false; + if(isPrevStartElement) + { + this.indentationString+=" "; + writer.writeCharacters(this.indentationString); + } + else + { + isPrevStartElement=true; + writer.writeCharacters(indentationString); + } + } + + private void endElement() throws XMLStreamException + { + isPrevStartElement=false; + if(isPrevEndElement) + { + this.indentationString=this.indentationString.substring(0, this.indentationString.length()-4); + writer.writeCharacters(this.indentationString); + } + else + { + isPrevEndElement=true; + } + } + } } |