EnrichedExtrasItemWriter.java
package com.sintia.ffl.admin.optique.catalogue.batch.writer;
import com.sintia.ffl.admin.optique.catalogue.models.EnrichedExtrasCSV;
import com.sintia.ffl.admin.optique.catalogue.util.Constants;
import com.sintia.ffl.admin.optique.catalogue.util.FileNameNotMatchException;
import com.sintia.ffl.admin.optique.catalogue.util.FileUtil;
import com.sintia.ffl.admin.optique.services.services.FabricantService;
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;
/**
* Take in input a data in the format {@link EnrichedExtrasCSV} and save them in
* a CSV file
*
* @author jumazet
*/
@Component
@StepScope
public class EnrichedExtrasItemWriter extends FlatFileItemWriter<EnrichedExtrasCSV> {
private static final String HEADER = "Code fabricant;Code Fournisseur;Code supplément;Nom supplément;Type;Type référentiel;Code action delta";
public EnrichedExtrasItemWriter(
@Value("#{jobParameters[extrasFileName]}") String fileName,
@Value("${local.resources.directory}") String localDirectory, @Autowired FileUtil fileUtil,
@Autowired FabricantService fabricantService,
@Value("${catalog.enriched.directory}") String enrichedCatalogWithAgreementDirectory,
@Value("${catalog.unlist.directory}") String enrichedCatalogWithoutAgreementDirectory)
throws FileNameNotMatchException {
String resultFileName = fileUtil.convertToCorrectedExtrasFileName(fileName);
String cOptoCodeFabricant = fileUtil.extractMakerFromExtrasFileName(fileName, Constants.INITAL_FILE);
String resourcePath = "";
if (fabricantService.isMakerWithAgreement(cOptoCodeFabricant)) {
resourcePath = Paths.get(localDirectory)
.resolve(enrichedCatalogWithAgreementDirectory)
.resolve(resultFileName)
.toString();
} else {
resourcePath = Paths.get(localDirectory)
.resolve(enrichedCatalogWithoutAgreementDirectory)
.resolve(resultFileName)
.toString();
}
this.setResource(new FileSystemResource(resourcePath));
this.setLineAggregator(new EnrichedExtrasLineAggregator());
this.setShouldDeleteIfExists(true);
StringHeaderWriter header = new StringHeaderWriter(HEADER);
this.setHeaderCallback(header);
}
}