Class Import2<E>

java.lang.Object
org.nuiton.csv.Import2<E>
All Implemented Interfaces:
Closeable, AutoCloseable, Iterable<ImportRow<E>>

public class Import2<E> extends Object implements Iterable<ImportRow<E>>, Closeable
Improve the first Import class with the notion of ImportRow.
Since:
2.6.3
Author:
Tony Chemit - chemit@codelutin.com
  • Field Details

    • conf

      protected final ImportConf conf
      Csv import configuration.
    • model

      protected ImportModel<E> model
      Csv import model.
    • reader

      protected com.csvreader.CsvReader reader
      Csv reader (this is the input).
    • validate

      protected boolean validate
      A flag to know if model was already validated.

      Save once done to prevent multiple headers read leading to consider first lines as headers.

  • Constructor Details

  • Method Details

    • newImport

      public static <E> Import2<E> newImport(ImportModel<E> model, InputStream inputStream)
    • newImport

      public static <E> Import2<E> newImport(ImportModel<E> model, Reader reader)
    • newImport

      public static <E> Import2<E> newImport(ImportConf conf, ImportModel<E> model, InputStream inputStream)
    • newImport

      public static <E> Import2<E> newImport(ImportConf conf, ImportModel<E> model, Reader reader)
    • iterator

      public Iterator<ImportRow<E>> iterator()
      Define iterator over import. First of all, the input stream will be validated based on defined model. Iteration will be done on all csv rows except first headers line.
      Specified by:
      iterator in interface Iterable<E>
      Returns:
      the Iterator used for csv iteration
      See Also:
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • prepareAndValidate

      public void prepareAndValidate()
      Read the first mandatory headers line and validate it with the input model. This will check if headers are unique, known by the model and if mandatory headers exist in the file. During this phase, the model will retrieve headers value with ImportModel.pushCsvHeaderNames(List) call.
      Since:
      2.4.1
    • readValue

      protected <T> String readValue(ImportableColumn<E,T> field) throws Exception
      Throws:
      Exception
    • parseValue

      protected <T> T parseValue(ImportableColumn<E,T> field, long lineNumber, String value)
    • setValue

      protected <T> void setValue(ImportableColumn<E,T> field, long lineNumber, E element, T parsedValue)
    • checkHeaderNamesAreAllKnown

      protected void checkHeaderNamesAreAllKnown(String... headers)
    • checkUniqueModelColumnNames

      protected void checkUniqueModelColumnNames()
    • checkAllMandatoryHeadersArePresent

      protected void checkAllMandatoryHeadersArePresent(String... headers)
    • getHeaders

      protected String[] getHeaders() throws ImportRuntimeException
      Throws:
      ImportRuntimeException
    • getNonIgnoredHeaders

      protected List<ImportableColumn<E,Object>> getNonIgnoredHeaders()
    • getAllMandatoryHeaders

      protected List<ImportableColumn<E,?>> getAllMandatoryHeaders()
    • readRow

      protected boolean readRow() throws ImportRuntimeException
      Read the next row from the reader and return true if line was successfully read.
      Returns:
      true if line was successfully read, says in fact there is something after this line.
      Throws:
      ImportRuntimeException - if could not read line