Class MongoPagingItemReader<T>

Type Parameters:
T - type of items to read
All Implemented Interfaces:
ItemReader<T>, ItemStream, ItemStreamReader<T>, org.springframework.beans.factory.InitializingBean

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

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

If you set JSON String query setQuery(String) then it executes the JSON to retrieve the requested documents.

If you set Query object setQuery(Query) then it executes the Query 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 String 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).

Since:
5.1
Author:
Michael Minella, Takaaki Iida, Mahmoud Ben Hassine, Parikshit Dutta
  • Field Details

    • template

      protected org.springframework.data.mongodb.core.MongoOperations template
    • query

      protected org.springframework.data.mongodb.core.query.Query query
    • queryString

      protected String queryString
    • type

      protected Class<? extends T> type
    • sort

      protected org.springframework.data.domain.Sort sort
    • hint

      protected String hint
    • fields

      protected String fields
    • collection

      protected String collection
    • parameterValues

      protected List<Object> parameterValues
  • Constructor Details

    • MongoPagingItemReader

      public MongoPagingItemReader()
  • Method Details

    • setQuery

      public void setQuery(org.springframework.data.mongodb.core.query.Query query)
      A Mongo Query to be used.
      Parameters:
      query - Mongo Query to be used.
    • 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(String queryString)
      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:
      queryString - JSON formatted Mongo query
    • setTargetType

      public void setTargetType(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(List<Object> parameterValues)
      List of values to be substituted in for each of the parameters in the query.
      Parameters:
      parameterValues - values
    • setFields

      public void setFields(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(Map<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(String collection)
      Parameters:
      collection - Mongo collection to be queried.
    • setHint

      public void setHint(String hint)
      JSON String telling MongoDB what index to use.
      Parameters:
      hint - string indicating what index to use.
    • doPageRead

      protected 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 Exception
      Checks mandatory properties
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      Throws:
      Exception
      See Also:
      • InitializingBean.afterPropertiesSet()
    • replacePlaceholders

      protected String replacePlaceholders(String input, List<Object> values)
    • convertToSort

      protected org.springframework.data.domain.Sort convertToSort(Map<String,org.springframework.data.domain.Sort.Direction> sorts)