Replaced snapshot versions and addressed deprications
This commit moves all SNAPSHOT dependencies to the latest available released versions. It also addresses a number of deprications in the Spring Data realm. Specifically around the deprication of the Neo4JOperations and the package reorganization within Hibernate.
This commit is contained in:
@@ -20,6 +20,7 @@ import java.util.Map;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.neo4j.ogm.session.SessionFactory;
|
||||
|
||||
import org.springframework.batch.item.ItemReader;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
@@ -63,6 +64,7 @@ public abstract class AbstractNeo4jItemReader<T> extends
|
||||
protected Log logger = LogFactory.getLog(getClass());
|
||||
|
||||
private Neo4jOperations template;
|
||||
private SessionFactory sessionFactory;
|
||||
|
||||
private String startStatement;
|
||||
private String returnStatement;
|
||||
@@ -143,16 +145,31 @@ public abstract class AbstractNeo4jItemReader<T> extends
|
||||
this.orderByStatement = orderByStatement;
|
||||
}
|
||||
|
||||
protected SessionFactory getSessionFactory() {
|
||||
return sessionFactory;
|
||||
}
|
||||
|
||||
public void setSessionFactory(SessionFactory sessionFactory) {
|
||||
this.sessionFactory = sessionFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to perform operations against the Neo4J database.
|
||||
*
|
||||
* @param template the Neo4jOperations instance to use
|
||||
* @see Neo4jOperations
|
||||
* @deprecated Use {@link #setSessionFactory(SessionFactory)}
|
||||
*/
|
||||
@Deprecated
|
||||
public void setTemplate(Neo4jOperations template) {
|
||||
this.template = template;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the {@link Neo4jOperations}
|
||||
* @deprecated Use {@link #getSessionFactory()}
|
||||
*/
|
||||
@Deprecated
|
||||
protected final Neo4jOperations getTemplate() {
|
||||
return this.template;
|
||||
}
|
||||
@@ -197,7 +214,8 @@ public abstract class AbstractNeo4jItemReader<T> extends
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.state(template != null, "A Neo4JOperations implementation is required");
|
||||
Assert.state(template != null || sessionFactory != null,
|
||||
"A Neo4JOperations implementation or SessionFactory is required");
|
||||
Assert.state(targetType != null, "The type to be returned is required");
|
||||
Assert.state(StringUtils.hasText(startStatement), "A START statement is required");
|
||||
Assert.state(StringUtils.hasText(returnStatement), "A RETURN statement is required");
|
||||
|
||||
@@ -18,6 +18,9 @@ package org.springframework.batch.item.data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.neo4j.ogm.session.Session;
|
||||
import org.neo4j.ogm.session.SessionFactory;
|
||||
//
|
||||
//import org.springframework.data.neo4j.conversion.ResultConverter;
|
||||
|
||||
@@ -32,8 +35,22 @@ public class Neo4jItemReader<T> extends AbstractNeo4jItemReader {
|
||||
|
||||
@Override
|
||||
protected Iterator<T> doPageRead() {
|
||||
Iterable queryResults = getTemplate().queryForObjects(
|
||||
getTargetType(), generateLimitCypherQuery(), getParameterValues());
|
||||
SessionFactory factory = getSessionFactory();
|
||||
|
||||
Iterable<T> queryResults;
|
||||
|
||||
if(factory != null) {
|
||||
Session session = factory.openSession();
|
||||
|
||||
queryResults = session.query(getTargetType(),
|
||||
generateLimitCypherQuery(),
|
||||
getParameterValues());
|
||||
}
|
||||
else {
|
||||
queryResults = getTemplate().queryForObjects(
|
||||
getTargetType(), generateLimitCypherQuery(), getParameterValues());
|
||||
|
||||
}
|
||||
|
||||
if(queryResults != null) {
|
||||
return queryResults.iterator();
|
||||
|
||||
@@ -20,6 +20,9 @@ import java.util.List;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.neo4j.ogm.session.Session;
|
||||
import org.neo4j.ogm.session.SessionFactory;
|
||||
|
||||
import org.springframework.batch.item.ItemWriter;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.data.neo4j.template.Neo4jOperations;
|
||||
@@ -28,8 +31,7 @@ import org.springframework.util.CollectionUtils;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* A {@link ItemWriter} implementation that writes to a Neo4j database using an
|
||||
* implementation of Spring Data's {@link Neo4jOperations}.
|
||||
* A {@link ItemWriter} implementation that writes to a Neo4j database.
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
@@ -49,6 +51,10 @@ public class Neo4jItemWriter<T> implements ItemWriter<T>, InitializingBean {
|
||||
|
||||
private Neo4jOperations template;
|
||||
|
||||
private SessionFactory sessionFactory;
|
||||
|
||||
private boolean useSession = false;
|
||||
|
||||
public void setDelete(boolean delete) {
|
||||
this.delete = delete;
|
||||
}
|
||||
@@ -57,11 +63,17 @@ public class Neo4jItemWriter<T> implements ItemWriter<T>, InitializingBean {
|
||||
* Set the {@link Neo4jOperations} to be used to save items
|
||||
*
|
||||
* @param template the template implementation to be used
|
||||
* @deprecated Use {@link #setSessionFactory(SessionFactory)}
|
||||
*/
|
||||
@Deprecated
|
||||
public void setTemplate(Neo4jOperations template) {
|
||||
this.template = template;
|
||||
}
|
||||
|
||||
public void setSessionFactory(SessionFactory sessionFactory) {
|
||||
this.sessionFactory = sessionFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks mandatory properties
|
||||
*
|
||||
@@ -69,7 +81,10 @@ public class Neo4jItemWriter<T> implements ItemWriter<T>, InitializingBean {
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.state(template != null, "A Neo4JOperations implementation is required");
|
||||
Assert.state(template != null || this.sessionFactory != null,
|
||||
"A Neo4JOperations implementation or a SessionFactory is required");
|
||||
|
||||
this.useSession = this.sessionFactory != null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -92,13 +107,35 @@ public class Neo4jItemWriter<T> implements ItemWriter<T>, InitializingBean {
|
||||
*/
|
||||
protected void doWrite(List<? extends T> items) {
|
||||
if(delete) {
|
||||
for (T t : items) {
|
||||
template.delete(t);
|
||||
}
|
||||
delete(items);
|
||||
}
|
||||
else {
|
||||
for (T t : items) {
|
||||
template.save(t);
|
||||
save(items);
|
||||
}
|
||||
}
|
||||
|
||||
private void delete(List<? extends T> items) {
|
||||
if(this.useSession) {
|
||||
Session session = this.sessionFactory.openSession();
|
||||
|
||||
items.forEach(session::delete);
|
||||
}
|
||||
else {
|
||||
for (T item : items) {
|
||||
this.template.delete(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void save(List<? extends T> items) {
|
||||
if(this.useSession) {
|
||||
Session session = this.sessionFactory.openSession();
|
||||
|
||||
items.forEach(session::save);
|
||||
}
|
||||
else {
|
||||
for (T item : items) {
|
||||
this.template.save(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,12 +20,13 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.hibernate.Query;
|
||||
import org.hibernate.query.Query;
|
||||
import org.hibernate.ScrollMode;
|
||||
import org.hibernate.ScrollableResults;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.hibernate.StatelessSession;
|
||||
|
||||
import org.springframework.batch.item.database.orm.HibernateQueryProvider;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
package org.springframework.batch.item.database.orm;
|
||||
|
||||
import org.hibernate.Query;
|
||||
import org.hibernate.query.Query;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.StatelessSession;
|
||||
|
||||
|
||||
@@ -16,8 +16,9 @@
|
||||
|
||||
package org.springframework.batch.item.database.orm;
|
||||
|
||||
import org.hibernate.Query;
|
||||
import org.hibernate.SQLQuery;
|
||||
import org.hibernate.query.NativeQuery;
|
||||
import org.hibernate.query.Query;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
@@ -40,12 +41,12 @@ public class HibernateNativeQueryProvider<E> extends AbstractHibernateQueryProvi
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Create an {@link SQLQuery} from the session provided (preferring
|
||||
* Create an {@link NativeQuery} from the session provided (preferring
|
||||
* stateless if both are available).
|
||||
* </p>
|
||||
*/
|
||||
@Override
|
||||
public SQLQuery createQuery() {
|
||||
public NativeQuery createQuery() {
|
||||
|
||||
if (isStatelessSession()) {
|
||||
return getStatelessSession().createNativeQuery(sqlQuery).addEntity(entityClass);
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
package org.springframework.batch.item.database.orm;
|
||||
|
||||
import org.hibernate.Query;
|
||||
import org.hibernate.query.Query;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.StatelessSession;
|
||||
import org.springframework.batch.item.ItemReader;
|
||||
|
||||
Reference in New Issue
Block a user