Release History

4.0.02014-10-01Move to JDK8
3.4.02014-05-23Maintenance, JDK1.5 and fluent
3.2.02010-03-03New parse options
3.1.02007-09-10Name and structure change and new writers
3.0.02007-02-11Move to Maven and Subversion

Release 4.0.1 - 2014-12-10

fixWhen parsing a header column, trim the leading and trailing spaces. Fixes 10.ks-appendium
fixMark jxl imports optional in OSGi. Fixes 16. Thanks to dkulp.benoitx
fixNeed to handle multi-line. Fixes 15. Thanks to ks-appendium.ks-appendium
fixFix for java.lang.NullPointerException at net.sf.flatpack.DefaultDataSet.getString. Fixes 14. Thanks to moffatn.benoitx
fixFix DelimiterWriter not consistent with ParserUtils Fixes 13. Thanks to antubis23.ks-appendium

Release 4.0.0 - 2014-10-01

adddataSet.getRecord should never return null, use java.util.Optional. Fixes 8.benoitx
addWriter interface is now more 'fluent'. Fixes 4.benoitx
addWriter is now Autocloseable. Fixes 1.benoitx
addStreamingDataSet has stream() method for JDK8 manipulation. Fixes 2.benoitx
addRecords interface defines getXXX methods with a Supplier interface. Fixes 3.benoitx
addPreserve leading/trailing whitespace, Thanks to Trond Ovstetun. Fixes 6. Thanks to ovstetun.benoitx
addisRecordID NPE if using absolute. Fixes 9. Thanks to SvenNold.benoitx

Release 3.4.2 - 2014-09-02

fixFix for NPE in isRecordID if using absolute. Fixes 9. Thanks to SvenNold.benoitx

Release 3.4.0 - 2014-05-23

addAdd convenience method DefaultParserFactory.newCsvParser.benoitx
addMake interface more 'fluent'.benoitx
fixUse JDK 1.5.benoitx
addAbility to over ride the table names for DATAFILE and DATASTRUCTURE when using the DB for the MetaData.zepernick
fixDBDelimitedParser was trying to build column names from the first record when ignore first was set to false. Column mappings should always come from the DB for this class.zepernick
addBuffReader Parser now support Database Column Mappingszepernick
fixDelimiterWriter now also quotes elements that contain a qualifier. It was previously only checking to see if the data contained a delmiter.zepernick
addAdded a setNumericColumns(String[]) to the ExcelTransformer. Any columns contained in the array will be written to Excel as a Numeric instead of a Text field.zepernick
addAdded the ability to use the DelimiterWriter with no column mappings. Added new class DelimiterWriterOptions to achieve this.zepernick
addFixed and Delimiter writers now support multiple record types in the same file.zepernick

Release 3.2.0 - 2010-03-03

addAdded a getBigDecimal method on DataSet.benoitx
fixFixed SF Bug 1869636. The parameters for the XML Map and data file were reversed in the BuffReaderDelimParser.zepernick
Added optional 3rd parameter to the OrderColumn constructor which allows the specification of the type of column being sorted: OrderColumn.COLTYPE_STRING, OrderColumn.COLTYPE_DATE, OrderColumn.COLTYPE_NUMERICzepernick
New Parser option to log the raw line data of the record in the DataSet object. Parser.setStoreRawDataToDataSet()zepernick
fixStopped the fixed width parser from removing leading spaces in a data element. Added the ParserUtils.rTrim() method.zepernick
Added getLong() to DataSet interfacezepernick
fixAdded check for duplicate column names when using file header for column names.zepernick
fixApplied patch from Dirk Olmes to prevent duplicate column names in the XML mapping. IllegalArgumentException is now thrown if a duplicate column name exists in the map. Thanks Dirk...zepernick
fixdoParse() on DBFixedLengthParser was returning a null and was never getting a DataSet returnedzepernick
Added an option on the Paser setFlagEmptyRows(). This will make the DataSet.isRowEmpty() method available. This method will return true when there is no data on any columns in the row.zepernick
New Parser option to log the raw line data in the DataError object for parse errors. Parser.setStoreRawDataToDataError()zepernick

Release 3.1.1 - 2007-10-01

fix[1818818] ClassCastException when accessing header or trailer recordszepernick
fixFixed bug in delimited parse when using Reader for data and map. Parameters were being reversed in the code.zepernick
fix[1811210] When parsing multi-line delimited files, blank lines inside the elements were being removed from the result of the parse. Blank lines inside a delimited element were also causing a StringIndexOutOfBoundsException.zepernick

Release 3.1.0 - 2007-09-10

addPaul and I would like to thank Dirk Holmes and Holger Hoffstatte from MuleSource for the initial contribution to the writer package. The writer package will let you EXPORT a DataSet in a fixed length or Delimited (csv, etc) format. Thanks guys!benoitx
added contains() method to DataSet to check for the existance of a column name on the current row. DataSet must be on a valid row.zepernick
Added clearRows(), clearErrors(), and clearAll() methods to DataSetzepernick
Goodbye PZFileReader, Hello FlatPack!!!benoitx
Moved package strcuture from net.sf.pzfilereader to net.sf.flatpackzepernick
XML mapping dtd renamed from pzfilereader.dtd to flatpack.dtdzepernick renamed to fpconvert.propertieszepernick
The following classes had the "PZ" removed from their name; PZMapParser, PZMetaData, BuffReaderDelimPZParser, BuffReaderFixedPZParser, BuffReaderPZDataSet, BuffReaderPZParseFactory, AbstractDelimiterPZParser, AbstractFixedLengthPZParser, AbstractPZParser, DBDelimiterPZParser, DBFixedLengthPZParser, DefaultPZParserFactory, DelimiterPZParser, FixedLengthPZParser, PZParser, PZParserFactory, PZConverterzepernick
The following classes had the "PZ" changed to "FP" in their name; PZConstants, PZStringUtils, PZConvertExceptionzepernick
Created a PZMetaData class for internal use, it contains the list of column names and index for fast access.benoitx
Feature Request 1596087. Added attribute "elementCount" on record element mapping, which can determine a header, trailer, or detail record by the number of elements contained on the record. This only applies to delimited files.zepernick
Feature Request 1569891. Added setNullEmptyStrings to the PZParser. This will make the DataSet.getString() return null if the column is empty.zepernick
Added option to the PZParser setIgnoreParseWarnings(boolean). When true, the parser will not log warning into the error collection in the DataSet. The default is false.zepernick
Removing deprecated methods in ParserUtils; isMultiLine(), splitLine(), getCMDKeyForFixedLengthFile()zepernick
Added option to PZParser setColumnNamesCaseSensitive(). This will force the user to lookup the column value in the exact same case as the column was specified in the mapping or file. Deprecated the current method signatures for;ParserUtils.buidColumnIndexMap, ParserUtils.getColumnIndex,ParserUtils.getColumnMDFromFile. Added PZParser parameter to new signatures, however, this parameter CAN BE null. Registered PZParser with the DefaultDataSet. This will provide the ability to see what options were set pertaining to data retrieval.zepernick
Changing the PZParseFactory to use instead of File or InputStream. The File and InputStream methods are still available, but are now deprecated.zepernick
Removed deprecated PZMapParser.parse(File). Added PZMapParser.parse(Reader). Deprecated PZMapParser.parse(InputStream).zepernick
fixStopped column lookup from being case sensitivezepernick
Feature Request 1566626. Added setIgnoreExtraColumns() method to the PZParser. Added the ability to ignore extra columns/bytes from delimited & fixed width files. Data is truncated when it goes outside of the column definition.zepernick

Release 3.0.0 - 2007-02-11

Added new dependency, SLF4j. This is used to log parsing issues. SLF4j is a facade to the following loggers; log4j, jcl, nop, and jdk 1.4. See 3.0 User Doc for further instruction.zepernick
DataSet.getDate() will now return a null on empty Stringszepernick
Removed ParserUtils.getColumnMDFromFile(InputStream, String, String) this method was deprecated in 2.2zepernick
Removed setters and default constructor from DataError. Error properties are set through the new constructor.zepernick
addadded the ability to limit the column which are exported to Excel in the ExcelTransformer classzepernick
addadded getObject(String column, Class toConvert) method. PZFileReader will ship with default classes to handle conversions. Custom conversions can be easily added by adding to the pzconvert.propertieszepernick
addUnqualified elements have leading and trailing whitespace removed in a delimited parsezepernick
addAbility to issue an OrderBy On DataSet's containing record mapping elementszepernick
addMove build to Maven 1.1.x and generate the entire website from the build.benoitx
fixModify code following warning by Findbugs, checkstyle and PMD.benoitx
addMove to Subversion.marchy

Release 2.2.2 - 2006-08-18

fixFixed bug in LargeDataSet. Multiline delimited records were not being parsed correctly. They were showing up as errors when being parsed.zepernick

Release 2.2.1 - 2006-08-12

fixFixed a bug in the delimited parser. Errors were caused by multiple column multi-line records. Special thanks to Malcolm Dobson for bringing the bug to attention and providing the fix.zepernick

Release 2.2.0 - 2006-06-11

fixWhen using column names out of the CSV file 2 input streams were being created. One to read the file and the other to get the column names. This has been reduced to one.zepernick
addAdded a new constructor to have the ability to provide an InputStream when reading columns from the file.zepernick
addAdded a LargeDataSet class. This should be used to read large files. It provides the ability to read large files without reading them into memory. The following methods are not applicable for this class; previous(), writeToExcel, orderRows(), absolute(), remove(), getIndex(), goBottom(), goTop(), setValue(). An exception will be thrown if these are called.zepernick
addAdded the ability to specify Header, Trailer, or other records which can be uniquly identified by a piece of data on the record. These get mapped to their own set of column names seperate from the detail records. See the documentation included in the download for details on the new options in the mapping file.zepernick
addAdded setDebug(boolean) to PZMapParser class. When flagged true, the Parser will spit the results of the XML parse to the consolezepernick
addAdded 2 new samples; CSVHeaderAndTrailer, FixedLengthHeaderAndTrailer.zepernick

Release 2.1.0 - 2006-02-26

fixA VERY Special Thanks to Roland Klein for contributing the following enchancements: - Ability to read a file from an InputStream, File object support still exists. This enhancement makes pzfilereader Java Web Start friendly :) - Added a method in ParserUtils to create an InputStream from a File object. - Changed all ArrayLists and Vectors to List objects. This affects the getErrors() method which was returning a Vector. This may potentially cause compilation errors if migrating from a previous version..zepernick
addImplemented Roland's changed in cvs HEADzepernick
fixRemoved constructors deprecated in 2.0.0zepernick
addAdded ability to parse delimited file which have records spanning multiple lines in the file. The element which is breaking to the next line must be qualified. The data can be qualified with any char, a double quote is used in the example. ie. element, element, "element with line break more element data more element data more element data" start next rec herezepernick
addBegining to write some simple Junit tests under com.test.* These will be excluded from the production jar.zepernick
addAdded getRowCount() method. This returns the total amount of rows parsed from the file. Rows which had errors during the parse are excluded from this count and are added to the error collection.zepernick
addAdded getReaderVersion() method. This will return a String representation for the pzFileReader version being used.zepernick
addAdded ability to transform a DataSet into excel. This utilizes JExcelApi which can be found here: The jxl.jar has been included in the download for your convience and must be on the classpath if using this new method --> writeToExcel(File) in the DataSet classzepernick
addChanged examples to work with 2.1.0. Some examples still refered to deprecated constructors from 2.0.0 which have been removed in this version.zepernick
addAdded 2 new examples to demonstrate the export to Excel and the parsing of multiline records.zepernick
addUpdated Java Docs.zepernick

Release 2.0.0 - 2005-11-27

addRe-coded the way the MetaData was being stored. It was being duplicated for every row in the file. It is now only being stored once for the entire file. This will drastically reduce memory usage.zepernick
addCreated a ParserUtils class. This class can be used to perform low level reads if needed (no mapping file required). For now, this change only applies to delimited files.zepernick
addChanged the delimited file parser to use a StringBuffer. It was performing a lot of String concatinations which could have been bogging down performance, and creating un-necessary overhead.zepernick
addcreated ANT build build file, and published to CVSzepernick
addRemoved the use of the Column object. This was able to cut down on the parse time.zepernick
addAdd patch provided by Luke Driscoll [1371162]. This provides 2 new constructors for fixed length files. There is a boolean that can now be passed which will tell the parser to allow lines which are shorter then the allowed line length for a record. Missing columns will be filled in with empties.zepernick
addThe following objects in the DataSet are now public; rows, errors, columnMD, empty constructor. This allows for the DataSet class to be extended if needed to provide custom functionality.zepernick
addTook patch [1371162] a step further and also implemented for delimited files. If the row is missing any columns, the parser will automatically add the columns in as empty's. This functionality happens only when the handleShortLines parameter is set to true.zepernick
addRevamped user documenation. The user documenation is now much more detailed. User documentation and Java Docs are now included with the distribution instead of having them in seperate downloads.zepernick

Release 1.0.5 - 2005-10-01

fixFixed bug in delimited parse. If the last column of the last column of the file was empty, the row was being logged to the "errors" collection. Thank you very much to Luke Driscoll who found this bug and submitted the patch. See bug [ 1275910 ] CSV File with blank last column, for more information.zepernick
fixWhile fixing bug 1275910, a couple of other bugs were brought to light. Spaces before or after the delimiter with a text qualifier was breaking the parse. Example...assuming comma as delimter and double quote as the text qualifier. "value1" , "value2" ,"value"zepernick
addAdded new method, freeMemory(), when called, the DataSet is cleared.zepernick
addUpdated examples and JavaDocs.zepernick

Release 1.0.4 - 2005-07-20

fixFixed bug in delimited parse. If parsing a delimited file with text qualifiers, and the last column of a line had hard spaces at the end, a string out of bounds exception was being thrown.zepernick
fixAdded setStrictNumericParse(boolean) method. This is defaulted to false. When calling getDouble or getInt on a column, all non numeric chars will be striped before performing the parse. If the column is empty after the strip, it will be returned as 0. Setting this to true will parse all numeric values as is.zepernick

Release 1.0.3 - 2005-05-02

addadded methods to set data in DataSet to all lower or all upper case setLowerCase(), setUpperCase()zepernick
addChanged the OrderBy class to make sure the elements being compared were the same case, so as not to make case a factor when comparing. If they are not the same case elements are converted to lower before comparing.zepernick
addAdded setLowerCase() and setUpperCase() to Java Docszepernick
addAdded JSP example to sampleszepernick

Release 1.0.2 - 2005-01-27

addChanged parsing logic for delimited files with text qualifiers. The parser will now parse lines that are qualified and not qualified. For example: "here",1234,"test",50,test This will now parse into 5 seperate columns. However if the text contains a delimiter or seperator inside the text, it must be qualified to work correctly.zepernick

Release 1.0.1 - 2005-01-23

fixFixed bug in delimted parse. If no elements were found in a line, a string index out of bounds exception was thrown.zepernick
fixAdded getDate(String,SimpleDateFormat). By default, the current getDate(String) method was expecting the date in yyyyMMdd format. This method allows for another date format to be specified. This format should match the format in the text file. If you would like to change the formating of the date after it is returned from the DataSet, you can use SimpleDateFormat.format(Date)zepernick
fixCorrected javadocs for the getDate methods. Had return type of double, changed to Date.zepernick
fixAdded sampleszepernick