org.oddjob.scheduling
Class TimerBase

java.lang.Object
  extended by org.oddjob.framework.BaseComponent
      extended by org.oddjob.framework.BasePrimary
          extended by org.oddjob.scheduling.ScheduleBase
              extended by org.oddjob.scheduling.TimerBase
All Implemented Interfaces:
Serializable, Runnable, ArooaContextAware, ArooaSessionAware, PropertyChangeNotifier, Iconic, LogEnabled, Resetable, Stateful, Stoppable, Structural
Direct Known Subclasses:
Retry, Timer

public abstract class TimerBase
extends ScheduleBase

Common functionality for Timers.

See Also:
Serialized Form
Author:
rob

Field Summary
protected  Map<Object,Object> contextData
          Provided to the schedule.
 
Fields inherited from class org.oddjob.scheduling.ScheduleBase
begun, childHelper, childStateReflector, stateHandler, stop, structuralState
 
Fields inherited from class org.oddjob.framework.BaseComponent
iconHelper
 
Constructor Summary
TimerBase()
           
 
Method Summary
protected  void begin()
          Sub classes must override this to submit the first execution.
protected  void CancelAndStopChild()
          Cancel and child jobs that are submitted and stop any that are running.
 Clock getClock()
          Get the current clock.
 ScheduleResult getCurrent()
          Get the current/next interval.
 Date getLastDue()
          Get the last due date.
protected abstract  Interval getLimits()
          Implementation provided by sub classes so limits are available in scheduleFrom(Date).
 Date getNextDue()
          Get the next due date.
 Schedule getSchedule()
           
 String getTimeZone()
          Get the time zone id to use in this schedule.
protected  void internalSetNextDue(Date nextDue)
          Set the next due date.
protected  void onReset()
           
protected  void onStop()
           
protected  void postStop()
           
protected abstract  void rescheduleOn(State state)
          Implementation provided by sub classes to decide how to reschedule based on the state of the child job.
protected abstract  void reset(Resetable job)
          Implementation provided by sub classes to decide what kind of reset to send to the child.
protected  void scheduleFrom(Date date)
           
 void setClock(Clock clock)
          Set the clock.
 void setJob(Runnable job)
           
 void setNextDue(Date nextDue)
          Manually set the Next Due Date.
 void setReschedule(Date reSchedule)
           
 void setSchedule(Schedule schedule)
          Set the schedule.
 void setScheduleExecutorService(ScheduledExecutorService scheduler)
           
 void setTimeZone(String timeZoneId)
          Set the time zone.
 
Methods inherited from class org.oddjob.scheduling.ScheduleBase
addStructuralListener, fireDestroyedState, getStateChanger, getStateOp, hardReset, onDestroy, removeStructuralListener, run, setStateStartingAndIconSleeping, softReset, stateHandler, stop
 
Methods inherited from class org.oddjob.framework.BasePrimary
configure, getName, logger, logger, loggerName, save, setName, toString
 
Methods inherited from class org.oddjob.framework.BaseComponent
addIconListener, addPropertyChangeListener, addStateListener, configure, destroy, firePropertyChange, getArooaSession, iconForId, initialise, lastStateEvent, onConfigured, onInitialised, removeIconListener, removePropertyChangeListener, removeStateListener, save, setArooaContext, setArooaSession
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.oddjob.Stateful
addStateListener, lastStateEvent, removeStateListener
 

Field Detail

contextData

protected final Map<Object,Object> contextData
Provided to the schedule.

Constructor Detail

TimerBase

public TimerBase()
Method Detail

setScheduleExecutorService

@Inject
public void setScheduleExecutorService(ScheduledExecutorService scheduler)

begin

protected void begin()
              throws ComponentPersistException
Description copied from class: ScheduleBase
Sub classes must override this to submit the first execution.

Specified by:
begin in class ScheduleBase
Throws:
ComponentPersistException

onStop

protected void onStop()
Overrides:
onStop in class ScheduleBase

postStop

protected void postStop()
Overrides:
postStop in class ScheduleBase

onReset

protected void onReset()
Overrides:
onReset in class ScheduleBase

getTimeZone

public String getTimeZone()
Get the time zone id to use in this schedule.

Returns:
The time zone id being used.

setTimeZone

public void setTimeZone(String timeZoneId)
Set the time zone.

Parameters:
timeZoneId - the timeZoneId.

setSchedule

public void setSchedule(Schedule schedule)
Set the schedule.

Parameters:
schedule - The schedule.

getSchedule

public Schedule getSchedule()

setReschedule

public void setReschedule(Date reSchedule)
                   throws ComponentPersistException,
                          OddjobLockedException

Property: reschedule

Description: Reschedule from the given date/time.

Required: Only available once the timer has started.

Throws:
ComponentPersistException
OddjobLockedException

CancelAndStopChild

protected void CancelAndStopChild()
                           throws FailedToStopException
Cancel and child jobs that are submitted and stop any that are running. This should only be run while locked because it temporarily sets the stop flag to fool the state listener into not rescheduling.

Throws:
FailedToStopException

scheduleFrom

protected void scheduleFrom(Date date)
                     throws ComponentPersistException
Throws:
ComponentPersistException

getClock

public Clock getClock()
Get the current clock.

Returns:
The clock

setClock

public void setClock(Clock clock)
Set the clock. Only useful for testing.

Parameters:
clock - The clock.

setNextDue

public void setNextDue(Date nextDue)
                throws OddjobLockedException
Manually set the Next Due Date.

Parameters:
nextDue - The Next Due Date. May be null.
Throws:
OddjobLockedException

getNextDue

public Date getNextDue()
Get the next due date.

Returns:
The next due date

internalSetNextDue

protected void internalSetNextDue(Date nextDue)
                           throws ComponentPersistException
Set the next due date.

Parameters:
nextDue - The date schedule is next due.
Throws:
ComponentPersistException

getCurrent

public ScheduleResult getCurrent()
Get the current/next interval.

Returns:
The interval, null if not due again.

getLastDue

public Date getLastDue()
Get the last due date.

Returns:
The last due date, null when a timer starts for the first time.

setJob

public void setJob(Runnable job)

Property: job

Description: The job to run when it's due.

Required: Yes.


getLimits

protected abstract Interval getLimits()
Implementation provided by sub classes so limits are available in scheduleFrom(Date).

Returns:
The limits, or null. Retry has limits, timer doesn't.

rescheduleOn

protected abstract void rescheduleOn(State state)
                              throws ComponentPersistException
Implementation provided by sub classes to decide how to reschedule based on the state of the child job.

Parameters:
state - The completion state of the child job.
Throws:
ComponentPersistException

reset

protected abstract void reset(Resetable job)
Implementation provided by sub classes to decide what kind of reset to send to the child. Timer sends a hard reset, Retry sends a soft reset.

Parameters:
job - The child job that will be reset.