EnrichCatalogGlassesItemReader.java

package com.sintia.ffl.admin.optique.catalogue.batch.reader.enrichcatalog;

import com.sintia.ffl.admin.optique.catalogue.models.GlassesCSV;
import lombok.extern.slf4j.Slf4j;
import org.springframework.batch.core.configuration.annotation.StepScope;
import org.springframework.batch.item.file.FlatFileItemReader;
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 GlassesCSV}
 *
 * @author jumazet
 */
@Component
@StepScope
@Slf4j
public class EnrichCatalogGlassesItemReader extends FlatFileItemReader<GlassesCSV> {

	public EnrichCatalogGlassesItemReader(
		@Value("#{jobParameters[glassesFileName]}") String fileName, @Value("${local.resources.directory}") String localDirectory,
		@Value("${catalog.to.enrich.directory}") String specificDirectory) {
		super();
		this.setResource(new FileSystemResource(Paths.get(localDirectory).resolve(specificDirectory).resolve(fileName).toString()));

		EnrichCatalogGlassesLineMapper lineMapper = new EnrichCatalogGlassesLineMapper();

		// Skip the first line (ie the header line)
		this.setLinesToSkip(1);

		this.setLineMapper(lineMapper);
		this.setEncoding("UTF-8");
	}

	@Override
	protected GlassesCSV doRead()
		throws java.lang.Exception {
        return super.doRead();
	}

	@Override
	protected void doClose()
		throws Exception {
		try {
			super.doClose();
		}
		catch (Exception e) {
			log.error("Erreur à la fermeture", e);
			throw e;
		}
	}
}