PeremptionVerreBatchConfiguration.java
package com.sintia.ffl.admin.optique.catalogue.batch.config.expireglasses;
import com.sintia.ffl.admin.optique.catalogue.batch.config.ChunkCountListener;
import com.sintia.ffl.admin.optique.catalogue.batch.processor.expireglasses.PeremptionVerreItemProcessor;
import com.sintia.ffl.admin.optique.catalogue.batch.reader.expireglasses.PeremptionVerreItemReader;
import com.sintia.ffl.admin.optique.catalogue.batch.tasklet.expireglasses.ExpireGlassesCleanLocalDirectory;
import com.sintia.ffl.admin.optique.catalogue.batch.writer.PeremptionVerreItemWriter;
import com.sintia.ffl.admin.optique.services.dto.Glasses;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.job.builder.FlowBuilder;
import org.springframework.batch.core.job.flow.Flow;
import org.springframework.batch.core.launch.support.RunIdIncrementer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Configure the bean to launch the peremption of the modele-verre entries job
*
* @author hlouanzi
*/
@Configuration
@EnableBatchProcessing
public class PeremptionVerreBatchConfiguration {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Autowired
public PeremptionVerreItemReader peremptionVerreReader;
@Autowired
public PeremptionVerreItemProcessor peremptionVerreProcessor;
@Autowired
public PeremptionVerreItemWriter peremptionVerreWriter;
@Autowired
public ExpireGlassesCleanLocalDirectory expireGlassesCleanLocalDirectory;
@Autowired
public ChunkCountListener chunkCountListener;
@Bean
public Job peremptionVerreJob(PeremptionVerreJobCompletionNotificationListener listener) {
FlowBuilder<Flow> flowBuilder = new FlowBuilder<>("peremptionVerre");
Flow flow = flowBuilder
// .start(cleanExpireGlassesLocalDirectories())
// .next(expireGlassesStep())
.start(expireGlassesStep())
.build();
return jobBuilderFactory.get("peremptionVerreJob")
.incrementer(new RunIdIncrementer())
.listener(listener)
.start(flow)
.end()
.build();
}
@Bean
public Step expireGlassesStep() {
return stepBuilderFactory.get("expireGlassesStep")
.<Glasses, Glasses> chunk(1000)
.reader(peremptionVerreReader)
.processor(peremptionVerreProcessor)
.writer(peremptionVerreWriter)
.listener(chunkCountListener)
.build();
}
/**
* Empty all the local directories used by this job (ie input and archived input)
*
* @return
*/
@Bean
public Step cleanExpireGlassesLocalDirectories() {
return stepBuilderFactory.get("cleanExpireGlassesLocalDirectories")
.tasklet(expireGlassesCleanLocalDirectory)
.build();
}
}