Github user derekstraka commented on a diff in the pull request:
https://github.com/apache/nifi/pull/2473#discussion_r168861958
--- Diff:
nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/csv/AbstractCSVRecordReader.java
---
@@ -0,0 +1,110 @@
+package org.apache.nifi.csv;
+
+
+import org.apache.nifi.logging.ComponentLog;
+import org.apache.nifi.serialization.RecordReader;
+import org.apache.nifi.serialization.record.DataType;
+import org.apache.nifi.serialization.record.RecordSchema;
+import org.apache.nifi.serialization.record.util.DataTypeUtils;
+import org.apache.nifi.serialization.record.RecordFieldType;
+import java.text.DateFormat;
+import java.util.function.Supplier;
+
+abstract public class AbstractCSVRecordReader implements RecordReader {
+
+ protected final ComponentLog logger;
+ protected final boolean hasHeader;
+ protected final boolean ignoreHeader;
+
+ protected final Supplier<DateFormat> LAZY_DATE_FORMAT;
+ protected final Supplier<DateFormat> LAZY_TIME_FORMAT;
+ protected final Supplier<DateFormat> LAZY_TIMESTAMP_FORMAT;
+
+ protected final String dateFormat;
+ protected final String timeFormat;
+ protected final String timestampFormat;
+
+ protected final RecordSchema schema;
+
+ AbstractCSVRecordReader(final ComponentLog logger, final RecordSchema
schema, final boolean hasHeader, final boolean ignoreHeader,
+ final String dateFormat, final String
timeFormat, final String timestampFormat) {
+ this.logger = logger;
+ this.schema = schema;
+ this.hasHeader = hasHeader;
+ this.ignoreHeader = ignoreHeader;
+ this.dateFormat = (dateFormat == null) ?
RecordFieldType.DATE.getDefaultFormat() : dateFormat;
+ this.timeFormat = (timeFormat == null) ?
RecordFieldType.TIME.getDefaultFormat(): timeFormat;
+ this.timestampFormat = (timestampFormat == null) ?
RecordFieldType.TIMESTAMP.getDefaultFormat(): timestampFormat;
+
+ final DateFormat df = (dateFormat == null) ? null :
DataTypeUtils.getDateFormat(dateFormat);
+ final DateFormat tf = (timeFormat == null) ? null :
DataTypeUtils.getDateFormat(timeFormat);
+ final DateFormat tsf = (timestampFormat == null) ? null :
DataTypeUtils.getDateFormat(timestampFormat);
--- End diff --
It can come in null if the data is not set, but you are correct, it could
also be the empty string. The empty string should use the default format as
well. I'll re-work this a bit.
---