Changes

Release History

Version Date Description
4.0.18 2021-12-22 Maintenance
4.0.17 2021-12-22 Maintenance
4.0.16 2021-11-01 Maintenance
4.0.15 2021-09-17 Maintenance
4.0.14 2021-09-16 Maintenance
4.0.13 2021-09-16 Small Improvement
4.0.12 2021-09-09 Maintenance
4.0.11 2021-09-09 Maintenance
4.0.10 2021-09-09 Maintenance
4.0.9 2021-09-09 Maintenance
4.0.8 2021-09-08 Maintenance
4.0.7 2021-09-08 Maintenance
4.0.6 2021-09-08 Maintenance
4.0.5 2021-05-30 Maintenance
4.0.4 2019-01-06 Maintenance
4.0.3 2018-08-04 Maintenance
4.0.2 2018-07-21 Maintenance
4.0.1 2014-12-10 Maintenance
4.0.0 2014-10-01 Move to JDK8
3.4.2 2014-09-02 Maintenance
3.4.0 2014-05-23 Maintenance, JDK1.5 and fluent
3.2.0 2010-03-03 New parse options
3.1.1 2007-10-01 Fix
3.1.0 2007-09-10 Name and structure change and new writers
3.0.0 2007-02-11 Move to Maven and Subversion
2.2.2 2006-08-18 Fix
2.2.1 2006-08-12 Fix
2.2.0 2006-06-11 Fix
2.1.0 2006-02-26 Maintenance
2.0.0 2005-11-27 Maintenance
1.0.5 2005-10-01 Maintenance
1.0.4 2005-07-20 Maintenance
1.0.3 2005-05-02 Maintenance
1.0.2 2005-01-27 Maintenance
1.0.1 2005-01-23 Maintenance

Release 4.0.18 – 2021-12-22

Type Changes By
Fix Update Dependencies. benoitx

Release 4.0.17 – 2021-12-22

Type Changes By
Fix Upgrades to Lombok and SLF4j. benoitx

Release 4.0.16 – 2021-11-01

Type Changes By
Fix Fixed Security issue for XXE. Thanks to srikanthprathi. benoitx

Release 4.0.15 – 2021-09-17

Type Changes By
Fix Fixed when new line of a multi line starts with "". benoitx

Release 4.0.14 – 2021-09-16

Type Changes By
Fix Fixed esoteric Delimiter multi-line issue if the CR is just at the end of the String and the next line is the qualifier. benoitx

Release 4.0.13 – 2021-09-16

Type Changes By
Add WriterOptions provides option to replace newLine/CarriageReturn in a string. benoitx

Release 4.0.12 – 2021-09-09

Type Changes By
Add DataError may contain last Column Name and Value for better investigation. benoitx

Release 4.0.11 – 2021-09-09

Type Changes By
Add Improve error message for the too few columns error. benoitx

Release 4.0.10 – 2021-09-09

Type Changes By
Add Improve error message for the too few columns error. benoitx

Release 4.0.9 – 2021-09-09

Type Changes By
Add Error for 'too few columns' will attempt to show the last column parsed (most likely with issue). benoitx

Release 4.0.8 – 2021-09-08

Type Changes By
Fix Fix issue if multi-line starts with first or last character.. benoitx

Release 4.0.7 – 2021-09-08

Type Changes By
Fix Multi line did not cope with a true empty line part of a group. benoitx

Release 4.0.6 – 2021-09-08

Type Changes By
Fix Issues with multi-lines. Fixes 63. Thanks to mvlakh. mvlakh

Release 4.0.5 – 2021-05-30

Type Changes By
Fix Fixing default LocalDate Parsing to be ISO 8601 and add the ability to give a DateTimeFormatter to the parser. benoitx
Update Update libraries to work under Java 16/17. omarsmak
Fix Issues when parsing CSV files that extensively use text qualifiers. Fixes 60. Thanks to mvlakh. mvlakh

Release 4.0.4 – 2019-01-06

Type Changes By
Fix Fixing issue with comma inside double quote (delimiter inside qualifier). benoitx
Update Fixing ability to handle '\uFEFF' dodgy character. benoitx

Release 4.0.3 – 2018-08-04

Type Changes By
Update Fixing SonaCloud.io issues benoitx
Add Create an Excel module and remove dependency on JExcelAPI for the main Flatpack, see ExcelTransformer. Fixes 44. benoitx
Add Create CsvParserFactory as an easy way to get one of the most common CSV Parser. benoitx
Remove Removed Version class. benoitx

Release 4.0.2 – 2018-07-21

Type Changes By
Add new option to automatically "de-duplicate" column names by appending a number at the end of it if it already exist. This is off by default but can be set via call to parser.setAddSuffixToDuplicateColumnNames(true). benoitx
Fix RowRecord.getBigDecimal should trim the string to avoid potential parsing issues. benoitx
Fix Delimiter Writer does not handle field ending with new line. Fixes 27. Thanks to benoitx. benoitx
Fix CSV Writer not compliant with RFC4180, Thanks to Martin Diphoorn for the patch. Also fixed some reader issues for double qualifiers. Fixes 33. Thanks to benoitx. benoitx
Update Remove JDOM's depencency. Fixes 11. Thanks to benoitx. benoitx
Update Adding tests for strict RFC4180 (CSV) compliance. Fixes 36. Thanks to martindiphoorn. martindiphoorn
Update It transpired that String.replace is very inefficient and we replaced it with the Apache Commons equivalent. 50% speed improvement. Fixes 28. benoitx

Release 4.0.1 – 2014-12-10

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

Release 4.0.0 – 2014-10-01

Type Changes By
Add dataSet.getRecord should never return null, use java.util.Optional. Fixes 8. benoitx
Add Writer interface is now more 'fluent'. Fixes 4. benoitx
Add Writer is now Autocloseable. Fixes 1. benoitx
Add StreamingDataSet has stream() method for JDK8 manipulation. Fixes 2. benoitx
Add Records interface defines getXXX methods with a Supplier interface. Fixes 3. benoitx
Add Preserve leading/trailing whitespace, Thanks to Trond Ovstetun. Fixes 6. Thanks to ovstetun. benoitx
Add isRecordID NPE if using absolute. Fixes 9. Thanks to SvenNold. benoitx

Release 3.4.2 – 2014-09-02

Type Changes By
Fix Fix for NPE in isRecordID if using absolute. Fixes 9. Thanks to SvenNold. benoitx

Release 3.4.0 – 2014-05-23

Type Changes By
Add Add convenience method DefaultParserFactory.newCsvParser. benoitx
Add Make interface more 'fluent'. benoitx
Fix Use JDK 1.5. benoitx
Add Ability to over ride the table names for DATAFILE and DATASTRUCTURE when using the DB for the MetaData. zepernick
Fix DBDelimitedParser 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
Add BuffReader Parser now support Database Column Mappings zepernick
Fix DelimiterWriter now also quotes elements that contain a qualifier. It was previously only checking to see if the data contained a delmiter. zepernick
Add Added 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
Add Added the ability to use the DelimiterWriter with no column mappings. Added new class DelimiterWriterOptions to achieve this. zepernick
Add Fixed and Delimiter writers now support multiple record types in the same file. zepernick

Release 3.2.0 – 2010-03-03

Type Changes By
Add Added a getBigDecimal method on DataSet. benoitx
Fix Fixed SF Bug 1869636. The parameters for the XML Map and data file were reversed in the BuffReaderDelimParser. zepernick
Update 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_NUMERIC zepernick
Update New Parser option to log the raw line data of the record in the DataSet object. Parser.setStoreRawDataToDataSet() zepernick
Fix Stopped the fixed width parser from removing leading spaces in a data element. Added the ParserUtils.rTrim() method. zepernick
Update Added getLong() to DataSet interface zepernick
Fix Added check for duplicate column names when using file header for column names. zepernick
Fix Applied 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
Fix doParse() on DBFixedLengthParser was returning a null and was never getting a DataSet returned zepernick
Update 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
Update 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

Type Changes By
Fix [1818818] ClassCastException when accessing header or trailer records zepernick
Fix Fixed 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

Type Changes By
Add Paul 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
Update 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
Update Added clearRows(), clearErrors(), and clearAll() methods to DataSet zepernick
Update Goodbye PZFileReader, Hello FlatPack!!! benoitx
Update Moved package strcuture from net.sf.pzfilereader to net.sf.flatpack zepernick
Update XML mapping dtd renamed from pzfilereader.dtd to flatpack.dtd zepernick
Update pzconvert.properties renamed to fpconvert.properties zepernick
Update 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, PZConverter zepernick
Update The following classes had the "PZ" changed to "FP" in their name; PZConstants, PZStringUtils, PZConvertException zepernick
Update Created a PZMetaData class for internal use, it contains the list of column names and index for fast access. benoitx
Update 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
Update Feature Request 1569891. Added setNullEmptyStrings to the PZParser. This will make the DataSet.getString() return null if the column is empty. zepernick
Update 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
Update Removing deprecated methods in ParserUtils; isMultiLine(), splitLine(), getCMDKeyForFixedLengthFile() zepernick
Update 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
Update Changing the PZParseFactory to use java.io.Reader instead of File or InputStream. The File and InputStream methods are still available, but are now deprecated. zepernick
Update Removed deprecated PZMapParser.parse(File). Added PZMapParser.parse(Reader). Deprecated PZMapParser.parse(InputStream). zepernick
Fix Stopped column lookup from being case sensitive zepernick
Update 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

Type Changes By
Update 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
Update DataSet.getDate() will now return a null on empty Strings zepernick
Update Removed ParserUtils.getColumnMDFromFile(InputStream, String, String) this method was deprecated in 2.2 zepernick
Update Removed setters and default constructor from DataError. Error properties are set through the new constructor. zepernick
Add added the ability to limit the column which are exported to Excel in the ExcelTransformer class zepernick
Add added 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.properties zepernick
Add Unqualified elements have leading and trailing whitespace removed in a delimited parse zepernick
Add Ability to issue an OrderBy On DataSet's containing record mapping elements zepernick
Add Move build to Maven 1.1.x and generate the entire website from the build. benoitx
Fix Modify code following warning by Findbugs, checkstyle and PMD. benoitx
Add Move to Subversion. marchy

Release 2.2.2 – 2006-08-18

Type Changes By
Fix Fixed 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

Type Changes By
Fix Fixed 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

Type Changes By
Fix When 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
Add Added a new constructor to have the ability to provide an InputStream when reading columns from the file. zepernick
Add Added 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
Add Added 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
Add Added setDebug(boolean) to PZMapParser class. When flagged true, the Parser will spit the results of the XML parse to the console zepernick
Add Added 2 new samples; CSVHeaderAndTrailer, FixedLengthHeaderAndTrailer. zepernick

Release 2.1.0 – 2006-02-26

Type Changes By
Fix A 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
Add Implemented Roland's changed in cvs HEAD zepernick
Fix Removed constructors deprecated in 2.0.0 zepernick
Add Added 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 here zepernick
Add Begining to write some simple Junit tests under com.test.* These will be excluded from the production jar. zepernick
Add Added 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
Add Added getReaderVersion() method. This will return a String representation for the pzFileReader version being used. zepernick
Add Added ability to transform a DataSet into excel. This utilizes JExcelApi which can be found here: http://sourceforge.net/projects/jexcelapi. 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 class zepernick
Add Changed 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
Add Added 2 new examples to demonstrate the export to Excel and the parsing of multiline records. zepernick
Add Updated Java Docs. zepernick

Release 2.0.0 – 2005-11-27

Type Changes By
Add Re-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
Add Created 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
Add Changed 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
Add created ANT build build file, and published to CVS zepernick
Add Removed the use of the Column object. This was able to cut down on the parse time. zepernick
Add Add 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
Add The 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
Add Took 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
Add Revamped 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

Type Changes By
Fix Fixed 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
Fix While 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
Add Added new method, freeMemory(), when called, the DataSet is cleared. zepernick
Add Updated examples and JavaDocs. zepernick

Release 1.0.4 – 2005-07-20

Type Changes By
Fix Fixed 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
Fix Added 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

Type Changes By
Add added methods to set data in DataSet to all lower or all upper case setLowerCase(), setUpperCase() zepernick
Add Changed 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
Add Added setLowerCase() and setUpperCase() to Java Docs zepernick
Add Added JSP example to samples zepernick

Release 1.0.2 – 2005-01-27

Type Changes By
Add Changed 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

Type Changes By
Fix Fixed bug in delimted parse. If no elements were found in a line, a string index out of bounds exception was thrown. zepernick
Fix Added 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
Fix Corrected javadocs for the getDate methods. Had return type of double, changed to Date. zepernick
Fix Added samples zepernick