Class CsvCallbackHandler<T>

  • Type Parameters:
    T - the type of the record that is built from the CSV data
    Direct Known Subclasses:
    AbstractBaseCsvCallbackHandler, AbstractCsvCallbackHandler

    public abstract class CsvCallbackHandler<T>
    extends java.lang.Object
    This class defines the methods that are called during the CSV reading process.

    Implementations highly affect the behavior of the CsvReader. With great power comes great responsibility. Don't mess up the CSV reading process!

    Even if you need custom handling, you typically don't need to extend this class directly. Check out AbstractBaseCsvCallbackHandler first.

    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected CsvCallbackHandler()
      Default constructor.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected abstract void addField​(char[] buf, int offset, int len, boolean quoted)
      Called for each field in the record.
      protected abstract void beginRecord​(long startingLineNumber)
      Called at the beginning of each record.
      protected abstract RecordWrapper<T> buildRecord()
      Called at the end of each CSV record to build an object representation of the record.
      protected abstract void setComment​(char[] buf, int offset, int len)
      Called for each comment line.
      protected void terminate()
      Called at the end of the CSV reading process.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • CsvCallbackHandler

        protected CsvCallbackHandler()
        Default constructor.
    • Method Detail

      • beginRecord

        protected abstract void beginRecord​(long startingLineNumber)
        Called at the beginning of each record.

        The startingLineNumber is the line number where the record starts (starting with 1). See CsvRecord.getStartingLineNumber().

        Parameters:
        startingLineNumber - the line number where the record starts (starting with 1)
      • addField

        protected abstract void addField​(char[] buf,
                                         int offset,
                                         int len,
                                         boolean quoted)
        Called for each field in the record.

        A record can either be a comment or a regular record. If this method is called, the record is a regular record and cannot be a comment.

        The quoted parameter indicates whether the field was quoted. It is for informational purposes only. Any potential escape characters are already removed and the offset points to the first character after the opening quote and the len does not include the closing quote. Hence, a quoted field can be processed in the same way as an unquoted field. Some implementations need the information whether a field was quoted, e.g., for differentiating between null and empty fields (foo,,bar vs. foo,"",bar).

        The buf parameter is the internal buffer that contains the field value (among other data). Do not attempt to modify the buffer or store a reference to it. The buffer is reused for performance reasons.

        Parameters:
        buf - the internal buffer that contains the field value (among other data)
        offset - the offset of the field value in the buffer
        len - the length of the field value
        quoted - true if the field was quoted
      • setComment

        protected abstract void setComment​(char[] buf,
                                           int offset,
                                           int len)
        Called for each comment line.

        Note that the comment character is not included in the value.

        This method is not called if CsvReader.CsvReaderBuilder.commentStrategy(CommentStrategy) is set to CommentStrategy.NONE.

        There can only be one invocation of this method per record. A record can either be a comment or a regular record. If this method is called, the record is a comment and cannot be a regular record.

        The buf parameter is the internal buffer that contains the field value (among other data). Do not attempt to modify the buffer or store a reference to it. The buffer is reused for performance reasons.

        Parameters:
        buf - the internal buffer that contains the field value (among other data)
        offset - the offset of the field value in the buffer
        len - the length of the field value
      • buildRecord

        protected abstract RecordWrapper<T> buildRecord()
        Called at the end of each CSV record to build an object representation of the record.

        The returned wrapper is used by the CsvReader in order to determine how to process the record.

        Returns:
        the record wrapper or null if the record should be ignored/skipped
      • terminate

        protected void terminate()
        Called at the end of the CSV reading process.