All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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