From: Suresh <sur...@us...> - 2006-06-12 13:15:45
|
Update of /cvsroot/batchserver/batchserver/src/org/jmonks/batchserver/io/flat In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv12531 Modified Files: DelimitedFlatFileFileSpec.java DelimitedFlatFileReader.java DelimitedFlatFileWriter.java FixedWidthFlatFileReader.java FixedWidthFlatFileRecordSpec.java FixedWidthFlatFileWriter.java FlatFileReader.java FlatFileWriter.java Log Message: no message Index: FixedWidthFlatFileWriter.java =================================================================== RCS file: /cvsroot/batchserver/batchserver/src/org/jmonks/batchserver/io/flat/FixedWidthFlatFileWriter.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** FixedWidthFlatFileWriter.java 10 Jun 2006 17:51:37 -0000 1.6 --- FixedWidthFlatFileWriter.java 12 Jun 2006 13:15:37 -0000 1.7 *************** *** 13,24 **** import java.io.OutputStream; import java.util.Arrays; - import java.util.HashMap; import java.util.Iterator; import java.util.List; - import java.util.Map; import org.apache.log4j.Logger; import org.jmonks.batchserver.io.FileSpec; import org.jmonks.batchserver.io.RecordType; import org.jmonks.batchserver.io.WriterRecord; /** --- 13,23 ---- import java.io.OutputStream; import java.util.Arrays; import java.util.Iterator; import java.util.List; import org.apache.log4j.Logger; import org.jmonks.batchserver.io.FileSpec; import org.jmonks.batchserver.io.RecordType; import org.jmonks.batchserver.io.WriterRecord; + import org.jmonks.batchserver.io.flat.FlatFileWriter.FlatFileWriterRecord; /** *************** *** 51,73 **** /** - * Creates the writer record assocites with the given record type. - * IllegalArgumentException will be thrown, if there is no record - * spec is found with this record type. - * - * @param recordType Type fo the record to be created. - * - * @return Returns the requested writer record. - * - * @throws IllegalArgumentException No record spec is found with this record type. - */ - public WriterRecord createWriterRecord(RecordType recordType) - { - if(this.fileSpec.isValidRecordType(recordType)) - return new FixedWidthFlatFileWriterRecord(recordType); - else - throw new IllegalArgumentException("No record spec has been found with the record type = " + recordType); - } - - /** * Writes the given record into the file/writer. * --- 50,53 ---- *************** *** 81,85 **** { logger.trace("Entering generateRecord"); ! FixedWidthFlatFileWriterRecord record=(FixedWidthFlatFileWriterRecord)writerRecord; FixedWidthFlatFileRecordSpec recordSpec=(FixedWidthFlatFileRecordSpec)this.fileSpec.getRecordSpec(record.getRecordType()); char[] recordBuffer=new char[recordSpec.getRecordSize()]; --- 61,65 ---- { logger.trace("Entering generateRecord"); ! FlatFileWriterRecord record=(FlatFileWriterRecord)writerRecord; FixedWidthFlatFileRecordSpec recordSpec=(FixedWidthFlatFileRecordSpec)this.fileSpec.getRecordSpec(record.getRecordType()); char[] recordBuffer=new char[recordSpec.getRecordSize()]; *************** *** 97,149 **** return new String(recordBuffer); } - - /** - * FixedWidthFlatFileWriterRecord implements WriterRecord by maintaing the - * field names and values as a map and provides the methods with proper - * access privileges to read into and write from the record. - * - * @author Suresh Pragada - */ - public class FixedWidthFlatFileWriterRecord extends WriterRecord - { - /** - * Map to hold the field names and values. - */ - private Map fieldMap=null; - - /** - * Constructs and initializes the writer record. - */ - private FixedWidthFlatFileWriterRecord(RecordType recordType) - { - super(recordType); - fieldMap=new HashMap(); - } - - /** - * Writes the field data into the record. - * - * @param fieldName Name of the field defined in field spec. - * @param fieldValue Value for the field name. - */ - public void writeField(String fieldName, Object fieldValue) - { - this.fieldMap.put(fieldName,fieldValue); - } - - /** - * Reads and returns the value associated with requested field name. - * - * @param fieldName Name of the field. - * - * @return Returns the value associated with the field name. - */ - private Object readField(String fieldName) - { - if(this.fieldMap.containsKey(fieldName)) - return this.fieldMap.get(fieldName); - else - return ""; - } - } } --- 77,79 ---- Index: DelimitedFlatFileFileSpec.java =================================================================== RCS file: /cvsroot/batchserver/batchserver/src/org/jmonks/batchserver/io/flat/DelimitedFlatFileFileSpec.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** DelimitedFlatFileFileSpec.java 10 Jun 2006 17:51:37 -0000 1.1 --- DelimitedFlatFileFileSpec.java 12 Jun 2006 13:15:37 -0000 1.2 *************** *** 72,75 **** --- 72,80 ---- throw new FileSpecException("Delimited file spec should have only one record spec."); } + else if(recordSpecNodeList.getLength()<1) + { + logger.fatal("Delimited file spec should have atleast one record spec."); + throw new FileSpecException("Delimited file spec should have atleast one record spec."); + } else { Index: FixedWidthFlatFileReader.java =================================================================== RCS file: /cvsroot/batchserver/batchserver/src/org/jmonks/batchserver/io/flat/FixedWidthFlatFileReader.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** FixedWidthFlatFileReader.java 10 Jun 2006 17:51:37 -0000 1.6 --- FixedWidthFlatFileReader.java 12 Jun 2006 13:15:37 -0000 1.7 *************** *** 11,20 **** package org.jmonks.batchserver.io.flat; import java.io.InputStream; - import java.util.HashMap; import java.util.Iterator; import java.util.List; - import java.util.Map; import org.apache.log4j.Logger; import org.jmonks.batchserver.io.*; /** --- 11,19 ---- package org.jmonks.batchserver.io.flat; import java.io.InputStream; import java.util.Iterator; import java.util.List; import org.apache.log4j.Logger; import org.jmonks.batchserver.io.*; + import org.jmonks.batchserver.io.flat.FlatFileReader.FlatFileReaderRecord; /** *************** *** 58,62 **** { logger.trace("Entering parseRecord"); ! FixedWidthFlatFileReaderRecord record=null; List recordSpecList=this.fileSpec.getRecordSpecs(); for(Iterator recordSpecIterator=recordSpecList.iterator();recordSpecIterator.hasNext();) --- 57,61 ---- { logger.trace("Entering parseRecord"); ! FlatFileReaderRecord record=null; List recordSpecList=this.fileSpec.getRecordSpecs(); for(Iterator recordSpecIterator=recordSpecList.iterator();recordSpecIterator.hasNext();) *************** *** 66,70 **** { List fieldSpecList=recordSpec.getFieldSpecs(); ! record=new FixedWidthFlatFileReaderRecord(recordSpec.getRecordType(),fieldSpecList.size()); for(Iterator fieldSpecIterator=fieldSpecList.iterator();fieldSpecIterator.hasNext();) { --- 65,69 ---- { List fieldSpecList=recordSpec.getFieldSpecs(); ! record=new FlatFileReaderRecord(recordSpec.getRecordType(),fieldSpecList.size()); for(Iterator fieldSpecIterator=fieldSpecList.iterator();fieldSpecIterator.hasNext();) { *************** *** 88,143 **** throw new FileParseException("Record " + recordString + " cannot be matched with any configured record specs."); } ! logger.trace("Entering parseRecord"); return record; } - - /** - * FixedWidthFlatFileReaderRecord implements ReaderRecord by maintaing the - * field names and values as a map and provides the methods with proper - * access privileges to read into and write from the record. - * - * @author Suresh Pragada - */ - public class FixedWidthFlatFileReaderRecord extends ReaderRecord - { - /** - * Holds the field data. - */ - private Map fieldMap=null; - - /** - * Private constructor to make sure only reader can create the record. - * - * @param recordType Type of the record. - * @param fieldCount Number of fields expected in this record to initializes the map properly. - */ - private FixedWidthFlatFileReaderRecord(RecordType recordType,int fieldCount) - { - super(recordType); - fieldMap=new HashMap(fieldCount); - } - - /** - * Field values can be read by using the names provided in the field spec. - * - * @param fieldName Name of the field. - * - * @return Returns the field value. - */ - public Object readField(String fieldName) - { - return this.fieldMap.get(fieldName); - } - - /** - * This is for the Reader to write the data into the record. - * - * @param fieldName Name of the field. - * @param fieldValue Value of the field. - */ - private void writeField(String fieldName,String fieldValue) - { - this.fieldMap.put(fieldName,fieldValue); - } - } } --- 87,92 ---- throw new FileParseException("Record " + recordString + " cannot be matched with any configured record specs."); } ! logger.trace("Exiting parseRecord"); return record; } } Index: FlatFileWriter.java =================================================================== RCS file: /cvsroot/batchserver/batchserver/src/org/jmonks/batchserver/io/flat/FlatFileWriter.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** FlatFileWriter.java 10 Jun 2006 17:51:37 -0000 1.1 --- FlatFileWriter.java 12 Jun 2006 13:15:37 -0000 1.2 *************** *** 83,87 **** * @throws IllegalArgumentException No record spec is found with this record type. */ ! public abstract WriterRecord createWriterRecord(RecordType recordType); /** --- 83,93 ---- * @throws IllegalArgumentException No record spec is found with this record type. */ ! public WriterRecord createWriterRecord(RecordType recordType) ! { ! if(this.fileSpec.isValidRecordType(recordType)) ! return new FlatFileWriterRecord(recordType); ! else ! throw new IllegalArgumentException("No record spec has been found with the record type = " + recordType); ! } /** *************** *** 160,162 **** --- 166,218 ---- } } + + /** + * FixedWidthFlatFileWriterRecord implements WriterRecord by maintaing the + * field names and values as a map and provides the methods with proper + * access privileges to read into and write from the record. + * + * @author Suresh Pragada + */ + public class FlatFileWriterRecord extends WriterRecord + { + /** + * Map to hold the field names and values. + */ + private Map fieldMap=null; + + /** + * Constructs and initializes the writer record. + */ + protected FlatFileWriterRecord(RecordType recordType) + { + super(recordType); + fieldMap=new HashMap(); + } + + /** + * Writes the field data into the record. + * + * @param fieldName Name of the field defined in field spec. + * @param fieldValue Value for the field name. + */ + public void writeField(String fieldName, Object fieldValue) + { + this.fieldMap.put(fieldName,fieldValue); + } + + /** + * Reads and returns the value associated with requested field name. + * + * @param fieldName Name of the field. + * + * @return Returns the value associated with the field name. + */ + protected Object readField(String fieldName) + { + if(this.fieldMap.containsKey(fieldName)) + return this.fieldMap.get(fieldName); + else + return ""; + } + } } Index: FixedWidthFlatFileRecordSpec.java =================================================================== RCS file: /cvsroot/batchserver/batchserver/src/org/jmonks/batchserver/io/flat/FixedWidthFlatFileRecordSpec.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** FixedWidthFlatFileRecordSpec.java 10 Jun 2006 17:51:37 -0000 1.4 --- FixedWidthFlatFileRecordSpec.java 12 Jun 2006 13:15:37 -0000 1.5 *************** *** 140,144 **** recordSize=fieldSpec.getEndPosition(); } - recordSize+=startsWith.length(); recordSpec.recordSize=recordSize; return recordSpec; --- 140,143 ---- Index: DelimitedFlatFileWriter.java =================================================================== RCS file: /cvsroot/batchserver/batchserver/src/org/jmonks/batchserver/io/flat/DelimitedFlatFileWriter.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** DelimitedFlatFileWriter.java 10 Jun 2006 17:51:37 -0000 1.1 --- DelimitedFlatFileWriter.java 12 Jun 2006 13:15:37 -0000 1.2 *************** *** 12,41 **** import java.io.OutputStream; import org.apache.log4j.Logger; import org.jmonks.batchserver.io.FileSpec; - import org.jmonks.batchserver.io.RecordType; import org.jmonks.batchserver.io.WriterRecord; /** * ! * @author Suresh Pragada */ public class DelimitedFlatFileWriter extends FlatFileWriter { private static Logger logger=Logger.getLogger(DelimitedFlatFileWriter.class); ! /** Creates a new instance of DelimitedFlatFileWriter */ public DelimitedFlatFileWriter(OutputStream outputStream,FileSpec fileSpec) { super(outputStream,fileSpec); ! } ! ! public WriterRecord createWriterRecord(RecordType recordType) ! { ! return null; } protected String generateRecord(WriterRecord writerRecord) throws java.io.IOException { ! return null; } } --- 12,71 ---- import java.io.OutputStream; + import java.util.Iterator; import org.apache.log4j.Logger; import org.jmonks.batchserver.io.FileSpec; import org.jmonks.batchserver.io.WriterRecord; + import org.jmonks.batchserver.io.flat.FlatFileWriter.FlatFileWriterRecord; /** + * <p> + * DelimitedFlatFileWriter writes/generates the file according to the given file spec + * with the data submitted in the form of WriterRecord's. This provides the methods + * to create the required writer records and write the writer record into the file writer. + * Once finished writing of all the records file writer should be closed by calling + * the "close" method. + * </p> * ! * @author Suresh Pragada ! * @version 1.0 ! * @since 1.0 */ public class DelimitedFlatFileWriter extends FlatFileWriter { private static Logger logger=Logger.getLogger(DelimitedFlatFileWriter.class); ! ! private DelimitedFlatFileRecordSpec recordSpec=null; ! public DelimitedFlatFileWriter(OutputStream outputStream,FileSpec fileSpec) { super(outputStream,fileSpec); ! recordSpec=(DelimitedFlatFileRecordSpec)fileSpec.getRecordSpecs().get(0); } protected String generateRecord(WriterRecord writerRecord) throws java.io.IOException { ! FlatFileWriterRecord flatFileWriterRecord=(FlatFileWriterRecord)writerRecord; ! ! String[] fieldValuesArray=new String[10]; ! for(Iterator iterator=recordSpec.getFieldSpecs().iterator();iterator.hasNext();) ! { ! DelimitedFlatFileFieldSpec fieldSpec=(DelimitedFlatFileFieldSpec)iterator.next(); ! String fieldValue=(String)flatFileWriterRecord.readField(fieldSpec.getFieldName()); ! fieldValuesArray[fieldSpec.getIndex()-1]= fieldValue!=null?fieldValue:""; ! } ! ! StringBuffer recordBuffer=new StringBuffer(); ! for(int i=0;i<fieldValuesArray.length;i++) ! { ! if(i==fieldValuesArray.length-1) ! recordBuffer.append(fieldValuesArray[i]); ! else ! { ! recordBuffer.append(fieldValuesArray[i]); ! recordBuffer.append(recordSpec.getDelimiter()); ! } ! } ! ! return recordBuffer.toString(); } } Index: DelimitedFlatFileReader.java =================================================================== RCS file: /cvsroot/batchserver/batchserver/src/org/jmonks/batchserver/io/flat/DelimitedFlatFileReader.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** DelimitedFlatFileReader.java 10 Jun 2006 17:51:37 -0000 1.1 --- DelimitedFlatFileReader.java 12 Jun 2006 13:15:37 -0000 1.2 *************** *** 12,22 **** import java.io.InputStream; import org.apache.log4j.Logger; import org.jmonks.batchserver.io.FileSpec; import org.jmonks.batchserver.io.ReaderRecord; /** * ! * @author Suresh Pragada */ public class DelimitedFlatFileReader extends FlatFileReader --- 12,35 ---- import java.io.InputStream; + import java.util.Iterator; + import java.util.List; import org.apache.log4j.Logger; + import org.jmonks.batchserver.io.FileParseException; import org.jmonks.batchserver.io.FileSpec; import org.jmonks.batchserver.io.ReaderRecord; + import org.jmonks.batchserver.io.flat.FlatFileReader.FlatFileReaderRecord; /** + * <p> + * DelimitedFlatFileReader reads the specified delimited flat file according to the given file spec + * and returns the recrods on the needed basis. Each field value from the record + * should be read using readField method by passing the fieldName mentioned in + * the file spec. To find out how to read each record from the file and to read + * the each field from the record, refer to the FileReader javadoc. + * </p> * ! * @author Suresh Pragada ! * @version 1.0 ! * @since 1.0 */ public class DelimitedFlatFileReader extends FlatFileReader *************** *** 24,36 **** private static Logger logger=Logger.getLogger(DelimitedFlatFileReader.class); public DelimitedFlatFileReader(InputStream fileInputStream,FileSpec fileSpec) { super(fileInputStream, fileSpec); } protected ReaderRecord parseRecord(String recordString) ! { ! return null; } - } --- 37,67 ---- private static Logger logger=Logger.getLogger(DelimitedFlatFileReader.class); + private DelimitedFlatFileRecordSpec recordSpec=null; + public DelimitedFlatFileReader(InputStream fileInputStream,FileSpec fileSpec) { super(fileInputStream, fileSpec); + recordSpec=(DelimitedFlatFileRecordSpec)fileSpec.getRecordSpecs().get(0); } protected ReaderRecord parseRecord(String recordString) ! { ! logger.trace("Entering parseRecord"); ! FlatFileReaderRecord record=null; ! List fieldSpecList=recordSpec.getFieldSpecs(); ! record=new FlatFileReaderRecord(recordSpec.getRecordType(),fieldSpecList.size()); ! String[] fieldValuesArray=recordString.split(recordSpec.getDelimiter()); ! for(Iterator fieldSpecIterator=fieldSpecList.iterator();fieldSpecIterator.hasNext();) ! { ! DelimitedFlatFileFieldSpec fieldSpec=(DelimitedFlatFileFieldSpec)fieldSpecIterator.next(); ! int index=fieldSpec.getIndex(); ! if(index<=fieldValuesArray.length) ! record.writeField(fieldSpec.getFieldName(),fieldValuesArray[index-1]); ! else ! throw new FileParseException("Unable to find the field for the field spec = " + fieldSpec.toString() + ! ". Number of fields found in record from the file = " + fieldValuesArray.length); ! } ! logger.trace("Exiting parseRecord"); ! return record; } } Index: FlatFileReader.java =================================================================== RCS file: /cvsroot/batchserver/batchserver/src/org/jmonks/batchserver/io/flat/FlatFileReader.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** FlatFileReader.java 10 Jun 2006 17:51:37 -0000 1.1 --- FlatFileReader.java 12 Jun 2006 13:15:37 -0000 1.2 *************** *** 15,18 **** --- 15,20 ---- import java.io.InputStream; import java.io.InputStreamReader; + import java.util.HashMap; + import java.util.Map; import org.apache.log4j.Logger; import org.jmonks.batchserver.io.*; *************** *** 138,140 **** --- 140,192 ---- */ protected abstract ReaderRecord parseRecord(String recordString); + + /** + * FixedWidthFlatFileReaderRecord implements ReaderRecord by maintaing the + * field names and values as a map and provides the methods with proper + * access privileges to read into and write from the record. + * + * @author Suresh Pragada + */ + public class FlatFileReaderRecord extends ReaderRecord + { + /** + * Holds the field data. + */ + private Map fieldMap=null; + + /** + * Private constructor to make sure only reader can create the record. + * + * @param recordType Type of the record. + * @param fieldCount Number of fields expected in this record to initializes the map properly. + */ + protected FlatFileReaderRecord(RecordType recordType,int fieldCount) + { + super(recordType); + fieldMap=new HashMap(fieldCount); + } + + /** + * Field values can be read by using the names provided in the field spec. + * + * @param fieldName Name of the field. + * + * @return Returns the field value. + */ + public Object readField(String fieldName) + { + return this.fieldMap.get(fieldName); + } + + /** + * This is for the Reader to write the data into the record. + * + * @param fieldName Name of the field. + * @param fieldValue Value of the field. + */ + protected void writeField(String fieldName,String fieldValue) + { + this.fieldMap.put(fieldName,fieldValue); + } + } } |