Skip to content

Commit 74dd072

Browse files
committed
Review: reformat
1 parent f88eec1 commit 74dd072

File tree

8 files changed

+1136
-1135
lines changed

8 files changed

+1136
-1135
lines changed

spring-batch-neo4j/src/main/java/org/springframework/batch/extensions/neo4j/Neo4jItemReader.java

Lines changed: 76 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -58,87 +58,86 @@
5858
* </p>
5959
*
6060
* @param <T> type of entity to load
61-
*
6261
* @author Michael Minella
6362
* @author Mahmoud Ben Hassine
6463
* @author Gerrit Meier
6564
*/
6665
public class Neo4jItemReader<T> extends AbstractPaginatedDataItemReader<T> implements InitializingBean {
6766

68-
private final Log logger = LogFactory.getLog(getClass());
69-
70-
private Neo4jTemplate neo4jTemplate;
71-
72-
private StatementBuilder.OngoingReadingAndReturn statement;
73-
74-
private Class<T> targetType;
75-
76-
private Map<String, Object> parameterValues;
77-
78-
/**
79-
* Optional parameters to be used in the cypher query.
80-
*
81-
* @param parameterValues the parameter values to be used in the cypher query
82-
*/
83-
public void setParameterValues(Map<String, Object> parameterValues) {
84-
this.parameterValues = parameterValues;
85-
}
86-
87-
/**
88-
* Cypher-DSL's {@link org.neo4j.cypherdsl.core.StatementBuilder.OngoingReadingAndReturn} statement
89-
* without skip and limit segments. Those will get added by the pagination mechanism later.
90-
*
91-
* @param statement the Cypher-DSL statement-in-construction.
92-
*/
93-
public void setStatement(StatementBuilder.OngoingReadingAndReturn statement) {
94-
this.statement = statement;
95-
}
96-
97-
/**
98-
* Establish the Neo4jTemplate for the reader.
99-
*
100-
* @param neo4jTemplate the template to use for the reader.
101-
*/
102-
public void setNeo4jTemplate(Neo4jTemplate neo4jTemplate) {
103-
this.neo4jTemplate = neo4jTemplate;
104-
}
105-
106-
/**
107-
* The object type to be returned from each call to {@link #read()}
108-
*
109-
* @param targetType the type of object to return.
110-
*/
111-
public void setTargetType(Class<T> targetType) {
112-
this.targetType = targetType;
113-
}
114-
115-
private Statement generateStatement() {
116-
Statement builtStatement = statement
117-
.skip(page * pageSize)
118-
.limit(pageSize)
119-
.build();
120-
if (logger.isDebugEnabled()) {
121-
logger.debug(Renderer.getDefaultRenderer().render(builtStatement));
122-
}
123-
124-
return builtStatement;
125-
}
126-
127-
/**
128-
* Checks mandatory properties
129-
*
130-
* @see InitializingBean#afterPropertiesSet()
131-
*/
132-
@Override
133-
public void afterPropertiesSet() {
134-
Assert.state(neo4jTemplate != null, "A Neo4jTemplate is required");
135-
Assert.state(targetType != null, "The type to be returned is required");
136-
Assert.state(statement != null, "A statement is required");
137-
}
138-
139-
@SuppressWarnings("unchecked")
140-
@Override
141-
protected Iterator<T> doPageRead() {
142-
return neo4jTemplate.findAll(generateStatement(), parameterValues, targetType).iterator();
143-
}
67+
private final Log logger = LogFactory.getLog(getClass());
68+
69+
private Neo4jTemplate neo4jTemplate;
70+
71+
private StatementBuilder.OngoingReadingAndReturn statement;
72+
73+
private Class<T> targetType;
74+
75+
private Map<String, Object> parameterValues;
76+
77+
/**
78+
* Optional parameters to be used in the cypher query.
79+
*
80+
* @param parameterValues the parameter values to be used in the cypher query
81+
*/
82+
public void setParameterValues(Map<String, Object> parameterValues) {
83+
this.parameterValues = parameterValues;
84+
}
85+
86+
/**
87+
* Cypher-DSL's {@link org.neo4j.cypherdsl.core.StatementBuilder.OngoingReadingAndReturn} statement
88+
* without skip and limit segments. Those will get added by the pagination mechanism later.
89+
*
90+
* @param statement the Cypher-DSL statement-in-construction.
91+
*/
92+
public void setStatement(StatementBuilder.OngoingReadingAndReturn statement) {
93+
this.statement = statement;
94+
}
95+
96+
/**
97+
* Establish the Neo4jTemplate for the reader.
98+
*
99+
* @param neo4jTemplate the template to use for the reader.
100+
*/
101+
public void setNeo4jTemplate(Neo4jTemplate neo4jTemplate) {
102+
this.neo4jTemplate = neo4jTemplate;
103+
}
104+
105+
/**
106+
* The object type to be returned from each call to {@link #read()}
107+
*
108+
* @param targetType the type of object to return.
109+
*/
110+
public void setTargetType(Class<T> targetType) {
111+
this.targetType = targetType;
112+
}
113+
114+
private Statement generateStatement() {
115+
Statement builtStatement = statement
116+
.skip(page * pageSize)
117+
.limit(pageSize)
118+
.build();
119+
if (logger.isDebugEnabled()) {
120+
logger.debug(Renderer.getDefaultRenderer().render(builtStatement));
121+
}
122+
123+
return builtStatement;
124+
}
125+
126+
/**
127+
* Checks mandatory properties
128+
*
129+
* @see InitializingBean#afterPropertiesSet()
130+
*/
131+
@Override
132+
public void afterPropertiesSet() {
133+
Assert.state(neo4jTemplate != null, "A Neo4jTemplate is required");
134+
Assert.state(targetType != null, "The type to be returned is required");
135+
Assert.state(statement != null, "A statement is required");
136+
}
137+
138+
@SuppressWarnings("unchecked")
139+
@Override
140+
protected Iterator<T> doPageRead() {
141+
return neo4jTemplate.findAll(generateStatement(), parameterValues, targetType).iterator();
142+
}
144143
}

spring-batch-neo4j/src/main/java/org/springframework/batch/extensions/neo4j/Neo4jItemWriter.java

Lines changed: 102 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -44,112 +44,113 @@
4444
* </p>
4545
*
4646
* @param <T> type of the entity to write
47-
*
4847
* @author Michael Minella
4948
* @author Glenn Renfro
5049
* @author Mahmoud Ben Hassine
5150
* @author Gerrit Meier
5251
*/
5352
public class Neo4jItemWriter<T> implements ItemWriter<T>, InitializingBean {
5453

55-
private boolean delete = false;
56-
57-
private Neo4jTemplate neo4jTemplate;
58-
private Neo4jMappingContext neo4jMappingContext;
59-
private Driver neo4jDriver;
60-
61-
/**
62-
* Boolean flag indicating whether the writer should save or delete the item at write
63-
* time.
64-
* @param delete true if write should delete item, false if item should be saved.
65-
* Default is false.
66-
*/
67-
public void setDelete(boolean delete) {
68-
this.delete = delete;
69-
}
70-
71-
/**
72-
* Establish the neo4jTemplate for interacting with Neo4j.
73-
* @param neo4jTemplate neo4jTemplate to be used.
74-
*/
75-
public void setNeo4jTemplate(Neo4jTemplate neo4jTemplate) {
76-
this.neo4jTemplate = neo4jTemplate;
77-
}
78-
79-
/**
80-
* Set the Neo4j driver to be used for the delete operation
81-
* @param neo4jDriver configured Neo4j driver instance
82-
*/
83-
public void setNeo4jDriver(Driver neo4jDriver) {
84-
this.neo4jDriver = neo4jDriver;
85-
}
86-
87-
/**
88-
* Neo4jMappingContext needed for determine the id type of the entity instances.
89-
*
90-
* @param neo4jMappingContext initialized mapping context
91-
*/
92-
public void setNeo4jMappingContext(Neo4jMappingContext neo4jMappingContext) {
93-
this.neo4jMappingContext = neo4jMappingContext;
94-
}
95-
96-
/**
97-
* Checks mandatory properties
98-
*
99-
* @see InitializingBean#afterPropertiesSet()
100-
*/
101-
@Override
102-
public void afterPropertiesSet() {
103-
Assert.state(this.neo4jTemplate != null, "A Neo4jTemplate is required");
104-
Assert.state(this.neo4jMappingContext != null, "A Neo4jMappingContext is required");
105-
Assert.state(this.neo4jDriver != null, "A Neo4j driver is required");
106-
}
107-
108-
/**
109-
* Write all items to the data store.
110-
*
111-
* @see org.springframework.batch.item.ItemWriter#write(Chunk chunk)
112-
*/
113-
@Override
114-
public void write(@NonNull Chunk<? extends T> chunk) {
115-
if (!chunk.isEmpty()) {
116-
doWrite(chunk.getItems());
117-
}
118-
}
119-
120-
/**
121-
* Performs the actual write using the template. This can be overridden by
122-
* a subclass if necessary.
123-
*
124-
* @param items the list of items to be persisted.
125-
*/
126-
protected void doWrite(List<? extends T> items) {
127-
if(delete) {
128-
delete(items);
129-
}
130-
else {
131-
save(items);
132-
}
133-
}
134-
135-
private void delete(List<? extends T> items) {
136-
for(T item : items) {
137-
// Figure out id field individually because different
138-
// id strategies could have been taken for classes within a
139-
// business model hierarchy.
140-
Neo4jPersistentEntity<?> nodeDescription = (Neo4jPersistentEntity<?>) this.neo4jMappingContext.getNodeDescription(item.getClass());
141-
Object identifier = nodeDescription.getIdentifierAccessor(item).getRequiredIdentifier();
142-
Node named = Cypher.anyNode().named(nodeDescription.getPrimaryLabel());
143-
Statement statement = Cypher.match(named)
144-
.where(nodeDescription.getIdDescription().asIdExpression(nodeDescription.getPrimaryLabel()).eq(Cypher.parameter("id")))
145-
.detachDelete(named).build();
146-
147-
String renderedStatement = Renderer.getDefaultRenderer().render(statement);
148-
this.neo4jDriver.executableQuery(renderedStatement).withParameters(Map.of("id", identifier)).execute();
149-
}
150-
}
151-
152-
private void save(List<? extends T> items) {
153-
this.neo4jTemplate.saveAll(items);
154-
}
54+
private boolean delete = false;
55+
56+
private Neo4jTemplate neo4jTemplate;
57+
private Neo4jMappingContext neo4jMappingContext;
58+
private Driver neo4jDriver;
59+
60+
/**
61+
* Boolean flag indicating whether the writer should save or delete the item at write
62+
* time.
63+
*
64+
* @param delete true if write should delete item, false if item should be saved.
65+
* Default is false.
66+
*/
67+
public void setDelete(boolean delete) {
68+
this.delete = delete;
69+
}
70+
71+
/**
72+
* Establish the neo4jTemplate for interacting with Neo4j.
73+
*
74+
* @param neo4jTemplate neo4jTemplate to be used.
75+
*/
76+
public void setNeo4jTemplate(Neo4jTemplate neo4jTemplate) {
77+
this.neo4jTemplate = neo4jTemplate;
78+
}
79+
80+
/**
81+
* Set the Neo4j driver to be used for the delete operation
82+
*
83+
* @param neo4jDriver configured Neo4j driver instance
84+
*/
85+
public void setNeo4jDriver(Driver neo4jDriver) {
86+
this.neo4jDriver = neo4jDriver;
87+
}
88+
89+
/**
90+
* Neo4jMappingContext needed for determine the id type of the entity instances.
91+
*
92+
* @param neo4jMappingContext initialized mapping context
93+
*/
94+
public void setNeo4jMappingContext(Neo4jMappingContext neo4jMappingContext) {
95+
this.neo4jMappingContext = neo4jMappingContext;
96+
}
97+
98+
/**
99+
* Checks mandatory properties
100+
*
101+
* @see InitializingBean#afterPropertiesSet()
102+
*/
103+
@Override
104+
public void afterPropertiesSet() {
105+
Assert.state(this.neo4jTemplate != null, "A Neo4jTemplate is required");
106+
Assert.state(this.neo4jMappingContext != null, "A Neo4jMappingContext is required");
107+
Assert.state(this.neo4jDriver != null, "A Neo4j driver is required");
108+
}
109+
110+
/**
111+
* Write all items to the data store.
112+
*
113+
* @see org.springframework.batch.item.ItemWriter#write(Chunk chunk)
114+
*/
115+
@Override
116+
public void write(@NonNull Chunk<? extends T> chunk) {
117+
if (!chunk.isEmpty()) {
118+
doWrite(chunk.getItems());
119+
}
120+
}
121+
122+
/**
123+
* Performs the actual write using the template. This can be overridden by
124+
* a subclass if necessary.
125+
*
126+
* @param items the list of items to be persisted.
127+
*/
128+
protected void doWrite(List<? extends T> items) {
129+
if (delete) {
130+
delete(items);
131+
} else {
132+
save(items);
133+
}
134+
}
135+
136+
private void delete(List<? extends T> items) {
137+
for (T item : items) {
138+
// Figure out id field individually because different
139+
// id strategies could have been taken for classes within a
140+
// business model hierarchy.
141+
Neo4jPersistentEntity<?> nodeDescription = (Neo4jPersistentEntity<?>) this.neo4jMappingContext.getNodeDescription(item.getClass());
142+
Object identifier = nodeDescription.getIdentifierAccessor(item).getRequiredIdentifier();
143+
Node named = Cypher.anyNode().named(nodeDescription.getPrimaryLabel());
144+
Statement statement = Cypher.match(named)
145+
.where(nodeDescription.getIdDescription().asIdExpression(nodeDescription.getPrimaryLabel()).eq(Cypher.parameter("id")))
146+
.detachDelete(named).build();
147+
148+
String renderedStatement = Renderer.getDefaultRenderer().render(statement);
149+
this.neo4jDriver.executableQuery(renderedStatement).withParameters(Map.of("id", identifier)).execute();
150+
}
151+
}
152+
153+
private void save(List<? extends T> items) {
154+
this.neo4jTemplate.saveAll(items);
155+
}
155156
}

0 commit comments

Comments
 (0)