Enhancements
- Introduced the RetryableErrorHandler to prevent discarding rows on
DataProcessingException
and allow the user to retry and recover the record. - Headers parsed from the input are now available after
parser.beginReading
andprocessor.processStarted
. There's no more need to parse the first valid row prior to obtaining the headers. - Introduced the @FixedWidth annotation to allow users to configure fixed-width length and other properties via annotations.
- Introduced the @Copy annotation to allow creating meta-annotations with properties that can be copied over its component annotations - this is very cool, check the javadocs.
- Added a
skipBitsAsWhitespace
configuration option to all parsers and writers that when disabled will prevent characters\0
and\1
from being skipped as whitespace. You are likely to need this if you are working with database dumps that produce (or expect) such characters to represent a BIT value. - Introduced a getInputDimension() method to all routine implementations (i.e. CsvRoutines, TsvRoutines and FixedWidthRoutines)
- Improved the CSV format detection algorithm with better handling of single quotes inside double quotes and better statistics processing for dubious cases (also fixes the build, which failed when executed under Java 8)
Bugfixes
- Fixed unexpected
null
at the end of the last fixed width record when the file was not terminated by a line ending: #128 -
Setting
writerSettings.setEmptyValue(“\”\””)
(or anything with quotes) for writing CSV files should work as expected and produce""
instead of escaping the quotes.