PurgeGlassesDataBackup.java

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

import com.sintia.ffl.admin.optique.catalogue.batch.reporter.PurgeVerreReporter;
import com.sintia.ffl.admin.optique.catalogue.util.Constants;
import com.sintia.ffl.admin.optique.catalogue.util.ScriptCaller;
import lombok.RequiredArgsConstructor;
import org.springframework.batch.core.JobExecutionException;
import org.springframework.batch.core.StepContribution;
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.Value;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
public class PurgeGlassesDataBackup implements Tasklet {

	private final PurgeVerreReporter purgeVerreReporter;

	private final ScriptCaller scriptCaller;

	@Value("${glasses.purge.scriptName}")
	private String scriptName;

	@Override
	public RepeatStatus execute(@NonNull StepContribution contribution, @NonNull ChunkContext chunkContext)
		throws Exception {
		int returnCode = scriptCaller.runScript(scriptName);
		if (Constants.SCRIPT_RESULT_OK == returnCode) {
			return RepeatStatus.FINISHED;
		} else {
			purgeVerreReporter.addError("Erreur lors de la sauvegarde de la base de données pré-purge.");
			throw new JobExecutionException("Error during the call to the script '" + scriptName + "' return code : " + returnCode);
		}
	}

}