Skip to content

Commit 3ac8898

Browse files
authored
[JAVA-39222] Moving some article links on Github - spring-batch (#17630)
1 parent 026c778 commit 3ac8898

File tree

56 files changed

+313
-103
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+313
-103
lines changed

spring-batch-2/README.md

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
### Relevant Articles:
22

3-
- [Spring Boot With Spring Batch](https://www.baeldung.com/spring-boot-spring-batch)
4-
- [How to Trigger and Stop a Scheduled Spring Batch Job](https://www.baeldung.com/spring-batch-start-stop-job)
5-
- [Access Job Parameters From ItemReader in Spring Batch](https://www.baeldung.com/spring-batch-itemreader-access-job-parameters)
3+
- [Conditional Flow in Spring Batch](https://www.baeldung.com/spring-batch-conditional-flow)
4+
- [Configuring Retry Logic in Spring Batch](https://www.baeldung.com/spring-batch-retry-logic)
65
- More articles [[<-- prev]](/spring-batch)

spring-batch-2/pom.xml

+37-15
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,6 @@
66
<artifactId>spring-batch-2</artifactId>
77
<version>0.1-SNAPSHOT</version>
88
<name>spring-batch-2</name>
9-
<build>
10-
<plugins>
11-
<plugin>
12-
<groupId>org.apache.maven.plugins</groupId>
13-
<artifactId>maven-compiler-plugin</artifactId>
14-
<configuration>
15-
<source>21</source>
16-
<target>21</target>
17-
</configuration>
18-
</plugin>
19-
</plugins>
20-
</build>
219
<packaging>jar</packaging>
2210
<url>http://maven.apache.org</url>
2311

@@ -65,18 +53,52 @@
6553
<artifactId>lombok</artifactId>
6654
<version>${lombok.version}</version>
6755
</dependency>
56+
<dependency>
57+
<groupId>org.glassfish.jaxb</groupId>
58+
<artifactId>jaxb-runtime</artifactId>
59+
<version>${jaxb.version}</version>
60+
</dependency>
61+
<dependency>
62+
<groupId>org.apache.httpcomponents</groupId>
63+
<artifactId>httpclient</artifactId>
64+
<version>${http-client.version}</version>
65+
</dependency>
66+
<dependency>
67+
<groupId>org.codehaus.jettison</groupId>
68+
<artifactId>jettison</artifactId>
69+
<version>${jettison.version}</version>
70+
<scope>compile</scope>
71+
</dependency>
6872
<dependency>
6973
<groupId>org.springframework</groupId>
70-
<artifactId>spring-core</artifactId>
71-
<version>${spring-core.version}</version>
74+
<artifactId>spring-oxm</artifactId>
75+
<version>${spring-oxm.version}</version>
76+
<exclusions>
77+
<exclusion>
78+
<artifactId>commons-logging</artifactId>
79+
<groupId>commons-logging</groupId>
80+
</exclusion>
81+
</exclusions>
7282
</dependency>
7383
</dependencies>
7484

85+
<build>
86+
<plugins>
87+
<plugin>
88+
<groupId>org.apache.maven.plugins</groupId>
89+
<artifactId>maven-compiler-plugin</artifactId>
90+
</plugin>
91+
</plugins>
92+
</build>
93+
7594
<properties>
95+
<spring-oxm.version>6.1.4</spring-oxm.version>
96+
<http-client.version>4.5.14</http-client.version>
97+
<jaxb.version>4.0.2</jaxb.version>
98+
<jettison.version>1.5.4</jettison.version>
7699
<spring.batch.version>5.1.2</spring.batch.version>
77100
<awaitility.version>4.2.1</awaitility.version>
78101
<start-class>com.baeldung.batch.SpringBootBatchProcessingApplication</start-class>
79-
<spring-core.version>6.1.5</spring-core.version>
80102
</properties>
81103

82104
</project>

spring-batch/src/main/java/com/baeldung/batch/SpringBatchRetryConfig.java renamed to spring-batch-2/src/main/java/com/baeldung/batch/SpringBatchRetryConfig.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
package com.baeldung.batch;
22

3-
import com.baeldung.batch.model.Transaction;
4-
import com.baeldung.batch.service.RecordFieldSetMapper;
5-
import com.baeldung.batch.service.RetryItemProcessor;
6-
73
import org.apache.http.client.config.RequestConfig;
84
import org.apache.http.conn.ConnectTimeoutException;
95
import org.apache.http.impl.client.CloseableHttpClient;
@@ -31,6 +27,10 @@
3127
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
3228
import org.springframework.transaction.PlatformTransactionManager;
3329

30+
import com.baeldung.batch.model.Transaction;
31+
import com.baeldung.batch.service.RecordFieldSetMapper;
32+
import com.baeldung.batch.service.RetryItemProcessor;
33+
3434
@Configuration
3535
public class SpringBatchRetryConfig {
3636

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package com.baeldung.batch.model;
2+
3+
import java.time.LocalDateTime;
4+
5+
import com.baeldung.batch.service.adapter.LocalDateTimeAdapter;
6+
7+
import jakarta.xml.bind.annotation.XmlRootElement;
8+
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
9+
10+
@SuppressWarnings("restriction")
11+
@XmlRootElement(name = "transactionRecord")
12+
public class Transaction {
13+
private String username;
14+
private int userId;
15+
private int age;
16+
private String postCode;
17+
private LocalDateTime transactionDate;
18+
private double amount;
19+
20+
/* getters and setters for the attributes */
21+
22+
public String getUsername() {
23+
return username;
24+
}
25+
26+
public void setUsername(String username) {
27+
this.username = username;
28+
}
29+
30+
public int getUserId() {
31+
return userId;
32+
}
33+
34+
public void setUserId(int userId) {
35+
this.userId = userId;
36+
}
37+
38+
@XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
39+
public LocalDateTime getTransactionDate() {
40+
return transactionDate;
41+
}
42+
43+
public void setTransactionDate(LocalDateTime transactionDate) {
44+
this.transactionDate = transactionDate;
45+
}
46+
47+
public double getAmount() {
48+
return amount;
49+
}
50+
51+
public void setAmount(double amount) {
52+
this.amount = amount;
53+
}
54+
55+
public int getAge() {
56+
return age;
57+
}
58+
59+
public void setAge(int age) {
60+
this.age = age;
61+
}
62+
63+
public String getPostCode() {
64+
return postCode;
65+
}
66+
67+
public void setPostCode(String postCode) {
68+
this.postCode = postCode;
69+
}
70+
71+
@Override
72+
public String toString() {
73+
return "Transaction [username=" + username + ", userId=" + userId + ", age=" + age + ", postCode=" + postCode + ", transactionDate=" + transactionDate + ", amount=" + amount + "]";
74+
}
75+
76+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.baeldung.batch.service;
2+
3+
import java.time.LocalDate;
4+
import java.time.format.DateTimeFormatter;
5+
6+
import org.springframework.batch.item.file.mapping.FieldSetMapper;
7+
import org.springframework.batch.item.file.transform.FieldSet;
8+
9+
import com.baeldung.batch.model.Transaction;
10+
11+
public class RecordFieldSetMapper implements FieldSetMapper<Transaction> {
12+
13+
public Transaction mapFieldSet(FieldSet fieldSet) {
14+
15+
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d/M/yyy");
16+
17+
Transaction transaction = new Transaction();
18+
// you can either use the indices or custom names
19+
// I personally prefer the custom names easy for debugging and
20+
// validating the pipelines
21+
transaction.setUsername(fieldSet.readString("username"));
22+
transaction.setUserId(fieldSet.readInt("userid"));
23+
transaction.setAmount(fieldSet.readDouble(3));
24+
25+
// Converting the date
26+
String dateString = fieldSet.readString(2);
27+
transaction.setTransactionDate(LocalDate.parse(dateString, formatter).atStartOfDay());
28+
29+
return transaction;
30+
31+
}
32+
33+
}

spring-batch/src/main/java/com/baeldung/batch/service/RetryItemProcessor.java renamed to spring-batch-2/src/main/java/com/baeldung/batch/service/RetryItemProcessor.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
import org.apache.http.client.methods.HttpGet;
55
import org.apache.http.impl.client.CloseableHttpClient;
66
import org.apache.http.util.EntityUtils;
7-
import com.baeldung.batch.model.Transaction;
8-
97
import org.codehaus.jettison.json.JSONObject;
108
import org.slf4j.Logger;
119
import org.slf4j.LoggerFactory;
1210
import org.springframework.batch.item.ItemProcessor;
1311
import org.springframework.beans.factory.annotation.Autowired;
1412

13+
import com.baeldung.batch.model.Transaction;
14+
1515
public class RetryItemProcessor implements ItemProcessor<Transaction, Transaction> {
1616

1717
private static final Logger LOGGER = LoggerFactory.getLogger(RetryItemProcessor.class);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.baeldung.batch.service.adapter;
2+
3+
import java.time.LocalDateTime;
4+
import java.time.format.DateTimeFormatter;
5+
6+
import jakarta.xml.bind.annotation.adapters.XmlAdapter;
7+
8+
public class LocalDateTimeAdapter extends XmlAdapter<String, LocalDateTime> {
9+
10+
private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
11+
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern(DATE_FORMAT);
12+
13+
public LocalDateTime unmarshal(String v) throws Exception {
14+
return LocalDateTime.parse(v, DATE_TIME_FORMATTER);
15+
}
16+
17+
public String marshal(LocalDateTime v) throws Exception {
18+
return DATE_TIME_FORMATTER.format(v);
19+
}
20+
}

spring-batch/src/main/java/org/baeldung/conditionalflow/ConditionalFlowApplication.java renamed to spring-batch-2/src/main/java/com/baeldung/conditionalflow/ConditionalFlowApplication.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.baeldung.conditionalflow;
1+
package com.baeldung.conditionalflow;
22

33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;

spring-batch/src/main/java/org/baeldung/conditionalflow/NumberInfoDecider.java renamed to spring-batch-2/src/main/java/com/baeldung/conditionalflow/NumberInfoDecider.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.baeldung.conditionalflow;
1+
package com.baeldung.conditionalflow;
22

33
import org.springframework.batch.core.JobExecution;
44
import org.springframework.batch.core.StepExecution;

spring-batch/src/main/java/org/baeldung/conditionalflow/config/NumberInfoConfig.java renamed to spring-batch-2/src/main/java/com/baeldung/conditionalflow/config/NumberInfoConfig.java

+13-8
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
1-
package org.baeldung.conditionalflow.config;
1+
package com.baeldung.conditionalflow.config;
2+
3+
import static com.baeldung.conditionalflow.NumberInfoDecider.NOTIFY;
4+
5+
import javax.sql.DataSource;
6+
7+
import com.baeldung.conditionalflow.NumberInfoDecider;
8+
import com.baeldung.conditionalflow.model.NumberInfo;
9+
import com.baeldung.conditionalflow.step.NotifierTasklet;
10+
import com.baeldung.conditionalflow.step.NumberInfoClassifier;
11+
import com.baeldung.conditionalflow.step.NumberInfoClassifierWithDecider;
12+
import com.baeldung.conditionalflow.step.NumberInfoGenerator;
13+
import com.baeldung.conditionalflow.step.PrependingStdoutWriter;
214

3-
import org.baeldung.conditionalflow.NumberInfoDecider;
4-
import org.baeldung.conditionalflow.model.NumberInfo;
5-
import org.baeldung.conditionalflow.step.*;
615
import org.springframework.batch.core.Job;
716
import org.springframework.batch.core.Step;
817
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
@@ -21,10 +30,6 @@
2130
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
2231
import org.springframework.transaction.PlatformTransactionManager;
2332

24-
import static org.baeldung.conditionalflow.NumberInfoDecider.NOTIFY;
25-
26-
import javax.sql.DataSource;
27-
2833
@Configuration
2934
@EnableBatchProcessing
3035
public class NumberInfoConfig {

spring-batch/src/main/java/org/baeldung/conditionalflow/model/NumberInfo.java renamed to spring-batch-2/src/main/java/com/baeldung/conditionalflow/model/NumberInfo.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.baeldung.conditionalflow.model;
1+
package com.baeldung.conditionalflow.model;
22

33
import java.util.Objects;
44

spring-batch/src/main/java/org/baeldung/conditionalflow/step/NotifierTasklet.java renamed to spring-batch-2/src/main/java/com/baeldung/conditionalflow/step/NotifierTasklet.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.baeldung.conditionalflow.step;
1+
package com.baeldung.conditionalflow.step;
22

33
import org.springframework.batch.core.StepContribution;
44
import org.springframework.batch.core.scope.context.ChunkContext;

spring-batch/src/main/java/org/baeldung/conditionalflow/step/NumberInfoClassifier.java renamed to spring-batch-2/src/main/java/com/baeldung/conditionalflow/step/NumberInfoClassifier.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
package org.baeldung.conditionalflow.step;
1+
package com.baeldung.conditionalflow.step;
22

3-
import org.baeldung.conditionalflow.model.NumberInfo;
3+
import static com.baeldung.conditionalflow.NumberInfoDecider.NOTIFY;
4+
import static com.baeldung.conditionalflow.NumberInfoDecider.QUIET;
5+
6+
import com.baeldung.conditionalflow.model.NumberInfo;
47
import org.springframework.batch.core.ExitStatus;
58
import org.springframework.batch.core.StepExecution;
69
import org.springframework.batch.core.annotation.BeforeStep;
710
import org.springframework.batch.core.listener.ItemListenerSupport;
811
import org.springframework.batch.item.ItemProcessor;
912

10-
import static org.baeldung.conditionalflow.NumberInfoDecider.NOTIFY;
11-
import static org.baeldung.conditionalflow.NumberInfoDecider.QUIET;
12-
1313
public class NumberInfoClassifier extends ItemListenerSupport<NumberInfo, Integer>
1414
implements ItemProcessor<NumberInfo, Integer> {
1515
private StepExecution stepExecution;

spring-batch/src/main/java/org/baeldung/conditionalflow/step/NumberInfoClassifierWithDecider.java renamed to spring-batch-2/src/main/java/com/baeldung/conditionalflow/step/NumberInfoClassifierWithDecider.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package org.baeldung.conditionalflow.step;
1+
package com.baeldung.conditionalflow.step;
22

3-
import org.baeldung.conditionalflow.model.NumberInfo;
3+
import com.baeldung.conditionalflow.model.NumberInfo;
44
import org.springframework.batch.core.listener.ItemListenerSupport;
55
import org.springframework.batch.item.ItemProcessor;
66

spring-batch/src/main/java/org/baeldung/conditionalflow/step/NumberInfoGenerator.java renamed to spring-batch-2/src/main/java/com/baeldung/conditionalflow/step/NumberInfoGenerator.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package org.baeldung.conditionalflow.step;
1+
package com.baeldung.conditionalflow.step;
22

3-
import org.baeldung.conditionalflow.model.NumberInfo;
3+
import com.baeldung.conditionalflow.model.NumberInfo;
44
import org.springframework.batch.item.ItemReader;
55

66
public class NumberInfoGenerator implements ItemReader<NumberInfo> {

spring-batch/src/main/java/org/baeldung/conditionalflow/step/PrependingStdoutWriter.java renamed to spring-batch-2/src/main/java/com/baeldung/conditionalflow/step/PrependingStdoutWriter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.baeldung.conditionalflow.step;
1+
package com.baeldung.conditionalflow.step;
22

33
import org.springframework.batch.item.Chunk;
44
import org.springframework.batch.item.ItemWriter;

spring-batch-2/src/main/resources/disable-job-autorun.properties

-1
This file was deleted.

0 commit comments

Comments
 (0)