org.apache.turbine.services.schedule

## Class AbstractSchedulerService

- java.lang.Object
- - org.apache.turbine.services.BaseInitable
  - - org.apache.turbine.services.BaseService
    - - org.apache.turbine.services.TurbineBaseService
      - - org.apache.turbine.services.schedule.AbstractSchedulerService

- All Implemented Interfaces:
    Initable, ScheduleService, Service
  Direct Known Subclasses:
    TorqueSchedulerService, TurbineNonPersistentSchedulerService

      public abstract class AbstractSchedulerService
      extends TurbineBaseService
      implements ScheduleService

  Service for a cron like scheduler.
  Version:
    $Id: TorqueSchedulerService.java 534527 2007-05-02 16:10:59Z tv $
  Author:
    Dave Bryson, Quinton McCombs

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected class` | `AbstractSchedulerService.MainLoop` Inner class.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected boolean` | `enabled` Current status of the scheduler
    `protected static org.apache.commons.logging.Log` | `log` Logging
    `protected AbstractSchedulerService.MainLoop` | `mainLoop` The main loop for starting jobs.
    `protected JobQueue<JobEntry>` | `scheduleQueue` The queue
    `protected Thread` | `thread` The thread used to process commands.

    - ### Fields inherited from class org.apache.turbine.services.BaseService

      `configuration, name, serviceBroker`

    - ### Fields inherited from class org.apache.turbine.services.BaseInitable

      `initableBroker, isInitialized`

    - ### Fields inherited from interface org.apache.turbine.services.schedule.ScheduleService

      `INTIALLY_ACTIVE, LOGGER_NAME, SERVICE_NAME`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractSchedulerService()` Creates a new instance.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addJob(JobEntry je)` Add a new job to the queue.
    `protected void` | `clearThread()` Set thread to null to indicate termination.
    `abstract JobEntry` | `getJob(int oid)` Get a specific Job from Storage.
    `Thread` | `getThread()` Return the thread being used to process commands, or null if there is no such thread.
    `void` | `init()` Initializes the SchedulerService.
    `boolean` | `isEnabled()` Determines if the scheduler service is currently enabled.
    `List<JobEntry>` | `listJobs()` List jobs in the queue.
    `protected abstract List<? extends JobEntry>` | `loadJobs()` Load all jobs from configuration storage
    `abstract JobEntry` | `newJob(int sec, int min, int hour, int wd, int day_mo, String task)` Factory method for a new Job Schedule a job to run on a certain point of time.
    `protected JobEntry` | `nextJob()` Return the next Job to execute, or null if thread is interrupted.
    `abstract void` | `removeJob(JobEntry je)` Remove a job from the queue.
    `void` | `restart()` Start (or restart) a thread to process commands, or wake up an existing thread if one is already running.
    `protected void` | `setEnabled(boolean enabled)` Sets the enabled status of the scheduler
    `void` | `shutdown()` Shutdowns the service.
    `void` | `startScheduler()` Starts or restarts the scheduler if not already running.
    `void` | `stopScheduler()` Stops the scheduler if it is currently running.
    `abstract void` | `updateJob(JobEntry je)` Add or update a job.

    - ### Methods inherited from class org.apache.turbine.services.TurbineBaseService

      `init, init`

    - ### Methods inherited from class org.apache.turbine.services.BaseService

      `getConfiguration, getName, getProperties, getServiceBroker, setName, setServiceBroker`

    - ### Methods inherited from class org.apache.turbine.services.BaseInitable

      `getInit, getInitableBroker, setInit, setInitableBroker`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.apache.turbine.services.Service

      `getConfiguration, getName, getProperties, setName, setServiceBroker`

    - ### Methods inherited from interface org.apache.turbine.services.Initable

      `getInit, init, setInitableBroker`

- - ### Field Detail

    - #### log

          protected static org.apache.commons.logging.Log log

      Logging

    - #### scheduleQueue

          protected JobQueue<JobEntry> scheduleQueue

      The queue

    - #### enabled

          protected boolean enabled

      Current status of the scheduler

    - #### mainLoop

          protected AbstractSchedulerService.MainLoop mainLoop

      The main loop for starting jobs.

    - #### thread

          protected Thread thread

      The thread used to process commands.

  - ### Constructor Detail

    - #### AbstractSchedulerService

          public AbstractSchedulerService()

      Creates a new instance.

  - ### Method Detail

    - #### init

          public void init()
                    throws InitializationException

      Initializes the SchedulerService.
      Specified by:
        `init` in interface `Initable`
      Overrides:
        `init` in class `TurbineBaseService`
      Throws:
        `InitializationException` - Something went wrong in the init stage

    - #### loadJobs

          protected abstract List<? extends JobEntry> loadJobs()
                                                        throws TurbineException

      Load all jobs from configuration storage
      Returns:
        the list of pre-configured jobs
      Throws:
        `TurbineException` - if jobs could not be loaded

    - #### shutdown

          public void shutdown()

      Shutdowns the service. This methods interrupts the housekeeping thread.
      Specified by:
        `shutdown` in interface `Initable`
      Overrides:
        `shutdown` in class `TurbineBaseService`

    - #### newJob

          public abstract JobEntry newJob(int sec,
                        int min,
                        int hour,
                        int wd,
                        int day_mo,
                        String task)
                                   throws TurbineException

      Description copied from interface: `ScheduleService`
      Factory method for a new Job Schedule a job to run on a certain point of time.
      Example 1: Run the DefaultScheduledJob at 8:00am every 15th of the month -
      JobEntry je = newJob(0,0,8,-1,15,"DefaultScheduledJob");
      Example 2: Run the DefaultScheduledJob at 8:00am every day -
      JobEntry je = newJob(0,0,8,-1,-1,"DefaultScheduledJob");
      Example 3: Run the DefaultScheduledJob every 2 hours. -
      JobEntry je = newJob(0,120,-1,-1,-1,"DefaultScheduledJob");
      Example 4: Run the DefaultScheduledJob every 30 seconds. -
      JobEntry je = newJob(30,-1,-1,-1,-1,"DefaultScheduledJob");
      Specified by:
        `newJob` in interface `ScheduleService`
      Parameters:
        `sec` - Value for entry "seconds".
        `min` - Value for entry "minutes".
        `hour` - Value for entry "hours".
        `wd` - Value for entry "week days".
        `day_mo` - Value for entry "month days".
        `task` - Task to execute.
      Returns:
        A JobEntry.
      Throws:
        `TurbineException` - could not create job
      See Also:
        `ScheduleService.newJob(int, int, int, int, int, java.lang.String)`

    - #### getJob

          public abstract JobEntry getJob(int oid)
                                   throws TurbineException

      Get a specific Job from Storage.
      Specified by:
        `getJob` in interface `ScheduleService`
      Parameters:
        `oid` - The int id for the job.
      Returns:
        A JobEntry.
      Throws:
        `TurbineException` - job could not be retrieved.

    - #### addJob

          public void addJob(JobEntry je)
                      throws TurbineException

      Add a new job to the queue.
      Specified by:
        `addJob` in interface `ScheduleService`
      Parameters:
        `je` - A JobEntry with the job to add.
      Throws:
        `TurbineException` - job could not be added

    - #### removeJob

          public abstract void removeJob(JobEntry je)
                                  throws TurbineException

      Remove a job from the queue.
      Specified by:
        `removeJob` in interface `ScheduleService`
      Parameters:
        `je` - A JobEntry with the job to remove.
      Throws:
        `TurbineException` - job could not be removed

    - #### updateJob

          public abstract void updateJob(JobEntry je)
                                  throws TurbineException

      Add or update a job.
      Specified by:
        `updateJob` in interface `ScheduleService`
      Parameters:
        `je` - A JobEntry with the job to modify
      Throws:
        `TurbineException` - job could not be updated

    - #### listJobs

          public List<JobEntry> listJobs()

      List jobs in the queue. This is used by the scheduler UI.
      Specified by:
        `listJobs` in interface `ScheduleService`
      Returns:
        A List of jobs.

    - #### setEnabled

          protected void setEnabled(boolean enabled)

      Sets the enabled status of the scheduler
      Parameters:
        `enabled` - true to enable the scheduler

    - #### isEnabled

          public boolean isEnabled()

      Determines if the scheduler service is currently enabled.
      Specified by:
        `isEnabled` in interface `ScheduleService`
      Returns:
        Status of the scheduler service.

    - #### startScheduler

          public void startScheduler()

      Starts or restarts the scheduler if not already running.
      Specified by:
        `startScheduler` in interface `ScheduleService`

    - #### stopScheduler

          public void stopScheduler()

      Stops the scheduler if it is currently running.
      Specified by:
        `stopScheduler` in interface `ScheduleService`

    - #### getThread

          public Thread getThread()

      Return the thread being used to process commands, or null if there is no such thread. You can use this to invoke any special methods on the thread, for example, to interrupt it.
      Returns:
        A Thread.

    - #### clearThread

          protected void clearThread()

      Set thread to null to indicate termination.

    - #### restart

          public void restart()

      Start (or restart) a thread to process commands, or wake up an existing thread if one is already running. This method can be invoked if the background thread crashed due to an unrecoverable exception in an executed command.

    - #### nextJob

          protected JobEntry nextJob()
                              throws TurbineException

      Return the next Job to execute, or null if thread is interrupted.
      Returns:
        A JobEntry.
      Throws:
        `TurbineException` - a generic exception.

Copyright © 2000–2018 The Apache Software Foundation. All rights reserved.