ExpirationMissingGlassesArchiveFile.java

package com.sintia.ffl.admin.optique.catalogue.batch.tasklet.expiremissingglasses;

import com.sintia.ffl.admin.optique.catalogue.util.FileUtil;
import org.springframework.batch.core.StepContribution;
import org.springframework.batch.core.configuration.annotation.StepScope;
import org.springframework.batch.core.scope.context.ChunkContext;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.nio.file.Paths;

/**
 * Archives the file generated by the missing glasses expiration job in simulation mode.<br>
 * The file is moved from 08_peremption_verres_absents to 00_archives/08_peremption_verres_absents
 *
 * @author jumazet
 */
@Component
@StepScope
public class ExpirationMissingGlassesArchiveFile implements Tasklet {

	@Autowired
	private FileUtil	fileUtil;
	@Value("${local.resources.directory}")
	private String		localResourcesDirectory;
	@Value("${glasses.missing.obsolete.directory}")
	private String		outputDirectory;

	private String simulatedGlassesToExpireFileName;

	public ExpirationMissingGlassesArchiveFile(@Value("#{jobParameters[simulatedGlassesToExpireFileName]}") String simulatedGlassesToExpireFileName) {
		this.simulatedGlassesToExpireFileName = simulatedGlassesToExpireFileName;
	}

	@Override
	public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext)
		throws Exception {

		// Archive the output file
		String filePath = Paths.get(localResourcesDirectory).resolve(outputDirectory).resolve(simulatedGlassesToExpireFileName).toString();
		fileUtil.archiveByMove(filePath);

		return RepeatStatus.FINISHED;
	}

}