Github user ijokarumawak commented on a diff in the pull request: https://github.com/apache/nifi/pull/2473#discussion_r168657570 --- 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 -- I believe these three can omit null check using ternary operator since String formats variables will not be null.
---