LoadCatalogEnrichedGlassesItemReader.java
package com.sintia.ffl.admin.optique.catalogue.batch.reader.loadcatalog;
import com.sintia.ffl.admin.optique.catalogue.batch.reporter.LoadCatalogReporter;
import com.sintia.ffl.admin.optique.catalogue.models.EnrichedGlassesCSV;
import org.springframework.batch.core.configuration.annotation.StepScope;
import org.springframework.batch.item.file.FlatFileItemReader;
import org.springframework.batch.item.file.mapping.DefaultLineMapper;
import org.springframework.batch.item.file.transform.DelimitedLineTokenizer;
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;
/**
* Read raw data from a csv file and convert them to {@link EnrichedGlassesCSV}
*
* @author jumazet
*/
@Component
@StepScope
public class LoadCatalogEnrichedGlassesItemReader extends FlatFileItemReader<EnrichedGlassesCSV> {
private String[] columnsName = new String[] { "maker", "provider", "glassOptoCode", "glassClass", "glassClassRepo",
"glassName", "glassNameRepo", "geometry", "geometryRepo", "material", "materialRepo", "surfaceType",
"surfaceTypeRepo", "hardened", "hardenedRepo", "antiReflection", "antiReflectionRepo", "photochromic",
"photochromicRepo", "refractiveIndex", "refractiveIndexRepo", "tinted", "tintedRepo", "action",
"expiryDate", "startDate", "actionCodeDelta", "correctedData", "comment" };
@Autowired
private LoadCatalogReporter reporter;
private String fileName;
public LoadCatalogEnrichedGlassesItemReader(
@Value("#{jobParameters[glassesFileName]}") String fileName,
@Value("${local.resources.directory}") String localResourcesDirectory,
@Value("${catalog.corrected.directory}") String specificDirectory) {
super();
this.fileName = fileName;
String separator = System.getProperty("file.separator");
String localPath = localResourcesDirectory + separator + specificDirectory;
this.setResource(new FileSystemResource(Paths.get(localPath)
.resolve(fileName)
.toString()));
DefaultLineMapper<EnrichedGlassesCSV> lineMapper2 = new DefaultLineMapper<EnrichedGlassesCSV>();
lineMapper2.setFieldSetMapper(new LoadCatalogEnrichedGlassesFieldSetMapper());
DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer();
tokenizer.setNames(columnsName);
tokenizer.setDelimiter(";");
lineMapper2.setLineTokenizer(tokenizer);
this.setLineMapper(lineMapper2);
// Skip the first line (ie the header line)
this.setLinesToSkip(1);
this.setEncoding("UTF-8");
}
@Override
public void doOpen()
throws Exception {
try {
super.doOpen();
} catch (Exception e) {
this.reporter.addError("Erreur à l'ouverture du fichier '" + this.fileName + "' : " + e.getMessage());
// re-throws the exception to stop the job process
throw e;
}
}
}