org.springframework.batch.item.ldif

## Class LdifReader

- java.lang.Object
- - org.springframework.batch.item.ItemStreamSupport
  - - org.springframework.batch.item.support.AbstractItemStreamItemReader<T>
    - - org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader<org.springframework.ldap.core.LdapAttributes>
      - - org.springframework.batch.item.ldif.LdifReader

- All Implemented Interfaces:
    ResourceAwareItemReaderItemStream<org.springframework.ldap.core.LdapAttributes>, ItemReader<org.springframework.ldap.core.LdapAttributes>, ItemStream, ItemStreamReader<org.springframework.ldap.core.LdapAttributes>, org.springframework.beans.factory.InitializingBean

      public class LdifReader
      extends AbstractItemCountingItemStreamItemReader<org.springframework.ldap.core.LdapAttributes>
      implements ResourceAwareItemReaderItemStream<org.springframework.ldap.core.LdapAttributes>, org.springframework.beans.factory.InitializingBean

  The `LdifReader` is an adaptation of the `FlatFileItemReader` built around an `LdifParser`.

  Unlike the `FlatFileItemReader`, the `LdifReader` does not require a mapper. Instead, this version of the `LdifReader` simply returns an `LdapAttributes` object which can be consumed and manipulated as necessary by `ItemProcessor` or any output service. Alternatively, the `RecordMapper` interface can be implemented and set in a `MappingLdifReader` to map records to objects for return.

  `LdifReader` usage is mimics that of the `FlatFileItemReader` for all intensive purposes. Adjustments have been made to process records instead of lines, however. As such, the `recordsToSkip` attribute indicates the number of records from the top of the file that should not be processed. Implementations of the `RecordCallbackHandler` interface can be used to execute operations on those skipped records.

  As with the `FlatFileItemReader`, the `strict` option differentiates between whether or not to require the resource to exist before processing. In the case of a value set to false, a warning is logged instead of an exception being thrown.

  Author:
    Keith Barlow

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `LdifReader()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()`
    `protected void` | `doClose()` Close the resources opened in `AbstractItemCountingItemStreamItemReader.doOpen()`.
    `protected void` | `doOpen()` Open resources necessary to start reading input.
    `protected org.springframework.ldap.core.LdapAttributes` | `doRead()` Read next item from input.
    `void` | `setRecordsToSkip(int recordsToSkip)` Public setter for the number of lines to skip at the start of a file.
    `void` | `setResource(org.springframework.core.io.Resource resource)` Establishes the resource that will be used as the input for the LdifReader.
    `void` | `setSkippedRecordsCallback(RecordCallbackHandler skippedRecordsCallback)` `RecordCallbackHandler` implementations can be used to take action on skipped records.
    `void` | `setStrict(boolean strict)` In strict mode the reader will throw an exception on `AbstractItemCountingItemStreamItemReader.open(org.springframework.batch.item.ExecutionContext)` if the input resource does not exist.

    - ### Methods inherited from class org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader

      `close, getCurrentItemCount, isSaveState, jumpToItem, open, read, setCurrentItemCount, setMaxItemCount, setSaveState, update`

    - ### Methods inherited from class org.springframework.batch.item.ItemStreamSupport

      `getExecutionContextKey, setExecutionContextName, setName`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.springframework.batch.item.ItemStream

      `close, open, update`

    - ### Methods inherited from interface org.springframework.batch.item.ItemReader

      `read`

- - ### Constructor Detail

    - #### LdifReader

          public LdifReader()

  - ### Method Detail

    - #### setStrict

          public void setStrict(boolean strict)

      In strict mode the reader will throw an exception on `AbstractItemCountingItemStreamItemReader.open(org.springframework.batch.item.ExecutionContext)` if the input resource does not exist.
      Parameters:
        `strict` - true by default

    - #### setSkippedRecordsCallback

          public void setSkippedRecordsCallback(RecordCallbackHandler skippedRecordsCallback)

      `RecordCallbackHandler` implementations can be used to take action on skipped records.
      Parameters:
        `skippedRecordsCallback` - will be called for each one of the initial skipped lines before any items are read.

    - #### setRecordsToSkip

          public void setRecordsToSkip(int recordsToSkip)

      Public setter for the number of lines to skip at the start of a file. Can be used if the file contains a header without useful (column name) information, and without a comment delimiter at the beginning of the lines.
      Parameters:
        `recordsToSkip` - the number of lines to skip

    - #### doClose

          protected void doClose()
                          throws java.lang.Exception

      Description copied from class: `AbstractItemCountingItemStreamItemReader`
      Close the resources opened in `AbstractItemCountingItemStreamItemReader.doOpen()`.
      Specified by:
        `doClose` in class `AbstractItemCountingItemStreamItemReader<org.springframework.ldap.core.LdapAttributes>`
      Throws:
        `java.lang.Exception` - Allows subclasses to throw checked exceptions for interpretation by the framework

    - #### doOpen

          protected void doOpen()
                         throws java.lang.Exception

      Description copied from class: `AbstractItemCountingItemStreamItemReader`
      Open resources necessary to start reading input.
      Specified by:
        `doOpen` in class `AbstractItemCountingItemStreamItemReader<org.springframework.ldap.core.LdapAttributes>`
      Throws:
        `java.lang.Exception` - Allows subclasses to throw checked exceptions for interpretation by the framework

    - #### doRead

          @Nullable
          protected org.springframework.ldap.core.LdapAttributes doRead()
                                                                           throws java.lang.Exception

      Description copied from class: `AbstractItemCountingItemStreamItemReader`
      Read next item from input.
      Specified by:
        `doRead` in class `AbstractItemCountingItemStreamItemReader<org.springframework.ldap.core.LdapAttributes>`
      Returns:
        an item or `null` if the data source is exhausted
      Throws:
        `java.lang.Exception` - Allows subclasses to throw checked exceptions for interpretation by the framework

    - #### setResource

          public void setResource(org.springframework.core.io.Resource resource)

      Establishes the resource that will be used as the input for the LdifReader.
      Specified by:
        `setResource` in interface `ResourceAwareItemReaderItemStream<org.springframework.ldap.core.LdapAttributes>`
      Parameters:
        `resource` - the resource that will be read.

    - #### afterPropertiesSet

          public void afterPropertiesSet()
                                  throws java.lang.Exception

      Specified by:
        `afterPropertiesSet` in interface `org.springframework.beans.factory.InitializingBean`
      Throws:
        `java.lang.Exception`