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

com.jpattern.batch.execution.SleepingIntervalJobExecutionStrategy Maven / Gradle / Ivy

package com.jpattern.batch.execution;

import java.util.Date;

import com.jpattern.batch.JobExecutionStrategy;

/**
 * 
 * Execute a job an infinite number of times with a prefixed sleep time between each execution
 * 
 * @author Francesco Cina'
 *
 * 09/giu/2010
 */
public class SleepingIntervalJobExecutionStrategy implements JobExecutionStrategy {

	private static final long serialVersionUID = 1L;
	private final long interval;
	private long lastTimeStamp;
	private boolean executed = false;
	private boolean returned = false;


	public SleepingIntervalJobExecutionStrategy( long sleepMilliseconds ) {

		interval = sleepMilliseconds;

	}

	@Override
	public boolean canExecute() {
		if ( !executed ) {
			executed = true;
			returned = true;
			//    		System.out.println("not executed");
			return returned;
		}

		if ( returned == false ) {
			final long now = new Date().getTime();
			//    		System.out.println("now = " + now);
			//    		System.out.println("lastTimeStamp + interval = " + (lastTimeStamp + interval));
			if ( now >= (lastTimeStamp + interval)) {
				returned = true;
			}
		}
		else {
			lastTimeStamp = new Date().getTime();
			//    		System.out.println("lastTimeStamp = " + lastTimeStamp);
			returned = false;
		}

		//    	System.out.println("returning = " + returned);
		return returned;
	}

	@Override
	public String asString() {
		return  "SleepingIntervalJobExecution repeat every  " + interval + " milliseconds";
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy