org.springframework.batch.item.data

## Class MongoItemReader<T>

- java.lang.Object
- - org.springframework.batch.item.ItemStreamSupport
  - - org.springframework.batch.item.support.AbstractItemStreamItemReader<T>
    - - org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader<T>
      - - org.springframework.batch.item.data.AbstractPaginatedDataItemReader<T>
        - - org.springframework.batch.item.data.MongoItemReader<T>

- All Implemented Interfaces:
    ItemReader<T>, ItemStream, ItemStreamReader<T>, org.springframework.beans.factory.InitializingBean

      public class MongoItemReader<T>
      extends AbstractPaginatedDataItemReader<T>
      implements org.springframework.beans.factory.InitializingBean

  Restartable `ItemReader` that reads documents from MongoDB via a paging technique.

  It executes the JSON `setQuery(String)` to retrieve the requested documents. The query is executed using paged requests specified in the `AbstractPaginatedDataItemReader.setPageSize(int)`. Additional pages are requested as needed to provide data when the `AbstractItemCountingItemStreamItemReader.read()` method is called.

  The JSON query provided supports parameter substitution via ?<index> placeholders where the <index> indicates the index of the parameterValue to substitute.

  The implementation is thread-safe between calls to `AbstractItemCountingItemStreamItemReader.open(ExecutionContext)`, but remember to use `saveState=false` if used in a multi-threaded client (no restart available).

  Author:
    Michael Minella

- - ### Field Summary

    - ### Fields inherited from class org.springframework.batch.item.data.AbstractPaginatedDataItemReader

      `page, pageSize, results`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MongoItemReader()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()` Checks mandatory properties
    `protected java.util.Iterator<T>` | `doPageRead()` Method this `ItemStreamReader` delegates to for the actual work of reading a page.
    `void` | `setCollection(java.lang.String collection)`
    `void` | `setFields(java.lang.String fields)` JSON defining the fields to be returned from the matching documents by MongoDB.
    `void` | `setHint(java.lang.String hint)` JSON String telling MongoDB what index to use.
    `void` | `setParameterValues(java.util.List<java.lang.Object> parameterValues)` `List` of values to be substituted in for each of the parameters in the query.
    `void` | `setQuery(java.lang.String query)` A JSON formatted MongoDB query.
    `void` | `setSort(java.util.Map<java.lang.String,org.springframework.data.domain.Sort.Direction> sorts)` `Map` of property names/`Sort.Direction` values to sort the input by.
    `void` | `setTargetType(java.lang.Class<? extends T> type)` The type of object to be returned for each `AbstractItemCountingItemStreamItemReader.read()` call.
    `void` | `setTemplate(org.springframework.data.mongodb.core.MongoOperations template)` Used to perform operations against the MongoDB instance.

    - ### Methods inherited from class org.springframework.batch.item.data.AbstractPaginatedDataItemReader

      `doClose, doOpen, doRead, jumpToItem, setPageSize`

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

      `close, getCurrentItemCount, isSaveState, 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`

- - ### Constructor Detail

    - #### MongoItemReader

          public MongoItemReader()

  - ### Method Detail

    - #### setTemplate

          public void setTemplate(org.springframework.data.mongodb.core.MongoOperations template)

      Used to perform operations against the MongoDB instance. Also handles the mapping of documents to objects.
      Parameters:
        `template` - the MongoOperations instance to use
      See Also:
        `MongoOperations`

    - #### setQuery

          public void setQuery(java.lang.String query)

      A JSON formatted MongoDB query. Parameterization of the provided query is allowed via ?<index> placeholders where the <index> indicates the index of the parameterValue to substitute.
      Parameters:
        `query` - JSON formatted Mongo query

    - #### setTargetType

          public void setTargetType(java.lang.Class<? extends T> type)

      The type of object to be returned for each `AbstractItemCountingItemStreamItemReader.read()` call.
      Parameters:
        `type` - the type of object to return

    - #### setParameterValues

          public void setParameterValues(java.util.List<java.lang.Object> parameterValues)

      `List` of values to be substituted in for each of the parameters in the query.
      Parameters:
        `parameterValues` -

    - #### setFields

          public void setFields(java.lang.String fields)

      JSON defining the fields to be returned from the matching documents by MongoDB.
      Parameters:
        `fields` - JSON string that identifies the fields to sort by.

    - #### setSort

          public void setSort(java.util.Map<java.lang.String,org.springframework.data.domain.Sort.Direction> sorts)

      `Map` of property names/`Sort.Direction` values to sort the input by.
      Parameters:
        `sorts` - map of properties and direction to sort each.

    - #### setCollection

          public void setCollection(java.lang.String collection)

      Parameters:
        `collection` - Mongo collection to be queried.

    - #### setHint

          public void setHint(java.lang.String hint)

      JSON String telling MongoDB what index to use.
      Parameters:
        `hint` - string indicating what index to use.

    - #### doPageRead

          protected java.util.Iterator<T> doPageRead()

      Description copied from class: `AbstractPaginatedDataItemReader`
      Method this `ItemStreamReader` delegates to for the actual work of reading a page. Each time this method is called, the resulting `Iterator` should contain the items read within the next page.
      If the `Iterator` is empty or null when it is returned, this `ItemReader` will assume that the input has been exhausted.
      Specified by:
        `doPageRead` in class `AbstractPaginatedDataItemReader<T>`
      Returns:
        an `Iterator` containing the items within a page.

    - #### afterPropertiesSet

          public void afterPropertiesSet()
                                  throws java.lang.Exception

      Checks mandatory properties
      Specified by:
        `afterPropertiesSet` in interface `org.springframework.beans.factory.InitializingBean`
      Throws:
        `java.lang.Exception`
      See Also:
        `InitializingBean.afterPropertiesSet()`