
com.jpattern.batch.execution.CronJobExecutionStrategy Maven / Gradle / Ivy
package com.jpattern.batch.execution;
import java.text.ParseException;
import java.util.Date;
import com.jpattern.batch.JobExecutionStrategy;
import com.jpattern.batch.util.CronExpression;
/**
*
* Execute a job based on a cron expression
*
* @author Francesco Cina'
*
* Apr 15, 2012
*/
public class CronJobExecutionStrategy implements JobExecutionStrategy {
private static final long serialVersionUID = 1L;
private final String cronExpression;
private final CronExpression cron;
private Date nextExecutionDate;
public CronJobExecutionStrategy(String cronExpression) {
this.cronExpression = cronExpression;
nextExecutionDate = new Date( new Date().getTime() - 1 );
try {
cron = new CronExpression(cronExpression);
} catch (final ParseException e) {
throw new RuntimeException(e);
}
}
@Override
public boolean canExecute() {
final Date now = new Date();
if ( (now.compareTo(nextExecutionDate)>0) && (cron.isSatisfiedBy(now)) ) {
nextExecutionDate = cron.getNextValidTimeAfter(now);
return true;
}
return false;
}
@Override
public String asString() {
return "CronJobExecution. Cron expression: [" + cronExpression + "]";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy