org.quartz.impl.jdbcjobstore
Class StdJDBCDelegate

java.lang.Object
  extended by org.quartz.impl.jdbcjobstore.StdJDBCDelegate
All Implemented Interfaces:
Constants, StdJDBCConstants
Direct Known Subclasses:
CloudscapeDelegate, DB2v6Delegate, DB2v7Delegate, DB2v8Delegate, HSQLDBDelegate, MSSQLDelegate, OracleDelegate, PointbaseDelegate, PostgreSQLDelegate, WebLogicDelegate

public class StdJDBCDelegate
extends Object
implements StdJDBCConstants

This is meant to be an abstract base class for most, if not all, DriverDelegate implementations. Subclasses should override only those methods that need special handling for the DBMS driver in question.

Author:
Jeffrey Wescott, James House, Eric Mueller

Field Summary
protected  String instanceId
           
protected  org.apache.commons.logging.Log logger
           
protected  String tablePrefix
           
protected  boolean useProperties
           
 
Fields inherited from interface org.quartz.impl.jdbcjobstore.StdJDBCConstants
COUNT_MISFIRED_TRIGGERS_IN_STATES, DELETE_BLOB_TRIGGER, DELETE_CALENDAR, DELETE_CRON_TRIGGER, DELETE_FIRED_TRIGGER, DELETE_FIRED_TRIGGERS, DELETE_INSTANCES_FIRED_TRIGGERS, DELETE_JOB_DETAIL, DELETE_JOB_LISTENERS, DELETE_NO_RECOVERY_FIRED_TRIGGERS, DELETE_PAUSED_TRIGGER_GROUP, DELETE_PAUSED_TRIGGER_GROUPS, DELETE_SCHEDULER_STATE, DELETE_SIMPLE_TRIGGER, DELETE_TRIGGER, DELETE_TRIGGER_LISTENERS, DELETE_VOLATILE_FIRED_TRIGGERS, INSERT_BLOB_TRIGGER, INSERT_CALENDAR, INSERT_CRON_TRIGGER, INSERT_FIRED_TRIGGER, INSERT_JOB_DETAIL, INSERT_JOB_LISTENER, INSERT_PAUSED_TRIGGER_GROUP, INSERT_SCHEDULER_STATE, INSERT_SIMPLE_TRIGGER, INSERT_TRIGGER, INSERT_TRIGGER_LISTENER, SELECT_BLOB_TRIGGER, SELECT_CALENDAR, SELECT_CALENDAR_EXISTENCE, SELECT_CALENDARS, SELECT_CRON_TRIGGER, SELECT_FIRED_TRIGGER, SELECT_FIRED_TRIGGER_GROUP, SELECT_FIRED_TRIGGER_INSTANCE_NAMES, SELECT_FIRED_TRIGGERS, SELECT_FIRED_TRIGGERS_OF_JOB, SELECT_FIRED_TRIGGERS_OF_JOB_GROUP, SELECT_INSTANCES_FIRED_TRIGGERS, SELECT_INSTANCES_RECOVERABLE_FIRED_TRIGGERS, SELECT_JOB_DETAIL, SELECT_JOB_EXECUTION_COUNT, SELECT_JOB_EXISTENCE, SELECT_JOB_FOR_TRIGGER, SELECT_JOB_GROUPS, SELECT_JOB_LISTENERS, SELECT_JOB_STATEFUL, SELECT_JOBS_IN_GROUP, SELECT_MISFIRED_TRIGGERS, SELECT_MISFIRED_TRIGGERS_IN_GROUP_IN_STATE, SELECT_MISFIRED_TRIGGERS_IN_STATE, SELECT_MISFIRED_TRIGGERS_IN_STATES, SELECT_NEXT_FIRE_TIME, SELECT_NEXT_TRIGGER_TO_ACQUIRE, SELECT_NUM_CALENDARS, SELECT_NUM_JOBS, SELECT_NUM_TRIGGERS, SELECT_NUM_TRIGGERS_FOR_JOB, SELECT_NUM_TRIGGERS_IN_GROUP, SELECT_PAUSED_TRIGGER_GROUP, SELECT_PAUSED_TRIGGER_GROUPS, SELECT_REFERENCED_CALENDAR, SELECT_SCHEDULER_STATE, SELECT_SCHEDULER_STATES, SELECT_SIMPLE_TRIGGER, SELECT_STATEFUL_JOBS_OF_TRIGGER_GROUP, SELECT_TRIGGER, SELECT_TRIGGER_DATA, SELECT_TRIGGER_EXISTENCE, SELECT_TRIGGER_FOR_FIRE_TIME, SELECT_TRIGGER_GROUPS, SELECT_TRIGGER_LISTENERS, SELECT_TRIGGER_STATE, SELECT_TRIGGER_STATUS, SELECT_TRIGGERS_FOR_CALENDAR, SELECT_TRIGGERS_FOR_JOB, SELECT_TRIGGERS_IN_GROUP, SELECT_TRIGGERS_IN_STATE, SELECT_VOLATILE_JOBS, SELECT_VOLATILE_TRIGGERS, TABLE_PREFIX_SUBST, UPDATE_BLOB_TRIGGER, UPDATE_CALENDAR, UPDATE_CRON_TRIGGER, UPDATE_INSTANCES_FIRED_TRIGGER_STATE, UPDATE_JOB_DATA, UPDATE_JOB_DETAIL, UPDATE_JOB_TRIGGER_STATES, UPDATE_JOB_TRIGGER_STATES_FROM_OTHER_STATE, UPDATE_SCHEDULER_STATE, UPDATE_SIMPLE_TRIGGER, UPDATE_TRIGGER, UPDATE_TRIGGER_GROUP_STATE, UPDATE_TRIGGER_GROUP_STATE_FROM_STATE, UPDATE_TRIGGER_GROUP_STATE_FROM_STATES, UPDATE_TRIGGER_SKIP_DATA, UPDATE_TRIGGER_STATE, UPDATE_TRIGGER_STATE_FROM_OTHER_STATES_BEFORE_TIME, UPDATE_TRIGGER_STATE_FROM_STATE, UPDATE_TRIGGER_STATE_FROM_STATES, UPDATE_TRIGGER_STATES_FROM_OTHER_STATES
 
Fields inherited from interface org.quartz.impl.jdbcjobstore.Constants
ALIAS_COL_NEXT_FIRE_TIME, ALL_GROUPS_PAUSED, COL_BLOB, COL_CALENDAR, COL_CALENDAR_NAME, COL_CHECKIN_INTERVAL, COL_CRON_EXPRESSION, COL_DESCRIPTION, COL_END_TIME, COL_ENTRY_ID, COL_ENTRY_STATE, COL_FIRED_TIME, COL_INSTANCE_NAME, COL_IS_DURABLE, COL_IS_STATEFUL, COL_IS_VOLATILE, COL_JOB_CLASS, COL_JOB_DATAMAP, COL_JOB_GROUP, COL_JOB_LISTENER, COL_JOB_NAME, COL_LAST_CHECKIN_TIME, COL_LOCK_NAME, COL_MISFIRE_INSTRUCTION, COL_NEXT_FIRE_TIME, COL_PREV_FIRE_TIME, COL_PRIORITY, COL_REPEAT_COUNT, COL_REPEAT_INTERVAL, COL_REQUESTS_RECOVERY, COL_START_TIME, COL_TIME_ZONE_ID, COL_TIMES_TRIGGERED, COL_TRIGGER_GROUP, COL_TRIGGER_LISTENER, COL_TRIGGER_NAME, COL_TRIGGER_STATE, COL_TRIGGER_TYPE, DEFAULT_TABLE_PREFIX, STATE_ACQUIRED, STATE_BLOCKED, STATE_COMPLETE, STATE_DELETED, STATE_ERROR, STATE_EXECUTING, STATE_MISFIRED, STATE_PAUSED, STATE_PAUSED_BLOCKED, STATE_WAITING, TABLE_BLOB_TRIGGERS, TABLE_CALENDARS, TABLE_CRON_TRIGGERS, TABLE_FIRED_TRIGGERS, TABLE_JOB_DETAILS, TABLE_JOB_LISTENERS, TABLE_LOCKS, TABLE_PAUSED_TRIGGERS, TABLE_SCHEDULER_STATE, TABLE_SIMPLE_TRIGGERS, TABLE_TRIGGER_LISTENERS, TABLE_TRIGGERS, TTYPE_BLOB, TTYPE_CRON, TTYPE_SIMPLE
 
Constructor Summary
StdJDBCDelegate(org.apache.commons.logging.Log logger, String tablePrefix, String instanceId)
           Create new StdJDBCDelegate instance.
StdJDBCDelegate(org.apache.commons.logging.Log logger, String tablePrefix, String instanceId, Boolean useProperties)
           Create new StdJDBCDelegate instance.
 
Method Summary
 boolean calendarExists(Connection conn, String calendarName)
           Check whether or not a calendar exists.
 boolean calendarIsReferenced(Connection conn, String calendarName)
           Check whether or not a calendar is referenced by any triggers.
protected  boolean canUseProperties()
           
protected  void closeResultSet(ResultSet rs)
          Cleanup helper method that closes the given ResultSet while ignoring any errors.
protected  void closeStatement(Statement statement)
          Cleanup helper method that closes the given Statement while ignoring any errors.
protected  Map convertFromProperty(Properties properties)
          convert the JobDataMap into a list of properties
protected  Properties convertToProperty(Map data)
          convert the JobDataMap into a list of properties
 int countMisfiredTriggersInStates(Connection conn, String state1, String state2, long ts)
           Get the number of triggers in the given states that have misfired - according to the given timestamp.
 int deleteAllPausedTriggerGroups(Connection conn)
           
 int deleteBlobTrigger(Connection conn, String triggerName, String groupName)
           Delete the cron trigger data for a trigger.
 int deleteCalendar(Connection conn, String calendarName)
           Delete a calendar.
 int deleteCronTrigger(Connection conn, String triggerName, String groupName)
           Delete the cron trigger data for a trigger.
 int deleteFiredTrigger(Connection conn, String entryId)
           Delete a fired trigger.
 int deleteFiredTriggers(Connection conn)
           Delete all fired triggers.
 int deleteFiredTriggers(Connection conn, String instanceId)
           Delete all fired triggers of the given instance.
 int deleteJobDetail(Connection conn, String jobName, String groupName)
           Delete the job detail record for the given job.
 int deleteJobListeners(Connection conn, String jobName, String groupName)
           Delete all job listeners for the given job.
 int deletePausedTriggerGroup(Connection conn, String groupName)
           
 int deleteSchedulerState(Connection conn, String instanceId)
           Delete a scheduler-instance state record.
 int deleteSimpleTrigger(Connection conn, String triggerName, String groupName)
           Delete the simple trigger data for a trigger.
 int deleteTrigger(Connection conn, String triggerName, String groupName)
           Delete the base trigger data for a trigger.
 int deleteTriggerListeners(Connection conn, String triggerName, String groupName)
           Delete all of the listeners associated with a given trigger.
 int deleteVolatileFiredTriggers(Connection conn)
           Delete all volatile fired triggers.
protected  boolean getBoolean(ResultSet rs, int columnIndex)
          Retrieves the value of the designated column index in the current row as a boolean.
protected  boolean getBoolean(ResultSet rs, String columnName)
          Retrieves the value of the designated column in the current row as a boolean.
protected  Object getJobDetailFromBlob(ResultSet rs, String colName)
           This method should be overridden by any delegate subclasses that need special handling for BLOBs for job details.
protected  Object getKeyOfNonSerializableValue(Map data)
          Find the key of the first non-serializable value in the given Map.
protected  Object getObjectFromBlob(ResultSet rs, String colName)
           This method should be overridden by any delegate subclasses that need special handling for BLOBs.
 int insertBlobTrigger(Connection conn, Trigger trigger)
           Insert the blob trigger data.
 int insertCalendar(Connection conn, String calendarName, Calendar calendar)
           Insert a new calendar.
 int insertCronTrigger(Connection conn, CronTrigger trigger)
           Insert the cron trigger data.
 int insertFiredTrigger(Connection conn, Trigger trigger, String state, JobDetail job)
           Insert a fired trigger.
 int insertJobDetail(Connection conn, JobDetail job)
           Insert the job detail record.
 int insertJobListener(Connection conn, JobDetail job, String listener)
           Associate a listener with a job.
 int insertPausedTriggerGroup(Connection conn, String groupName)
           
 int insertSchedulerState(Connection conn, String instanceId, long checkInTime, long interval)
           Insert a scheduler-instance state record.
 int insertSimpleTrigger(Connection conn, SimpleTrigger trigger)
           Insert the simple trigger data.
 int insertTrigger(Connection conn, Trigger trigger, String state, JobDetail jobDetail)
           Insert the base trigger data.
 int insertTriggerListener(Connection conn, Trigger trigger, String listener)
           Associate a listener with the given trigger.
 boolean isExistingTriggerGroup(Connection conn, String groupName)
           
 boolean isJobStateful(Connection conn, String jobName, String groupName)
           Check whether or not the given job is stateful.
 boolean isTriggerGroupPaused(Connection conn, String groupName)
           
 boolean jobExists(Connection conn, String jobName, String groupName)
           Check whether or not the given job exists.
protected  String rtp(String query)
           Replace the table prefix in a query by replacing any occurrences of "{0}" with the table prefix.
 Calendar selectCalendar(Connection conn, String calendarName)
           Select a calendar.
 String[] selectCalendars(Connection conn)
           Select all of the stored calendars.
 Set selectFiredTriggerInstanceNames(Connection conn)
           Select the distinct instance names of all fired-trigger records.
 List selectFiredTriggerRecords(Connection conn, String triggerName, String groupName)
           Select the states of all fired-trigger records for a given trigger, or trigger group if trigger name is null.
 List selectFiredTriggerRecordsByJob(Connection conn, String jobName, String groupName)
           Select the states of all fired-trigger records for a given job, or job group if job name is null.
 List selectInstancesFiredTriggerRecords(Connection conn, String instanceName)
           Select the states of all fired-trigger records for a given scheduler instance.
 JobDetail selectJobDetail(Connection conn, String jobName, String groupName, ClassLoadHelper loadHelper)
           Select the JobDetail object for a given job name / group name.
 int selectJobExecutionCount(Connection conn, String jobName, String jobGroup)
           Get the number instances of the identified job currently executing.
 JobDetail selectJobForTrigger(Connection conn, String triggerName, String groupName, ClassLoadHelper loadHelper)
           Select the job to which the trigger is associated.
 String[] selectJobGroups(Connection conn)
           Select all of the job group names that are stored.
 String[] selectJobListeners(Connection conn, String jobName, String groupName)
           Get all of the listeners for a given job.
 String[] selectJobsInGroup(Connection conn, String groupName)
           Select all of the jobs contained in a given group.
 Key[] selectMisfiredTriggers(Connection conn, long ts)
           Get the names of all of the triggers that have misfired.
 Key[] selectMisfiredTriggersInGroupInState(Connection conn, String groupName, String state, long ts)
           Get the names of all of the triggers in the given group and state that have misfired.
 Key[] selectMisfiredTriggersInState(Connection conn, String state, long ts)
           Get the names of all of the triggers in the given state that have misfired - according to the given timestamp.
 boolean selectMisfiredTriggersInStates(Connection conn, String state1, String state2, long ts, int count, List resultList)
           Get the names of all of the triggers in the given states that have misfired - according to the given timestamp.
 long selectNextFireTime(Connection conn)
          Deprecated. Does not account for misfires.
 int selectNumCalendars(Connection conn)
           Select the total number of calendars stored.
 int selectNumJobs(Connection conn)
           Select the total number of jobs stored.
 int selectNumTriggers(Connection conn)
           Select the total number of triggers stored.
 int selectNumTriggersForJob(Connection conn, String jobName, String groupName)
           Select the number of triggers associated with a given job.
 Set selectPausedTriggerGroups(Connection conn)
           
 List selectSchedulerStateRecords(Connection conn, String instanceId)
           A List of all current SchedulerStateRecords.
 List selectStatefulJobsOfTriggerGroup(Connection conn, String groupName)
           Select the stateful jobs which are referenced by triggers in the given trigger group.
 Trigger selectTrigger(Connection conn, String triggerName, String groupName)
           Select a trigger.
 Key selectTriggerForFireTime(Connection conn, long fireTime)
           Select the trigger that will be fired at the given fire time.
 String[] selectTriggerGroups(Connection conn)
           Select all of the trigger group names that are stored.
 JobDataMap selectTriggerJobDataMap(Connection conn, String triggerName, String groupName)
           Select a trigger's JobDataMap.
 String[] selectTriggerListeners(Connection conn, String triggerName, String groupName)
           Select the listeners associated with a given trigger.
 Key[] selectTriggerNamesForJob(Connection conn, String jobName, String groupName)
           Get the names of all of the triggers associated with the given job.
 Trigger[] selectTriggersForCalendar(Connection conn, String calName)
           Select the triggers for a calendar
 Trigger[] selectTriggersForJob(Connection conn, String jobName, String groupName)
           Select the triggers for a job
 Trigger[] selectTriggersForRecoveringJobs(Connection conn)
           Select all of the triggers for jobs that are requesting recovery.
 String[] selectTriggersInGroup(Connection conn, String groupName)
           Select all of the triggers contained in a given group.
 Key[] selectTriggersInState(Connection conn, String state)
           Select all of the triggers in a given state.
 String selectTriggerState(Connection conn, String triggerName, String groupName)
           Select a trigger' state value.
 TriggerStatus selectTriggerStatus(Connection conn, String triggerName, String groupName)
           Select a trigger' status (state & next fire time).
 Key selectTriggerToAcquire(Connection conn, long noLaterThan, long noEarlierThan)
           Select the next trigger which will fire to fire between the two given timestamps in ascending order of fire time, and then descending by priority.
 Key[] selectVolatileJobs(Connection conn)
           Get the names of all of the jobs that are volatile.
 Key[] selectVolatileTriggers(Connection conn)
           Get the names of all of the triggers that are volatile.
protected  ByteArrayOutputStream serializeJobData(JobDataMap data)
           Remove the transient data from and then create a serialized java.util.ByteArrayOutputStream version of a JobDataMap.
protected  ByteArrayOutputStream serializeObject(Object obj)
           Create a serialized java.util.ByteArrayOutputStream version of an Object.
protected  void setBoolean(PreparedStatement ps, int index, boolean val)
          Sets the designated parameter to the given Java boolean value.
protected  void setBytes(PreparedStatement ps, int index, ByteArrayOutputStream baos)
          Sets the designated parameter to the byte array of the given ByteArrayOutputStream.
 boolean triggerExists(Connection conn, String triggerName, String groupName)
           Check whether or not a trigger exists.
 int updateBlobTrigger(Connection conn, Trigger trigger)
           Update the blob trigger data.
 int updateCalendar(Connection conn, String calendarName, Calendar calendar)
           Update a calendar.
 int updateCronTrigger(Connection conn, CronTrigger trigger)
           Update the cron trigger data.
 int updateJobData(Connection conn, JobDetail job)
           Update the job data map for the given job.
 int updateJobDetail(Connection conn, JobDetail job)
           Update the job detail record.
 int updateSchedulerState(Connection conn, String instanceId, long checkInTime)
           Update a scheduler-instance state record.
 int updateSimpleTrigger(Connection conn, SimpleTrigger trigger)
           Update the simple trigger data.
 int updateTrigger(Connection conn, Trigger trigger, String state, JobDetail jobDetail)
           Update the base trigger data.
 int updateTriggerGroupStateFromOtherState(Connection conn, String groupName, String newState, String oldState)
           Update all of the triggers of the given group to the given new state, if they are in the given old state.
 int updateTriggerGroupStateFromOtherStates(Connection conn, String groupName, String newState, String oldState1, String oldState2, String oldState3)
           Update all triggers in the given group to the given new state, if they are in one of the given old states.
 int updateTriggerState(Connection conn, String triggerName, String groupName, String state)
           Update the state for a given trigger.
 int updateTriggerStateFromOtherState(Connection conn, String triggerName, String groupName, String newState, String oldState)
           Update the given trigger to the given new state, if it is in the given old state.
 int updateTriggerStateFromOtherStates(Connection conn, String triggerName, String groupName, String newState, String oldState1, String oldState2, String oldState3)
           Update the given trigger to the given new state, if it is one of the given old states.
 int updateTriggerStateFromOtherStatesBeforeTime(Connection conn, String newState, String oldState1, String oldState2, long time)
           Update the all triggers to the given new state, if they are in one of the given old states AND its next fire time is before the given time.
 int updateTriggerStatesForJob(Connection conn, String jobName, String groupName, String state)
           Update the states of all triggers associated with the given job.
 int updateTriggerStatesForJobFromOtherState(Connection conn, String jobName, String groupName, String state, String oldState)
           Update the states of any triggers associated with the given job, that are the given current state.
 int updateTriggerStatesFromOtherStates(Connection conn, String newState, String oldState1, String oldState2)
           Insert the job detail record.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected org.apache.commons.logging.Log logger

tablePrefix

protected String tablePrefix

instanceId

protected String instanceId

useProperties

protected boolean useProperties
Constructor Detail

StdJDBCDelegate

public StdJDBCDelegate(org.apache.commons.logging.Log logger,
                       String tablePrefix,
                       String instanceId)

Create new StdJDBCDelegate instance.

Parameters:
logger - the logger to use during execution
tablePrefix - the prefix of all table names

StdJDBCDelegate

public StdJDBCDelegate(org.apache.commons.logging.Log logger,
                       String tablePrefix,
                       String instanceId,
                       Boolean useProperties)

Create new StdJDBCDelegate instance.

Parameters:
logger - the logger to use during execution
tablePrefix - the prefix of all table names
Method Detail

canUseProperties

protected boolean canUseProperties()

updateTriggerStatesFromOtherStates

public int updateTriggerStatesFromOtherStates(Connection conn,
                                              String newState,
                                              String oldState1,