PeremptionVerresAbsentsItemWriter.java
package com.sintia.ffl.admin.optique.catalogue.batch.writer;
import com.sintia.ffl.admin.optique.catalogue.batch.reporter.PeremptionVerresAbsentsReporter;
import com.sintia.ffl.admin.optique.catalogue.models.GlassesCSV;
import org.springframework.batch.core.configuration.annotation.StepScope;
import org.springframework.batch.item.file.FlatFileItemWriter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.stereotype.Component;
import java.nio.file.Paths;
import java.util.List;
/**
* Simulate expiration for missing glasses by adding them to a file that will
* list all the missing glasses
*
* @author jumazet
*/
@Component
@StepScope
public class PeremptionVerresAbsentsItemWriter extends FlatFileItemWriter<GlassesCSV> {
@Autowired
private PeremptionVerresAbsentsReporter peremptionVerresAbsentsReporter;
private static final String HEADER = "c_opto_code_verre;l_modele;c_opto_code_fabricant;c_opto_code_distributeur";
public PeremptionVerresAbsentsItemWriter(
@Value("#{jobParameters[simulatedGlassesToExpireFileName]}") String resultFileName,
@Value("${local.resources.directory}") String localResourcesDirectory,
@Value("${glasses.missing.obsolete.directory}") String glassesMissingDirectory) {
String resourcePath = Paths.get(localResourcesDirectory)
.resolve(glassesMissingDirectory)
.resolve(resultFileName)
.toString();
this.setResource(new FileSystemResource(resourcePath));
this.setLineAggregator(new PeremptionVerresAbsentsLineAggregator());
this.setShouldDeleteIfExists(true);
StringHeaderWriter header = new StringHeaderWriter(HEADER);
this.setHeaderCallback(header);
}
@Override
public void write(List<? extends GlassesCSV> items)
throws Exception {
super.write(items);
peremptionVerresAbsentsReporter.addNbModeleVerreAbsent(items.size());
}
}