[Batchserver-cvs] batchserver/src/org/jmonks/batchserver/io/xml XMLFileWriter.java, NONE, 1.1 XMLFi
Brought to you by:
suresh_pragada
From: Suresh <sur...@us...> - 2006-06-07 22:27:19
|
Update of /cvsroot/batchserver/batchserver/src/org/jmonks/batchserver/io/xml In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv30448 Modified Files: XMLFileReader.java Added Files: XMLFileWriter.java Log Message: no message Index: XMLFileReader.java =================================================================== RCS file: /cvsroot/batchserver/batchserver/src/org/jmonks/batchserver/io/xml/XMLFileReader.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** XMLFileReader.java 6 Jun 2006 21:19:33 -0000 1.4 --- XMLFileReader.java 7 Jun 2006 03:12:08 -0000 1.5 *************** *** 38,42 **** protected XMLFileSpec fileSpec=null; ! protected XMLEventReader eventReader=null; protected String xpath=""; --- 38,42 ---- protected XMLFileSpec fileSpec=null; ! protected XMLEventReader reader=null; protected String xpath=""; *************** *** 51,61 **** { XMLInputFactory inputFactory=XMLInputFactory.newInstance(); ! eventReader=inputFactory.createXMLEventReader(new java.io.FileReader(absoluteFilePath)); if(this.validateRootElement()) xpath="/"+this.fileSpec.getRootElement(); else { ! eventReader.close(); ! throw new RuntimeException("Root tag doesnt match."); } } --- 51,61 ---- { XMLInputFactory inputFactory=XMLInputFactory.newInstance(); ! reader=inputFactory.createXMLEventReader(new java.io.FileReader(absoluteFilePath)); if(this.validateRootElement()) xpath="/"+this.fileSpec.getRootElement(); else { ! reader.close(); ! throw new FileParseException("Unexpected root element found. Expecting the root element " + this.fileSpec.getRootElement()); } } *************** *** 63,67 **** { exception.printStackTrace(); ! this.eventReader=null; logger.fatal("File to create the reader cannot be found. Exception Message = " + exception.getMessage(),exception); throw new FileParseException("File to create the reader cannot be found. Exception Message = " + exception.getMessage()); --- 63,67 ---- { exception.printStackTrace(); ! this.reader=null; logger.fatal("File to create the reader cannot be found. Exception Message = " + exception.getMessage(),exception); throw new FileParseException("File to create the reader cannot be found. Exception Message = " + exception.getMessage()); *************** *** 70,74 **** { exception.printStackTrace(); ! this.eventReader=null; logger.fatal("Exception while initializing the xml stream reader. Message = " + exception.getMessage(),exception); throw new FileParseException("Exception while initializing the xml stream reader. Message = " + exception.getMessage()); --- 70,74 ---- { exception.printStackTrace(); ! this.reader=null; logger.fatal("Exception while initializing the xml stream reader. Message = " + exception.getMessage(),exception); throw new FileParseException("Exception while initializing the xml stream reader. Message = " + exception.getMessage()); *************** *** 79,83 **** { XMLReaderRecord readerRecord=null; ! if(this.eventReader==null) return readerRecord; else --- 79,83 ---- { XMLReaderRecord readerRecord=null; ! if(this.reader==null) return readerRecord; else *************** *** 85,91 **** try { ! while(eventReader.hasNext()) { ! XMLEvent event=eventReader.nextEvent(); if(event.isStartElement()) { --- 85,91 ---- try { ! while(reader.hasNext()) { ! XMLEvent event=reader.nextEvent(); if(event.isStartElement()) { *************** *** 126,134 **** public void close() { ! if(this.eventReader!=null) { try { ! this.eventReader.close(); } catch(XMLStreamException exception) --- 126,134 ---- public void close() { ! if(this.reader!=null) { try { ! this.reader.close(); } catch(XMLStreamException exception) *************** *** 138,142 **** finally { ! this.eventReader=null; } } --- 138,142 ---- finally { ! this.reader=null; } } *************** *** 148,154 **** try { ! while(eventReader.hasNext()) { ! XMLEvent event=eventReader.nextEvent(); if(event.isStartElement()) { --- 148,154 ---- try { ! while(reader.hasNext()) { ! XMLEvent event=reader.nextEvent(); if(event.isStartElement()) { *************** *** 190,196 **** try { ! while(eventReader.hasNext()) { ! XMLEvent nextEvent=eventReader.peek(); if(nextEvent.isStartElement()) { --- 190,196 ---- try { ! while(reader.hasNext()) { ! XMLEvent nextEvent=reader.peek(); if(nextEvent.isStartElement()) { *************** *** 208,212 **** else { ! StartElement startElement=(StartElement)eventReader.nextEvent(); isPreviousElementStart=true; elementStack.push(startElement); --- 208,212 ---- else { ! StartElement startElement=(StartElement)reader.nextEvent(); isPreviousElementStart=true; elementStack.push(startElement); *************** *** 215,219 **** else if(nextEvent.isEndElement()) { ! EndElement endElement=(EndElement)eventReader.nextEvent(); isPreviousElementStart=false; if(recordElement.equalsIgnoreCase(endElement.getName().getLocalPart())) --- 215,219 ---- else if(nextEvent.isEndElement()) { ! EndElement endElement=(EndElement)reader.nextEvent(); isPreviousElementStart=false; if(recordElement.equalsIgnoreCase(endElement.getName().getLocalPart())) *************** *** 241,245 **** else if(nextEvent.isCharacters()) { ! Characters chars=(Characters)eventReader.nextEvent(); if(!chars.isWhiteSpace()) { --- 241,245 ---- else if(nextEvent.isCharacters()) { ! Characters chars=(Characters)reader.nextEvent(); if(!chars.isWhiteSpace()) { *************** *** 253,257 **** * Ignore the other events for now. */ ! eventReader.nextEvent(); } } --- 253,257 ---- * Ignore the other events for now. */ ! reader.nextEvent(); } } --- NEW FILE: XMLFileWriter.java --- /* * XMLFileWriter.java * * Created on June 5, 2006, 10:36 PM * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package org.jmonks.batchserver.io.xml; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import org.apache.log4j.Logger; import org.jmonks.batchserver.io.FileParseException; import org.jmonks.batchserver.io.FileSpec; import org.jmonks.batchserver.io.FileWriter; import org.jmonks.batchserver.io.RecordType; import org.jmonks.batchserver.io.WriterRecord; /** * * @author Suresh Pragada */ public class XMLFileWriter extends FileWriter { protected String absoluteFilePath=null; protected XMLFileSpec fileSpec=null; protected XMLStreamWriter writer=null; private static Logger logger=Logger.getLogger(XMLFileWriter.class); public XMLFileWriter(String absoluteFilePath,FileSpec fileSpec) { try { this.absoluteFilePath=absoluteFilePath; this.fileSpec=(XMLFileSpec)fileSpec; XMLOutputFactory outputFactory=XMLOutputFactory.newInstance(); writer=outputFactory.createXMLStreamWriter(new java.io.FileWriter(absoluteFilePath)); writer.writeStartDocument("ISO-8859-1", "1.0"); writer.writeStartElement(this.fileSpec.rootElement); } catch(IOException exception) { exception.printStackTrace(); logger.fatal("IOException while creating the writer. Message = " + exception.getMessage(), exception); throw new FileParseException("IOException while creating the writer. Message = " + exception.getMessage()); } catch(XMLStreamException exception) { exception.printStackTrace(); logger.fatal("XMLStream exception while creating the writer. Message = " + exception.getMessage(), exception); throw new FileParseException("XMLStream exception while creating the writer. Message = " + exception.getMessage()); } } public void writeRecord(WriterRecord writerRecord) { try { XMLWriterRecord record=(XMLWriterRecord)writerRecord; XMLRecordSpec recordSpec=getRecordSpec(record.getRecordType()); String recordXpath=recordSpec.getRecordXPath(); String recordElement=recordXpath.substring(recordXpath.lastIndexOf('/')); writeCompositeElement(recordElement, record); } catch(XMLStreamException exception) { exception.printStackTrace(); logger.fatal("XMLStream exception while writing the record into the writer. Message = " + exception.getMessage(), exception); throw new FileParseException("XMLStream exception while writing the record into the writer. Message = " + exception.getMessage()); } } protected void writeSimpleElement(String fieldName,Object fieldValue) throws XMLStreamException { writer.writeStartElement(fieldName); writer.writeCharacters((fieldValue!=null)?fieldValue.toString():""); writer.writeEndElement(); } protected void writeCompositeElement(String recordElementName,XMLWriterRecord fieldValueAsRecord) throws XMLStreamException { writer.writeStartElement(recordElementName); for(Iterator iterator=fieldValueAsRecord.getFieldNameIterator();iterator.hasNext();) { String fieldName=(String)iterator.next(); Object fieldValue=fieldValueAsRecord.readField(fieldName); if(fieldValue instanceof XMLWriterRecord) { writeCompositeElement(fieldName, (XMLWriterRecord)fieldValue); } else if(fieldValue instanceof List) { writeMlutipleElements(fieldName, (List)fieldValue); } else { writeSimpleElement(fieldName, fieldValue); } } writer.writeEndElement(); } protected void writeMlutipleElements(String multiElementName,List fieldValueAsList) throws XMLStreamException { List multiElementList=(List)fieldValueAsList; for(Iterator iterator=multiElementList.iterator();iterator.hasNext();) { Object fieldValue=iterator.next(); if(fieldValue instanceof XMLWriterRecord) { writeCompositeElement(multiElementName, (XMLWriterRecord)fieldValue); } else if(fieldValue instanceof List) { writeMlutipleElements(multiElementName, (List)fieldValue); } else { writeSimpleElement(multiElementName, fieldValue); } } } private XMLRecordSpec getRecordSpec(RecordType recordType) { List recordSpecList=this.fileSpec.getRecordSpecs(); for(Iterator iterator=recordSpecList.iterator();iterator.hasNext();) { XMLRecordSpec recordSpec=(XMLRecordSpec)iterator.next(); if(recordSpec.getRecordType()==recordType) return recordSpec; } return null; } public WriterRecord createWriterRecord(RecordType recordType) { return new XMLWriterRecord(recordType); } public void close() { if(this.writer!=null) { try { this.writer.writeEndElement(); this.writer.writeEndDocument(); this.writer.flush(); this.writer.close(); } catch(XMLStreamException exception) { logger.debug("XML Stream Exception while closing the writer. Message = " + exception.getMessage(), exception); } finally { this.writer=null; } } } public class XMLWriterRecord extends WriterRecord { private Map fieldMap=null; private XMLWriterRecord(RecordType recordType) { super(recordType); fieldMap=new HashMap(); } public void writeField(String fieldName, Object fieldValue) { this.fieldMap.put(fieldName, fieldValue); } public void writeSimpleElement(String fieldName, String fieldValue) { this.fieldMap.put(fieldName, fieldValue); } public void writeCompositeElement(String fieldName, WriterRecord fieldValue) { this.fieldMap.put(fieldName, fieldValue); } public void writeMultiElement(String fieldName, List fieldValue) { this.fieldMap.put(fieldName, fieldValue); } protected Object readField(String fieldName) { return this.fieldMap.get(fieldName); } protected Iterator getFieldNameIterator() { return this.fieldMap.keySet().iterator(); } } } |