ChargementDesCataloguesService.java
package com.sintia.ffl.admin.optique.catalogue.batch.batchservice;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.batch.core.BatchStatus;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.JobParametersInvalidException;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.core.launch.support.SimpleJobLauncher;
import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException;
import org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.batch.core.repository.JobRestartException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.task.SyncTaskExecutor;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Service;
import java.util.Date;
@Service
@RequiredArgsConstructor
@Slf4j
public class ChargementDesCataloguesService {
@Value("${catalog.corrected.associations.name.pattern}")
private String associationsFileNamePattern;
@Value("${catalog.corrected.extras.name.pattern}")
private String extrasFileNamePattern;
@Value("${catalog.corrected.glasses.name.pattern}")
private String glassesFileNamePattern;
@Value("${local.resources.directory}")
private String localResourcesDirectory;
@Value("${catalog.corrected.directory}")
private String toLoadDirectory;
private final JobRepository jobRepository;
private final Job loadAllCatalogs;
private final TaskExecutor asyncExecutor;
public BatchStatus loadAllCatalogs() throws JobParametersInvalidException {
log.info("Launching catalogs load job manually");
SimpleJobLauncher simpleJobLauncher = new SimpleJobLauncher();
simpleJobLauncher.setTaskExecutor(asyncExecutor);
simpleJobLauncher.setJobRepository(jobRepository);
Date scriptRunningDate = new Date();
JobParameters jobParameters = new JobParametersBuilder()
.addLong("time", System.currentTimeMillis())
.addDate("scriptDate", scriptRunningDate)
.toJobParameters();
try {
JobExecution status = simpleJobLauncher.run(loadAllCatalogs, jobParameters);
return status.getStatus();
} catch (JobExecutionAlreadyRunningException | JobRestartException
| JobInstanceAlreadyCompleteException
| JobParametersInvalidException e) {
log.error("Error executing job 'loadAllCatalogs'", e);
return BatchStatus.FAILED;
} finally {
log.info("Batch started");
}
}
}