Class AbstractNeo4jItemReader<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.AbstractNeo4jItemReader<T>
- All Implemented Interfaces:
ItemReader<T>
,ItemStream
,ItemStreamReader<T>
,org.springframework.beans.factory.InitializingBean
- Direct Known Subclasses:
Neo4jItemReader
public abstract class AbstractNeo4jItemReader<T> extends AbstractPaginatedDataItemReader<T> implements org.springframework.beans.factory.InitializingBean
Restartable
ItemReader
that reads objects from the graph database Neo4j via a paging technique.It executes cypher queries built from the statement fragments provided to retrieve the requested data. The query is executed using paged requests of a size specified in
AbstractPaginatedDataItemReader.setPageSize(int)
. Additional pages are requested as needed when theAbstractItemCountingItemStreamItemReader.read()
method is called. On restart, the reader will begin again at the same number item it left off at.Performance is dependent on your Neo4J configuration (embedded or remote) as well as page size. Setting a fairly large page size and using a commit interval that matches the page size should provide better performance.
This implementation is thread-safe between calls to
AbstractItemCountingItemStreamItemReader.open(org.springframework.batch.item.ExecutionContext)
, however you should setsaveState=false
if used in a multi-threaded environment (no restart available).- Since:
- 3.07
- Author:
- Michael Minella
Field Summary
Fields Modifier and Type Field Description protected org.apache.commons.logging.Log
logger
Fields inherited from class org.springframework.batch.item.data.AbstractPaginatedDataItemReader
page, pageSize, results
Constructor Summary
Constructors Constructor Description AbstractNeo4jItemReader()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
afterPropertiesSet()
Checks mandatory propertiesprotected java.lang.String
generateLimitCypherQuery()
protected java.util.Map<java.lang.String,java.lang.Object>
getParameterValues()
protected org.neo4j.ogm.session.SessionFactory
getSessionFactory()
protected java.lang.Class<T>
getTargetType()
void
setMatchStatement(java.lang.String matchStatement)
An optional match fragment of the cypher query.void
setOrderByStatement(java.lang.String orderByStatement)
A list of properties to order the results by.void
setParameterValues(java.util.Map<java.lang.String,java.lang.Object> parameterValues)
Optional parameters to be used in the cypher query.void
setReturnStatement(java.lang.String returnStatement)
The return statement of the cypher query.void
setSessionFactory(org.neo4j.ogm.session.SessionFactory sessionFactory)
Establish the session factory for the reader.void
setStartStatement(java.lang.String startStatement)
The start segment of the cypher query.void
setTargetType(java.lang.Class<T> targetType)
The object type to be returned from each call toAbstractItemCountingItemStreamItemReader.read()
void
setWhereStatement(java.lang.String whereStatement)
An optional where fragment of the cypher query.Methods inherited from class org.springframework.batch.item.data.AbstractPaginatedDataItemReader
doClose, doOpen, doPageRead, 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
Method Detail
setParameterValues
public void setParameterValues(java.util.Map<java.lang.String,java.lang.Object> parameterValues)
Optional parameters to be used in the cypher query.- Parameters:
parameterValues
- the parameter values to be used in the cypher query
getParameterValues
protected final java.util.Map<java.lang.String,java.lang.Object> getParameterValues()
setStartStatement
public void setStartStatement(java.lang.String startStatement)
The start segment of the cypher query. START is prepended to the statement provided and should not be included.- Parameters:
startStatement
- the start fragment of the cypher query.
setReturnStatement
public void setReturnStatement(java.lang.String returnStatement)
The return statement of the cypher query. RETURN is prepended to the statement provided and should not be included- Parameters:
returnStatement
- the return fragment of the cypher query.
setMatchStatement
public void setMatchStatement(java.lang.String matchStatement)
An optional match fragment of the cypher query. MATCH is prepended to the statement provided and should not be included.- Parameters:
matchStatement
- the match fragment of the cypher query
setWhereStatement
public void setWhereStatement(java.lang.String whereStatement)
An optional where fragment of the cypher query. WHERE is prepended to the statement provided and should not be included.- Parameters:
whereStatement
- where fragment of the cypher query
setOrderByStatement
public void setOrderByStatement(java.lang.String orderByStatement)
A list of properties to order the results by. This is required so that subsequent page requests pull back the segment of results correctly. ORDER BY is prepended to the statement provided and should not be included.- Parameters:
orderByStatement
- order by fragment of the cypher query.
getSessionFactory
protected org.neo4j.ogm.session.SessionFactory getSessionFactory()
setSessionFactory
public void setSessionFactory(org.neo4j.ogm.session.SessionFactory sessionFactory)
Establish the session factory for the reader.- Parameters:
sessionFactory
- the factory to use for the reader.
setTargetType
public void setTargetType(java.lang.Class<T> targetType)
The object type to be returned from each call toAbstractItemCountingItemStreamItemReader.read()
- Parameters:
targetType
- the type of object to return.
getTargetType
protected final java.lang.Class<T> getTargetType()
generateLimitCypherQuery
protected java.lang.String generateLimitCypherQuery()
afterPropertiesSet
public void afterPropertiesSet() throws java.lang.Exception
Checks mandatory properties- Specified by:
afterPropertiesSet
in interfaceorg.springframework.beans.factory.InitializingBean
- Throws:
java.lang.Exception
- See Also:
InitializingBean.afterPropertiesSet()