Java Reference
In-Depth Information
throws JobExecutionException {
Map<String, Object> jobDataMap = context.getMergedJobDataMap();
String jobName = (String) jobDataMap.get(JOB_NAME);
try {
Job job = jobLocator.getJob(jobName);
JobParameters allParams = translateParams(job, jobParameters);
jobLauncher.run(job, allParams);
} catch (Exception e) {
log.error("Could not execute job.", e);
}
}
private JobParameters translateParams(Job job,
Map<String, String> params)
throws Exception {
JobParametersBuilder builder = new JobParametersBuilder();
JobParameters incrementedParams = getNextJobParameters(job);
for (Map.Entry<String, JobParameter> param :
incrementedParams.getParameters().entrySet()) {
builder.addParameter(param.getKey(), param.getValue());
}
for (Map.Entry<String, String> param : params.entrySet()) {
builder.addString(param.getKey(), param.getValue());
}
return builder.toJobParameters();
}
private JobParameters getNextJobParameters(Job job)
throws JobParametersNotFoundException {
String jobIdentifier = job.getName();
JobParameters jobParameters;
List<JobInstance> lastInstances =
jobExplorer.getJobInstances(jobIdentifier, 0, 1);
JobParametersIncrementer incrementer =
job.getJobParametersIncrementer();
if (incrementer == null) {
throw new JobParametersNotFoundException(
"No job parameters incrementer found for job="
+ jobIdentifier);
}
if (lastInstances.isEmpty()) {
jobParameters = incrementer.getNext(new JobParameters());
if (jobParameters == null) {
throw new JobParametersNotFoundException(
Search WWH ::




Custom Search