diff --git a/demo-spring-batch/.factorypath b/demo-spring-batch/.factorypath
new file mode 100644
index 0000000..fe01721
--- /dev/null
+++ b/demo-spring-batch/.factorypath
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo-spring-batch/pom.xml b/demo-spring-batch/pom.xml
index ce92227..b4e6658 100644
--- a/demo-spring-batch/pom.xml
+++ b/demo-spring-batch/pom.xml
@@ -1,12 +1,13 @@
-
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.3.RELEASE
-
+
com.example
demo-spring-batch
@@ -39,6 +40,14 @@
spring-batch-test
test
+
+
+
+ org.projectlombok
+ lombok
+ provided
+
+
diff --git a/demo-spring-batch/src/main/java/com/example/demospringbatch/BatchConfiguration.java b/demo-spring-batch/src/main/java/com/example/demospringbatch/BatchConfiguration.java
index 182cb50..db8d895 100644
--- a/demo-spring-batch/src/main/java/com/example/demospringbatch/BatchConfiguration.java
+++ b/demo-spring-batch/src/main/java/com/example/demospringbatch/BatchConfiguration.java
@@ -20,63 +20,59 @@
import org.springframework.core.io.ClassPathResource;
import com.example.demospringbatch.listener.JobListener;
-import com.example.demospringbatch.model.Persona;
-import com.example.demospringbatch.processor.PersonaItemProcessor;
+import com.example.demospringbatch.model.Person;
+import com.example.demospringbatch.processor.PersonItemProcessor;
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
-
+
@Autowired
public JobBuilderFactory jobBuilderFactory;
-
+
@Autowired
public StepBuilderFactory stepBuilderFactory;
-
+
@Bean
- public FlatFileItemReader reader(){
- return new FlatFileItemReaderBuilder()
- .name("personaItemReader")
- .resource(new ClassPathResource("sample-data.csv"))
- .delimited()
- .names(new String[] {"primerNombre", "segundoNombre", "telefono"})
- .fieldSetMapper(new BeanWrapperFieldSetMapper() {{
- setTargetType(Persona.class);
- }})
- .build();
+ public FlatFileItemReader reader() {
+ return new FlatFileItemReaderBuilder().name("personItemReader")
+ .resource(new ClassPathResource("sample-data.csv")).delimited()
+ .names(new String[] { "firstName", "secondName", "phone" })
+ .fieldSetMapper(new BeanWrapperFieldSetMapper() {
+ {
+ setTargetType(Person.class);
+ }
+ }).build();
}
-
+
@Bean
- public PersonaItemProcessor processor() {
- return new PersonaItemProcessor();
+ public PersonItemProcessor processor() {
+ return new PersonItemProcessor();
}
-
+
@Bean
- public JdbcBatchItemWriter writer(DataSource dataSource){
- return new JdbcBatchItemWriterBuilder()
+ public JdbcBatchItemWriter writer(DataSource dataSource) {
+ return new JdbcBatchItemWriterBuilder()
.itemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<>())
- .sql("INSERT INTO persona (primer_nombre, segundo_nombre, telefono) VALUES (:primerNombre, :segundoNombre, :telefono)")
- .dataSource(dataSource)
- .build();
+ .sql("INSERT INTO person (first_name, second_name, phone) VALUES (:firstName, :secondName, :phone)")
+ .dataSource(dataSource).build();
}
-
+
@Bean
public Job importPersonaJob(JobListener listener, Step step1) {
- return jobBuilderFactory.get("importPersonaJob")
+ return jobBuilderFactory.get("importPersonJob")
.incrementer(new RunIdIncrementer())
.listener(listener)
- .flow(step1)
- .end()
- .build();
+ .flow(step1).end().build();
}
-
+
@Bean
- public Step step1(JdbcBatchItemWriter writer) {
+ public Step step1(JdbcBatchItemWriter writer) {
return stepBuilderFactory.get("step1")
- . chunk(10)
+ .chunk(10)
.reader(reader())
- .writer(writer)
- .build();
+ .processor(processor())
+ .writer(writer).build();
}
}
diff --git a/demo-spring-batch/src/main/java/com/example/demospringbatch/listener/JobListener.java b/demo-spring-batch/src/main/java/com/example/demospringbatch/listener/JobListener.java
index 9924455..8d5d534 100644
--- a/demo-spring-batch/src/main/java/com/example/demospringbatch/listener/JobListener.java
+++ b/demo-spring-batch/src/main/java/com/example/demospringbatch/listener/JobListener.java
@@ -1,7 +1,5 @@
package com.example.demospringbatch.listener;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.batch.core.BatchStatus;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.listener.JobExecutionListenerSupport;
@@ -9,12 +7,14 @@
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
-import com.example.demospringbatch.model.Persona;
+import com.example.demospringbatch.model.Person;
+import lombok.extern.log4j.Log4j2;
+
+@Log4j2
@Component
public class JobListener extends JobExecutionListenerSupport {
- private static final Logger LOG = LoggerFactory.getLogger(JobListener.class);
private JdbcTemplate jdbcTemplate;
@@ -27,12 +27,14 @@ public JobListener(JdbcTemplate jdbcTemplate) {
@Override
public void afterJob(JobExecution jobExecution) {
if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
- LOG.info("FINALIZĂ“ EL JOB!! Verifica los resultados:");
+ log.info("===========================================================\n");
+ log.info("The Job is over!! Check the results converted to uppercase:\n");
+ log.info("===========================================================\n");
jdbcTemplate
- .query("SELECT primer_nombre, segundo_nombre, telefono FROM persona",
- (rs, row) -> new Persona(rs.getString(1), rs.getString(2), rs.getString(3)))
- .forEach(persona -> LOG.info("Registro < " + persona + " >"));
+ .query("SELECT first_name, second_name, phone FROM person",
+ (rs, row) -> new Person(rs.getString(1), rs.getString(2), rs.getString(3)))
+ .forEach(person -> log.info("Record < " + person + " >"));
}
}
diff --git a/demo-spring-batch/src/main/java/com/example/demospringbatch/model/Person.java b/demo-spring-batch/src/main/java/com/example/demospringbatch/model/Person.java
new file mode 100644
index 0000000..fba64c5
--- /dev/null
+++ b/demo-spring-batch/src/main/java/com/example/demospringbatch/model/Person.java
@@ -0,0 +1,16 @@
+package com.example.demospringbatch.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Person {
+
+ private String firstName;
+ private String secondName;
+ private String phone;
+
+}
diff --git a/demo-spring-batch/src/main/java/com/example/demospringbatch/model/Persona.java b/demo-spring-batch/src/main/java/com/example/demospringbatch/model/Persona.java
deleted file mode 100644
index dddb134..0000000
--- a/demo-spring-batch/src/main/java/com/example/demospringbatch/model/Persona.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.example.demospringbatch.model;
-
-public class Persona {
-
- private String primerNombre;
- private String segundoNombre;
- private String telefono;
-
- public Persona() {
- super();
- }
-
- public Persona(String primerNombre, String segundoNombre, String telefono) {
- super();
- this.primerNombre = primerNombre;
- this.segundoNombre = segundoNombre;
- this.telefono = telefono;
- }
-
- public String getPrimerNombre() {
- return primerNombre;
- }
-
- public void setPrimerNombre(String primerNombre) {
- this.primerNombre = primerNombre;
- }
-
- public String getSegundoNombre() {
- return segundoNombre;
- }
-
- public void setSegundoNombre(String segundoNombre) {
- this.segundoNombre = segundoNombre;
- }
-
- public String getTelefono() {
- return telefono;
- }
-
- public void setTelefono(String telefono) {
- this.telefono = telefono;
- }
-
- @Override
- public String toString() {
- return "Persona [primerNombre=" + primerNombre + ", segundoNombre=" + segundoNombre + ", telefono=" + telefono
- + "]";
- }
-
-
-
-}
diff --git a/demo-spring-batch/src/main/java/com/example/demospringbatch/processor/PersonItemProcessor.java b/demo-spring-batch/src/main/java/com/example/demospringbatch/processor/PersonItemProcessor.java
new file mode 100644
index 0000000..7a3b84f
--- /dev/null
+++ b/demo-spring-batch/src/main/java/com/example/demospringbatch/processor/PersonItemProcessor.java
@@ -0,0 +1,25 @@
+package com.example.demospringbatch.processor;
+
+import org.springframework.batch.item.ItemProcessor;
+
+import com.example.demospringbatch.model.Person;
+
+import lombok.extern.log4j.Log4j2;
+
+@Log4j2
+public class PersonItemProcessor implements ItemProcessor {
+
+ @Override
+ public Person process(Person item) throws Exception {
+ String firstName = item.getFirstName().toUpperCase();
+ String secondName = item.getSecondName().toUpperCase();
+ String phone = item.getPhone();
+
+ Person person = new Person(firstName, secondName, phone);
+
+ log.info("Changing ("+item+") a ("+person+")");
+
+ return person;
+ }
+
+}
diff --git a/demo-spring-batch/src/main/java/com/example/demospringbatch/processor/PersonaItemProcessor.java b/demo-spring-batch/src/main/java/com/example/demospringbatch/processor/PersonaItemProcessor.java
deleted file mode 100644
index 8aac828..0000000
--- a/demo-spring-batch/src/main/java/com/example/demospringbatch/processor/PersonaItemProcessor.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.example.demospringbatch.processor;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.batch.item.ItemProcessor;
-
-import com.example.demospringbatch.model.Persona;
-
-public class PersonaItemProcessor implements ItemProcessor {
-
- private static final Logger LOG = LoggerFactory.getLogger(PersonaItemProcessor.class);
-
- @Override
- public Persona process(Persona item) throws Exception {
- String primerNombre = item.getPrimerNombre().toUpperCase();
- String segundoNombre = item.getSegundoNombre().toUpperCase();
- String telefono = item.getTelefono();
-
- Persona persona = new Persona(primerNombre, segundoNombre, telefono);
-
- LOG.info("Convirtiendo ("+item+") a ("+persona+")");
-
- return persona;
- }
-
-}
diff --git a/demo-spring-batch/src/main/resources/schema-all.sql b/demo-spring-batch/src/main/resources/schema-all.sql
index 65c5909..2c47861 100644
--- a/demo-spring-batch/src/main/resources/schema-all.sql
+++ b/demo-spring-batch/src/main/resources/schema-all.sql
@@ -1,8 +1,8 @@
-DROP TABLE persona IF EXISTS;
+DROP TABLE person IF EXISTS;
-CREATE TABLE persona(
+CREATE TABLE person(
id BIGINT IDENTITY NOT NULL PRIMARY KEY,
- primer_nombre VARCHAR(20),
- segundo_nombre VARCHAR(20),
- telefono VARCHAR(10)
+ first_name VARCHAR(20),
+ second_name VARCHAR(20),
+ phone VARCHAR(10)
);
\ No newline at end of file
diff --git a/demo-spring-batch/target/classes/META-INF/MANIFEST.MF b/demo-spring-batch/target/classes/META-INF/MANIFEST.MF
deleted file mode 100644
index 0327c05..0000000
--- a/demo-spring-batch/target/classes/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Implementation-Title: demo-spring-batch
-Implementation-Version: 0.0.1-SNAPSHOT
-Built-By: jordyrodriguez
-Implementation-Vendor-Id: com.example
-Build-Jdk: 1.8.0_181
-Implementation-URL: https://projects.spring.io/spring-boot/#/spring-bo
- ot-starter-parent/demo-spring-batch
-Created-By: Maven Integration for Eclipse
-
diff --git a/demo-spring-batch/target/classes/META-INF/maven/com.example/demo-spring-batch/pom.properties b/demo-spring-batch/target/classes/META-INF/maven/com.example/demo-spring-batch/pom.properties
deleted file mode 100644
index f3bccee..0000000
--- a/demo-spring-batch/target/classes/META-INF/maven/com.example/demo-spring-batch/pom.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-#Generated by Maven Integration for Eclipse
-#Fri Mar 22 13:13:49 COT 2019
-version=0.0.1-SNAPSHOT
-groupId=com.example
-m2e.projectName=demo-spring-batch
-m2e.projectLocation=/Users/jordyrodriguez/Desktop/demo-spring-batch
-artifactId=demo-spring-batch
diff --git a/demo-spring-batch/target/classes/META-INF/maven/com.example/demo-spring-batch/pom.xml b/demo-spring-batch/target/classes/META-INF/maven/com.example/demo-spring-batch/pom.xml
deleted file mode 100644
index ce92227..0000000
--- a/demo-spring-batch/target/classes/META-INF/maven/com.example/demo-spring-batch/pom.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.1.3.RELEASE
-
-
- com.example
- demo-spring-batch
- 0.0.1-SNAPSHOT
- demo-spring-batch
- Demo project for Spring Boot
-
-
- 1.8
-
-
-
-
- org.springframework.boot
- spring-boot-starter-batch
-
-
-
- org.hsqldb
- hsqldb
- runtime
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.springframework.batch
- spring-batch-test
- test
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
-
diff --git a/demo-spring-batch/target/classes/com/example/demospringbatch/BatchConfiguration$1.class b/demo-spring-batch/target/classes/com/example/demospringbatch/BatchConfiguration$1.class
index 04ac4f0..41824f5 100644
Binary files a/demo-spring-batch/target/classes/com/example/demospringbatch/BatchConfiguration$1.class and b/demo-spring-batch/target/classes/com/example/demospringbatch/BatchConfiguration$1.class differ
diff --git a/demo-spring-batch/target/classes/com/example/demospringbatch/BatchConfiguration.class b/demo-spring-batch/target/classes/com/example/demospringbatch/BatchConfiguration.class
index 48f521d..9e13374 100644
Binary files a/demo-spring-batch/target/classes/com/example/demospringbatch/BatchConfiguration.class and b/demo-spring-batch/target/classes/com/example/demospringbatch/BatchConfiguration.class differ
diff --git a/demo-spring-batch/target/classes/com/example/demospringbatch/listener/JobListener.class b/demo-spring-batch/target/classes/com/example/demospringbatch/listener/JobListener.class
index 9247e4c..9fa2c65 100644
Binary files a/demo-spring-batch/target/classes/com/example/demospringbatch/listener/JobListener.class and b/demo-spring-batch/target/classes/com/example/demospringbatch/listener/JobListener.class differ
diff --git a/demo-spring-batch/target/classes/com/example/demospringbatch/model/Persona.class b/demo-spring-batch/target/classes/com/example/demospringbatch/model/Persona.class
deleted file mode 100644
index 1ff7b91..0000000
Binary files a/demo-spring-batch/target/classes/com/example/demospringbatch/model/Persona.class and /dev/null differ
diff --git a/demo-spring-batch/target/classes/com/example/demospringbatch/processor/PersonaItemProcessor.class b/demo-spring-batch/target/classes/com/example/demospringbatch/processor/PersonaItemProcessor.class
deleted file mode 100644
index a5bef40..0000000
Binary files a/demo-spring-batch/target/classes/com/example/demospringbatch/processor/PersonaItemProcessor.class and /dev/null differ
diff --git a/demo-spring-batch/target/classes/schema-all.sql b/demo-spring-batch/target/classes/schema-all.sql
index 65c5909..2c47861 100644
--- a/demo-spring-batch/target/classes/schema-all.sql
+++ b/demo-spring-batch/target/classes/schema-all.sql
@@ -1,8 +1,8 @@
-DROP TABLE persona IF EXISTS;
+DROP TABLE person IF EXISTS;
-CREATE TABLE persona(
+CREATE TABLE person(
id BIGINT IDENTITY NOT NULL PRIMARY KEY,
- primer_nombre VARCHAR(20),
- segundo_nombre VARCHAR(20),
- telefono VARCHAR(10)
+ first_name VARCHAR(20),
+ second_name VARCHAR(20),
+ phone VARCHAR(10)
);
\ No newline at end of file