Class StdJDBCDelegate

    • Field Detail

      • logger

        protected org.slf4j.Logger logger
      • tablePrefix

        protected java.lang.String tablePrefix
      • instanceId

        protected java.lang.String instanceId
      • schedName

        protected java.lang.String schedName
      • useProperties

        protected boolean useProperties
    • Constructor Detail

      • StdJDBCDelegate

        public StdJDBCDelegate()

        Create new StdJDBCDelegate instance.

    • Method Detail

      • initialize

        public void initialize​(org.slf4j.Logger logger,
                               java.lang.String tablePrefix,
                               java.lang.String schedName,
                               java.lang.String instanceId,
                               ClassLoadHelper classLoadHelper,
                               boolean useProperties,
                               java.lang.String initString)
                        throws NoSuchDelegateException
        Specified by:
        initialize in interface DriverDelegate
        Parameters:
        initString - of the format: settingName=settingValue|otherSettingName=otherSettingValue|...
        Throws:
        NoSuchDelegateException
      • addDefaultTriggerPersistenceDelegates

        protected void addDefaultTriggerPersistenceDelegates()
      • canUseProperties

        protected boolean canUseProperties()
      • findTriggerPersistenceDelegate

        public TriggerPersistenceDelegate findTriggerPersistenceDelegate​(java.lang.String discriminator)
      • updateTriggerStatesFromOtherStates

        public int updateTriggerStatesFromOtherStates​(java.sql.Connection conn,
                                                      java.lang.String newState,
                                                      java.lang.String oldState1,
                                                      java.lang.String oldState2)
                                               throws java.sql.SQLException

        Insert the job detail record.

        Specified by:
        updateTriggerStatesFromOtherStates in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        newState - the new state for the triggers
        oldState1 - the first old state to update
        oldState2 - the second old state to update
        Returns:
        number of rows updated
        Throws:
        java.sql.SQLException
      • selectMisfiredTriggers

        public java.util.List<TriggerKey> selectMisfiredTriggers​(java.sql.Connection conn,
                                                                 long ts)
                                                          throws java.sql.SQLException

        Get the names of all of the triggers that have misfired.

        Specified by:
        selectMisfiredTriggers in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        an array of Key objects
        Throws:
        java.sql.SQLException
      • selectTriggersInState

        public java.util.List<TriggerKey> selectTriggersInState​(java.sql.Connection conn,
                                                                java.lang.String state)
                                                         throws java.sql.SQLException

        Select all of the triggers in a given state.

        Specified by:
        selectTriggersInState in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        state - the state the triggers must be in
        Returns:
        an array of trigger Key s
        Throws:
        java.sql.SQLException
      • selectMisfiredTriggersInState

        public java.util.List<TriggerKey> selectMisfiredTriggersInState​(java.sql.Connection conn,
                                                                        java.lang.String state,
                                                                        long ts)
                                                                 throws java.sql.SQLException
        Description copied from interface: DriverDelegate

        Get the names of all of the triggers in the given state that have misfired - according to the given timestamp.

        Specified by:
        selectMisfiredTriggersInState in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        an array of Key objects
        Throws:
        java.sql.SQLException
      • hasMisfiredTriggersInState

        public boolean hasMisfiredTriggersInState​(java.sql.Connection conn,
                                                  java.lang.String state1,
                                                  long ts,
                                                  int count,
                                                  java.util.List<TriggerKey> resultList)
                                           throws java.sql.SQLException

        Get the names of all of the triggers in the given state that have misfired - according to the given timestamp. No more than count will be returned.

        Specified by:
        hasMisfiredTriggersInState in interface DriverDelegate
        Parameters:
        conn - The DB Connection
        count - The most misfired triggers to return, negative for all
        resultList - Output parameter. A List of Key objects. Must not be null.
        Returns:
        Whether there are more misfired triggers left to find beyond the given count.
        Throws:
        java.sql.SQLException
      • countMisfiredTriggersInState

        public int countMisfiredTriggersInState​(java.sql.Connection conn,
                                                java.lang.String state1,
                                                long ts)
                                         throws java.sql.SQLException

        Get the number of triggers in the given states that have misfired - according to the given timestamp.

        Specified by:
        countMisfiredTriggersInState in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Throws:
        java.sql.SQLException
      • selectMisfiredTriggersInGroupInState

        public java.util.List<TriggerKey> selectMisfiredTriggersInGroupInState​(java.sql.Connection conn,
                                                                               java.lang.String groupName,
                                                                               java.lang.String state,
                                                                               long ts)
                                                                        throws java.sql.SQLException

        Get the names of all of the triggers in the given group and state that have misfired.

        Specified by:
        selectMisfiredTriggersInGroupInState in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        an array of Key objects
        Throws:
        java.sql.SQLException
      • selectTriggersForRecoveringJobs

        public java.util.List<OperableTrigger> selectTriggersForRecoveringJobs​(java.sql.Connection conn)
                                                                        throws java.sql.SQLException,
                                                                               java.io.IOException,
                                                                               java.lang.ClassNotFoundException

        Select all of the triggers for jobs that are requesting recovery. The returned trigger objects will have unique "recoverXXX" trigger names and will be in the Scheduler.DEFAULT_RECOVERY_GROUP trigger group.

        In order to preserve the ordering of the triggers, the fire time will be set from the COL_FIRED_TIME column in the TABLE_FIRED_TRIGGERS table. The caller is responsible for calling computeFirstFireTime on each returned trigger. It is also up to the caller to insert the returned triggers to ensure that they are fired.

        Specified by:
        selectTriggersForRecoveringJobs in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        an array of Trigger objects
        Throws:
        java.sql.SQLException
        java.io.IOException
        java.lang.ClassNotFoundException
      • deleteFiredTriggers

        public int deleteFiredTriggers​(java.sql.Connection conn)
                                throws java.sql.SQLException

        Delete all fired triggers.

        Specified by:
        deleteFiredTriggers in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the number of rows deleted
        Throws:
        java.sql.SQLException
      • deleteFiredTriggers

        public int deleteFiredTriggers​(java.sql.Connection conn,
                                       java.lang.String theInstanceId)
                                throws java.sql.SQLException
        Description copied from interface: DriverDelegate

        Delete all fired triggers of the given instance.

        Specified by:
        deleteFiredTriggers in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the number of rows deleted
        Throws:
        java.sql.SQLException
      • clearData

        public void clearData​(java.sql.Connection conn)
                       throws java.sql.SQLException
        Clear (delete!) all scheduling data - all Jobs, Triggers Calendars.
        Specified by:
        clearData in interface DriverDelegate
        Throws:
        java.sql.SQLException
      • insertJobDetail

        public int insertJobDetail​(java.sql.Connection conn,
                                   JobDetail job)
                            throws java.io.IOException,
                                   java.sql.SQLException

        Insert the job detail record.

        Specified by:
        insertJobDetail in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        job - the job to insert
        Returns:
        number of rows inserted
        Throws:
        java.io.IOException - if there were problems serializing the JobDataMap
        java.sql.SQLException
      • updateJobDetail

        public int updateJobDetail​(java.sql.Connection conn,
                                   JobDetail job)
                            throws java.io.IOException,
                                   java.sql.SQLException

        Update the job detail record.

        Specified by:
        updateJobDetail in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        job - the job to update
        Returns:
        number of rows updated
        Throws:
        java.io.IOException - if there were problems serializing the JobDataMap
        java.sql.SQLException
      • selectTriggerKeysForJob

        public java.util.List<TriggerKey> selectTriggerKeysForJob​(java.sql.Connection conn,
                                                                  JobKey jobKey)
                                                           throws java.sql.SQLException

        Get the names of all of the triggers associated with the given job.

        Specified by:
        selectTriggerKeysForJob in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        an array of Key objects
        Throws:
        java.sql.SQLException
      • deleteJobDetail

        public int deleteJobDetail​(java.sql.Connection conn,
                                   JobKey jobKey)
                            throws java.sql.SQLException

        Delete the job detail record for the given job.

        Specified by:
        deleteJobDetail in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the number of rows deleted
        Throws:
        java.sql.SQLException
      • isJobNonConcurrent

        public boolean isJobNonConcurrent​(java.sql.Connection conn,
                                          JobKey jobKey)
                                   throws java.sql.SQLException

        Check whether or not the given job is stateful.

        Specified by:
        isJobNonConcurrent in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        true if the job exists and is stateful, false otherwise
        Throws:
        java.sql.SQLException
      • jobExists

        public boolean jobExists​(java.sql.Connection conn,
                                 JobKey jobKey)
                          throws java.sql.SQLException

        Check whether or not the given job exists.

        Specified by:
        jobExists in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        true if the job exists, false otherwise
        Throws:
        java.sql.SQLException
      • updateJobData

        public int updateJobData​(java.sql.Connection conn,
                                 JobDetail job)
                          throws java.io.IOException,
                                 java.sql.SQLException

        Update the job data map for the given job.

        Specified by:
        updateJobData in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        job - the job to update
        Returns:
        the number of rows updated
        Throws:
        java.io.IOException - if there were problems serializing the JobDataMap
        java.sql.SQLException
      • selectJobDetail

        public JobDetail selectJobDetail​(java.sql.Connection conn,
                                         JobKey jobKey,
                                         ClassLoadHelper loadHelper)
                                  throws java.lang.ClassNotFoundException,
                                         java.io.IOException,
                                         java.sql.SQLException

        Select the JobDetail object for a given job name / group name.

        Specified by:
        selectJobDetail in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the populated JobDetail object
        Throws:
        java.lang.ClassNotFoundException - if a class found during deserialization cannot be found or if the job class could not be found
        java.io.IOException - if deserialization causes an error
        java.sql.SQLException
      • selectNumJobs

        public int selectNumJobs​(java.sql.Connection conn)
                          throws java.sql.SQLException

        Select the total number of jobs stored.

        Specified by:
        selectNumJobs in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the total number of jobs stored
        Throws:
        java.sql.SQLException
      • selectJobGroups

        public java.util.List<java.lang.String> selectJobGroups​(java.sql.Connection conn)
                                                         throws java.sql.SQLException

        Select all of the job group names that are stored.

        Specified by:
        selectJobGroups in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        an array of String group names
        Throws:
        java.sql.SQLException
      • selectJobsInGroup

        public java.util.Set<JobKey> selectJobsInGroup​(java.sql.Connection conn,
                                                       GroupMatcher<JobKey> matcher)
                                                throws java.sql.SQLException

        Select all of the jobs contained in a given group.

        Specified by:
        selectJobsInGroup in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        matcher - the groupMatcher to evaluate the jobs against
        Returns:
        an array of String job names
        Throws:
        java.sql.SQLException
      • isMatcherEquals

        protected boolean isMatcherEquals​(GroupMatcher<?> matcher)
      • toSqlEqualsClause

        protected java.lang.String toSqlEqualsClause​(GroupMatcher<?> matcher)
      • toSqlLikeClause

        protected java.lang.String toSqlLikeClause​(GroupMatcher<?> matcher)
      • insertTrigger

        public int insertTrigger​(java.sql.Connection conn,
                                 OperableTrigger trigger,
                                 java.lang.String state,
                                 JobDetail jobDetail)
                          throws java.sql.SQLException,
                                 java.io.IOException

        Insert the base trigger data.

        Specified by:
        insertTrigger in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        trigger - the trigger to insert
        state - the state that the trigger should be stored in
        Returns:
        the number of rows inserted
        Throws:
        java.sql.SQLException
        java.io.IOException
      • insertBlobTrigger

        public int insertBlobTrigger​(java.sql.Connection conn,
                                     OperableTrigger trigger)
                              throws java.sql.SQLException,
                                     java.io.IOException

        Insert the blob trigger data.

        Parameters:
        conn - the DB Connection
        trigger - the trigger to insert
        Returns:
        the number of rows inserted
        Throws:
        java.sql.SQLException
        java.io.IOException
      • updateTrigger

        public int updateTrigger​(java.sql.Connection conn,
                                 OperableTrigger trigger,
                                 java.lang.String state,
                                 JobDetail jobDetail)
                          throws java.sql.SQLException,
                                 java.io.IOException

        Update the base trigger data.

        Specified by:
        updateTrigger in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        trigger - the trigger to insert
        state - the state that the trigger should be stored in
        Returns:
        the number of rows updated
        Throws:
        java.sql.SQLException
        java.io.IOException
      • updateBlobTrigger

        public int updateBlobTrigger​(java.sql.Connection conn,
                                     OperableTrigger trigger)
                              throws java.sql.SQLException,
                                     java.io.IOException

        Update the blob trigger data.

        Parameters:
        conn - the DB Connection
        trigger - the trigger to insert
        Returns:
        the number of rows updated
        Throws:
        java.sql.SQLException
        java.io.IOException
      • triggerExists

        public boolean triggerExists​(java.sql.Connection conn,
                                     TriggerKey triggerKey)
                              throws java.sql.SQLException

        Check whether or not a trigger exists.

        Specified by:
        triggerExists in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        true if the trigger exists, false otherwise
        Throws:
        java.sql.SQLException
      • updateTriggerState

        public int updateTriggerState​(java.sql.Connection conn,
                                      TriggerKey triggerKey,
                                      java.lang.String state)
                               throws java.sql.SQLException

        Update the state for a given trigger.

        Specified by:
        updateTriggerState in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        state - the new state for the trigger
        Returns:
        the number of rows updated
        Throws:
        java.sql.SQLException
      • updateTriggerStateFromOtherStates

        public int updateTriggerStateFromOtherStates​(java.sql.Connection conn,
                                                     TriggerKey triggerKey,
                                                     java.lang.String newState,
                                                     java.lang.String oldState1,
                                                     java.lang.String oldState2,
                                                     java.lang.String oldState3)
                                              throws java.sql.SQLException

        Update the given trigger to the given new state, if it is one of the given old states.

        Specified by:
        updateTriggerStateFromOtherStates in interface DriverDelegate
        Parameters:
        conn - the DB connection
        newState - the new state for the trigger
        oldState1 - one of the old state the trigger must be in
        oldState2 - one of the old state the trigger must be in
        oldState3 - one of the old state the trigger must be in
        Returns:
        int the number of rows updated
        Throws:
        java.sql.SQLException
      • updateTriggerGroupStateFromOtherStates

        public int updateTriggerGroupStateFromOtherStates​(java.sql.Connection conn,
                                                          GroupMatcher<TriggerKey> matcher,
                                                          java.lang.String newState,
                                                          java.lang.String oldState1,
                                                          java.lang.String oldState2,
                                                          java.lang.String oldState3)
                                                   throws java.sql.SQLException

        Update all triggers in the given group to the given new state, if they are in one of the given old states.

        Specified by:
        updateTriggerGroupStateFromOtherStates in interface DriverDelegate
        Parameters:
        conn - the DB connection
        matcher - the groupMatcher to evaluate the triggers against
        newState - the new state for the trigger
        oldState1 - one of the old state the trigger must be in
        oldState2 - one of the old state the trigger must be in
        oldState3 - one of the old state the trigger must be in
        Returns:
        int the number of rows updated
        Throws:
        java.sql.SQLException
      • updateTriggerStateFromOtherState

        public int updateTriggerStateFromOtherState​(java.sql.Connection conn,
                                                    TriggerKey triggerKey,
                                                    java.lang.String newState,
                                                    java.lang.String oldState)
                                             throws java.sql.SQLException

        Update the given trigger to the given new state, if it is in the given old state.

        Specified by:
        updateTriggerStateFromOtherState in interface DriverDelegate
        Parameters:
        conn - the DB connection
        newState - the new state for the trigger
        oldState - the old state the trigger must be in
        Returns:
        int the number of rows updated
        Throws:
        java.sql.SQLException
      • updateTriggerGroupStateFromOtherState

        public int updateTriggerGroupStateFromOtherState​(java.sql.Connection conn,
                                                         GroupMatcher<TriggerKey> matcher,
                                                         java.lang.String newState,
                                                         java.lang.String oldState)
                                                  throws java.sql.SQLException

        Update all of the triggers of the given group to the given new state, if they are in the given old state.

        Specified by:
        updateTriggerGroupStateFromOtherState in interface DriverDelegate
        Parameters:
        conn - the DB connection
        matcher - the groupMatcher to evaluate the triggers against
        newState - the new state for the trigger group
        oldState - the old state the triggers must be in
        Returns:
        int the number of rows updated
        Throws:
        java.sql.SQLException
      • updateTriggerStatesForJob

        public int updateTriggerStatesForJob​(java.sql.Connection conn,
                                             JobKey jobKey,
                                             java.lang.String state)
                                      throws java.sql.SQLException

        Update the states of all triggers associated with the given job.

        Specified by:
        updateTriggerStatesForJob in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        state - the new state for the triggers
        Returns:
        the number of rows updated
        Throws:
        java.sql.SQLException
      • updateTriggerStatesForJobFromOtherState

        public int updateTriggerStatesForJobFromOtherState​(java.sql.Connection conn,
                                                           JobKey jobKey,
                                                           java.lang.String state,
                                                           java.lang.String oldState)
                                                    throws java.sql.SQLException
        Description copied from interface: DriverDelegate

        Update the states of any triggers associated with the given job, that are the given current state.

        Specified by:
        updateTriggerStatesForJobFromOtherState in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        state - the new state for the triggers
        oldState - the old state of the triggers
        Returns:
        the number of rows updated
        Throws:
        java.sql.SQLException
      • deleteBlobTrigger

        public int deleteBlobTrigger​(java.sql.Connection conn,
                                     TriggerKey triggerKey)
                              throws java.sql.SQLException

        Delete the cron trigger data for a trigger.

        Parameters:
        conn - the DB Connection
        Returns:
        the number of rows deleted
        Throws:
        java.sql.SQLException
      • deleteTrigger

        public int deleteTrigger​(java.sql.Connection conn,
                                 TriggerKey triggerKey)
                          throws java.sql.SQLException

        Delete the base trigger data for a trigger.

        Specified by:
        deleteTrigger in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the number of rows deleted
        Throws:
        java.sql.SQLException
      • deleteTriggerExtension

        protected void deleteTriggerExtension​(java.sql.Connection conn,
                                              TriggerKey triggerKey)
                                       throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • selectNumTriggersForJob

        public int selectNumTriggersForJob​(java.sql.Connection conn,
                                           JobKey jobKey)
                                    throws java.sql.SQLException

        Select the number of triggers associated with a given job.

        Specified by:
        selectNumTriggersForJob in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the number of triggers for the given job
        Throws:
        java.sql.SQLException
      • selectJobForTrigger

        public JobDetail selectJobForTrigger​(java.sql.Connection conn,
                                             ClassLoadHelper loadHelper,
                                             TriggerKey triggerKey)
                                      throws java.lang.ClassNotFoundException,
                                             java.sql.SQLException

        Select the job to which the trigger is associated.

        Specified by:
        selectJobForTrigger in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the JobDetail object associated with the given trigger
        Throws:
        java.sql.SQLException
        java.lang.ClassNotFoundException
      • selectJobForTrigger

        public JobDetail selectJobForTrigger​(java.sql.Connection conn,
                                             ClassLoadHelper loadHelper,
                                             TriggerKey triggerKey,
                                             boolean loadJobClass)
                                      throws java.lang.ClassNotFoundException,
                                             java.sql.SQLException

        Select the job to which the trigger is associated. Allow option to load actual job class or not. When case of remove, we do not need to load the class, which in many cases, it's no longer exists.

        Specified by:
        selectJobForTrigger in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the JobDetail object associated with the given trigger
        Throws:
        java.sql.SQLException
        java.lang.ClassNotFoundException
      • selectTriggersForJob

        public java.util.List<OperableTrigger> selectTriggersForJob​(java.sql.Connection conn,
                                                                    JobKey jobKey)
                                                             throws java.sql.SQLException,
                                                                    java.lang.ClassNotFoundException,
                                                                    java.io.IOException,
                                                                    JobPersistenceException

        Select the triggers for a job

        Specified by:
        selectTriggersForJob in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        an array of (@link org.quartz.Trigger) objects associated with a given job.
        Throws:
        java.sql.SQLException
        JobPersistenceException
        java.lang.ClassNotFoundException
        java.io.IOException
      • selectTriggersForCalendar

        public java.util.List<OperableTrigger> selectTriggersForCalendar​(java.sql.Connection conn,
                                                                         java.lang.String calName)
                                                                  throws java.sql.SQLException,
                                                                         java.lang.ClassNotFoundException,
                                                                         java.io.IOException,
                                                                         JobPersistenceException
        Description copied from interface: DriverDelegate

        Select the triggers for a calendar

        Specified by:
        selectTriggersForCalendar in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        calName - the name of the calendar
        Returns:
        an array of (@link org.quartz.Trigger) objects associated with the given calendar.
        Throws:
        java.sql.SQLException
        JobPersistenceException
        java.lang.ClassNotFoundException
        java.io.IOException
      • selectTriggerJobDataMap

        public JobDataMap selectTriggerJobDataMap​(java.sql.Connection conn,
                                                  java.lang.String triggerName,
                                                  java.lang.String groupName)
                                           throws java.sql.SQLException,
                                                  java.lang.ClassNotFoundException,
                                                  java.io.IOException

        Select a trigger's JobDataMap.

        Specified by:
        selectTriggerJobDataMap in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        triggerName - the name of the trigger
        groupName - the group containing the trigger
        Returns:
        the JobDataMap of the Trigger, never null, but possibly empty.
        Throws:
        java.sql.SQLException
        java.lang.ClassNotFoundException
        java.io.IOException
      • selectTriggerState

        public java.lang.String selectTriggerState​(java.sql.Connection conn,
                                                   TriggerKey triggerKey)
                                            throws java.sql.SQLException

        Select a trigger' state value.

        Specified by:
        selectTriggerState in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the Trigger object
        Throws:
        java.sql.SQLException
      • selectTriggerStatus

        public TriggerStatus selectTriggerStatus​(java.sql.Connection conn,
                                                 TriggerKey triggerKey)
                                          throws java.sql.SQLException

        Select a trigger' status (state and next fire time).

        Specified by:
        selectTriggerStatus in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        a TriggerStatus object, or null
        Throws:
        java.sql.SQLException
      • selectNumTriggers

        public int selectNumTriggers​(java.sql.Connection conn)
                              throws java.sql.SQLException

        Select the total number of triggers stored.

        Specified by:
        selectNumTriggers in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the total number of triggers stored
        Throws:
        java.sql.SQLException
      • selectTriggerGroups

        public java.util.List<java.lang.String> selectTriggerGroups​(java.sql.Connection conn)
                                                             throws java.sql.SQLException

        Select all of the trigger group names that are stored.

        Specified by:
        selectTriggerGroups in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        an array of String group names
        Throws:
        java.sql.SQLException
      • selectTriggersInGroup

        public java.util.Set<TriggerKey> selectTriggersInGroup​(java.sql.Connection conn,
                                                               GroupMatcher<TriggerKey> matcher)
                                                        throws java.sql.SQLException

        Select all of the triggers contained in a given group.

        Specified by:
        selectTriggersInGroup in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        matcher - to evaluate against known triggers
        Returns:
        a Set of TriggerKeys
        Throws:
        java.sql.SQLException
      • insertPausedTriggerGroup

        public int insertPausedTriggerGroup​(java.sql.Connection conn,
                                            java.lang.String groupName)
                                     throws java.sql.SQLException
        Specified by:
        insertPausedTriggerGroup in interface DriverDelegate
        Throws:
        java.sql.SQLException
      • deletePausedTriggerGroup

        public int deletePausedTriggerGroup​(java.sql.Connection conn,
                                            java.lang.String groupName)
                                     throws java.sql.SQLException
        Specified by:
        deletePausedTriggerGroup in interface DriverDelegate
        Throws:
        java.sql.SQLException
      • deleteAllPausedTriggerGroups

        public int deleteAllPausedTriggerGroups​(java.sql.Connection conn)
                                         throws java.sql.SQLException
        Specified by:
        deleteAllPausedTriggerGroups in interface DriverDelegate
        Throws:
        java.sql.SQLException
      • isTriggerGroupPaused

        public boolean isTriggerGroupPaused​(java.sql.Connection conn,
                                            java.lang.String groupName)
                                     throws java.sql.SQLException
        Specified by:
        isTriggerGroupPaused in interface DriverDelegate
        Throws:
        java.sql.SQLException
      • isExistingTriggerGroup

        public boolean isExistingTriggerGroup​(java.sql.Connection conn,
                                              java.lang.String groupName)
                                       throws java.sql.SQLException
        Specified by:
        isExistingTriggerGroup in interface DriverDelegate
        Throws:
        java.sql.SQLException
      • insertCalendar

        public int insertCalendar​(java.sql.Connection conn,
                                  java.lang.String calendarName,
                                  Calendar calendar)
                           throws java.io.IOException,
                                  java.sql.SQLException

        Insert a new calendar.

        Specified by:
        insertCalendar in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        calendarName - the name for the new calendar
        calendar - the calendar
        Returns:
        the number of rows inserted
        Throws:
        java.io.IOException - if there were problems serializing the calendar
        java.sql.SQLException
      • updateCalendar

        public int updateCalendar​(java.sql.Connection conn,
                                  java.lang.String calendarName,
                                  Calendar calendar)
                           throws java.io.IOException,
                                  java.sql.SQLException

        Update a calendar.

        Specified by:
        updateCalendar in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        calendarName - the name for the new calendar
        calendar - the calendar
        Returns:
        the number of rows updated
        Throws:
        java.io.IOException - if there were problems serializing the calendar
        java.sql.SQLException
      • calendarExists

        public boolean calendarExists​(java.sql.Connection conn,
                                      java.lang.String calendarName)
                               throws java.sql.SQLException

        Check whether or not a calendar exists.

        Specified by:
        calendarExists in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        calendarName - the name of the calendar
        Returns:
        true if the trigger exists, false otherwise
        Throws:
        java.sql.SQLException
      • selectCalendar

        public Calendar selectCalendar​(java.sql.Connection conn,
                                       java.lang.String calendarName)
                                throws java.lang.ClassNotFoundException,
                                       java.io.IOException,
                                       java.sql.SQLException

        Select a calendar.

        Specified by:
        selectCalendar in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        calendarName - the name of the calendar
        Returns:
        the Calendar
        Throws:
        java.lang.ClassNotFoundException - if a class found during deserialization cannot be found be found
        java.io.IOException - if there were problems deserializing the calendar
        java.sql.SQLException
      • calendarIsReferenced

        public boolean calendarIsReferenced​(java.sql.Connection conn,
                                            java.lang.String calendarName)
                                     throws java.sql.SQLException

        Check whether or not a calendar is referenced by any triggers.

        Specified by:
        calendarIsReferenced in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        calendarName - the name of the calendar
        Returns:
        true if any triggers reference the calendar, false otherwise
        Throws:
        java.sql.SQLException
      • deleteCalendar

        public int deleteCalendar​(java.sql.Connection conn,
                                  java.lang.String calendarName)
                           throws java.sql.SQLException

        Delete a calendar.

        Specified by:
        deleteCalendar in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        calendarName - the name of the trigger
        Returns:
        the number of rows deleted
        Throws:
        java.sql.SQLException
      • selectNumCalendars

        public int selectNumCalendars​(java.sql.Connection conn)
                               throws java.sql.SQLException

        Select the total number of calendars stored.

        Specified by:
        selectNumCalendars in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the total number of calendars stored
        Throws:
        java.sql.SQLException
      • selectCalendars

        public java.util.List<java.lang.String> selectCalendars​(java.sql.Connection conn)
                                                         throws java.sql.SQLException

        Select all of the stored calendars.

        Specified by:
        selectCalendars in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        an array of String calendar names
        Throws:
        java.sql.SQLException
      • selectNextFireTime

        @Deprecated
        public long selectNextFireTime​(java.sql.Connection conn)
                                throws java.sql.SQLException
        Deprecated.
        Does not account for misfires.

        Select the next time that a trigger will be fired.

        Specified by:
        selectNextFireTime in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the next fire time, or 0 if no trigger will be fired
        Throws:
        java.sql.SQLException
      • selectTriggerForFireTime

        public TriggerKey selectTriggerForFireTime​(java.sql.Connection conn,
                                                   long fireTime)
                                            throws java.sql.SQLException

        Select the trigger that will be fired at the given fire time.

        Specified by:
        selectTriggerForFireTime in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        fireTime - the time that the trigger will be fired
        Returns:
        a Key representing the trigger that will be fired at the given fire time, or null if no trigger will be fired at that time
        Throws:
        java.sql.SQLException
      • selectTriggerToAcquire

        @Deprecated
        public java.util.List<TriggerKey> selectTriggerToAcquire​(java.sql.Connection conn,
                                                                 long noLaterThan,
                                                                 long noEarlierThan)
                                                          throws java.sql.SQLException
        Deprecated.
        - This remained for compatibility reason. Use selectTriggerToAcquire(Connection, long, long, int) instead.

        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.

        Specified by:
        selectTriggerToAcquire in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        noLaterThan - highest value of getNextFireTime() of the triggers (exclusive)
        noEarlierThan - highest value of getNextFireTime() of the triggers (inclusive)
        Returns:
        A (never null, possibly empty) list of the identifiers (Key objects) of the next triggers to be fired.
        Throws:
        java.sql.SQLException
      • selectTriggerToAcquire

        public java.util.List<TriggerKey> selectTriggerToAcquire​(java.sql.Connection conn,
                                                                 long noLaterThan,
                                                                 long noEarlierThan,
                                                                 int maxCount)
                                                          throws java.sql.SQLException

        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.

        Specified by:
        selectTriggerToAcquire in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        noLaterThan - highest value of getNextFireTime() of the triggers (exclusive)
        noEarlierThan - highest value of getNextFireTime() of the triggers (inclusive)
        maxCount - maximum number of trigger keys allow to acquired in the returning list.
        Returns:
        A (never null, possibly empty) list of the identifiers (Key objects) of the next triggers to be fired.
        Throws:
        java.sql.SQLException
      • insertFiredTrigger

        public int insertFiredTrigger​(java.sql.Connection conn,
                                      OperableTrigger trigger,
                                      java.lang.String state,
                                      JobDetail job)
                               throws java.sql.SQLException

        Insert a fired trigger.

        Specified by:
        insertFiredTrigger in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        trigger - the trigger
        state - the state that the trigger should be stored in
        Returns:
        the number of rows inserted
        Throws:
        java.sql.SQLException
      • updateFiredTrigger

        public int updateFiredTrigger​(java.sql.Connection conn,
                                      OperableTrigger trigger,
                                      java.lang.String state,
                                      JobDetail job)
                               throws java.sql.SQLException

        Update a fired trigger.

        Specified by:
        updateFiredTrigger in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        trigger - the trigger
        state - the state that the trigger should be stored in
        Returns:
        the number of rows inserted
        Throws:
        java.sql.SQLException
      • selectFiredTriggerRecords

        public java.util.List<FiredTriggerRecord> selectFiredTriggerRecords​(java.sql.Connection conn,
                                                                            java.lang.String triggerName,
                                                                            java.lang.String groupName)
                                                                     throws java.sql.SQLException

        Select the states of all fired-trigger records for a given trigger, or trigger group if trigger name is null.

        Specified by:
        selectFiredTriggerRecords in interface DriverDelegate
        Returns:
        a List of FiredTriggerRecord objects.
        Throws:
        java.sql.SQLException
      • selectFiredTriggerRecordsByJob

        public java.util.List<FiredTriggerRecord> selectFiredTriggerRecordsByJob​(java.sql.Connection conn,
                                                                                 java.lang.String jobName,
                                                                                 java.lang.String groupName)
                                                                          throws java.sql.SQLException

        Select the states of all fired-trigger records for a given job, or job group if job name is null.

        Specified by:
        selectFiredTriggerRecordsByJob in interface DriverDelegate
        Returns:
        a List of FiredTriggerRecord objects.
        Throws:
        java.sql.SQLException
      • selectInstancesFiredTriggerRecords

        public java.util.List<FiredTriggerRecord> selectInstancesFiredTriggerRecords​(java.sql.Connection conn,
                                                                                     java.lang.String instanceName)
                                                                              throws java.sql.SQLException
        Description copied from interface: DriverDelegate

        Select the states of all fired-trigger records for a given scheduler instance.

        Specified by:
        selectInstancesFiredTriggerRecords in interface DriverDelegate
        Returns:
        a List of FiredTriggerRecord objects.
        Throws:
        java.sql.SQLException
      • selectFiredTriggerInstanceNames

        public java.util.Set<java.lang.String> selectFiredTriggerInstanceNames​(java.sql.Connection conn)
                                                                        throws java.sql.SQLException

        Select the distinct instance names of all fired-trigger records.

        This is useful when trying to identify orphaned fired triggers (a fired trigger without a scheduler state record.)

        Specified by:
        selectFiredTriggerInstanceNames in interface DriverDelegate
        Returns:
        a Set of String objects.
        Throws:
        java.sql.SQLException
      • deleteFiredTrigger

        public int deleteFiredTrigger​(java.sql.Connection conn,
                                      java.lang.String entryId)
                               throws java.sql.SQLException

        Delete a fired trigger.

        Specified by:
        deleteFiredTrigger in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        entryId - the fired trigger entry to delete
        Returns:
        the number of rows deleted
        Throws:
        java.sql.SQLException
      • selectJobExecutionCount

        public int selectJobExecutionCount​(java.sql.Connection conn,
                                           JobKey jobKey)
                                    throws java.sql.SQLException
        Description copied from interface: DriverDelegate

        Get the number instances of the identified job currently executing.

        Specified by:
        selectJobExecutionCount in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the number instances of the identified job currently executing.
        Throws:
        java.sql.SQLException
      • insertSchedulerState

        public int insertSchedulerState​(java.sql.Connection conn,
                                        java.lang.String theInstanceId,
                                        long checkInTime,
                                        long interval)
                                 throws java.sql.SQLException
        Description copied from interface: DriverDelegate

        Insert a scheduler-instance state record.

        Specified by:
        insertSchedulerState in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the number of inserted rows.
        Throws:
        java.sql.SQLException
      • deleteSchedulerState

        public int deleteSchedulerState​(java.sql.Connection conn,
                                        java.lang.String theInstanceId)
                                 throws java.sql.SQLException
        Description copied from interface: DriverDelegate

        Delete a scheduler-instance state record.

        Specified by:
        deleteSchedulerState in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the number of deleted rows.
        Throws:
        java.sql.SQLException
      • updateSchedulerState

        public int updateSchedulerState​(java.sql.Connection conn,
                                        java.lang.String theInstanceId,
                                        long checkInTime)
                                 throws java.sql.SQLException
        Description copied from interface: DriverDelegate

        Update a scheduler-instance state record.

        Specified by:
        updateSchedulerState in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Returns:
        the number of updated rows.
        Throws:
        java.sql.SQLException
      • selectSchedulerStateRecords

        public java.util.List<SchedulerStateRecord> selectSchedulerStateRecords​(java.sql.Connection conn,
                                                                                java.lang.String theInstanceId)
                                                                         throws java.sql.SQLException
        Description copied from interface: DriverDelegate

        A List of all current SchedulerStateRecords.

        If instanceId is not null, then only the record for the identified instance will be returned.

        Specified by:
        selectSchedulerStateRecords in interface DriverDelegate
        Parameters:
        conn - the DB Connection
        Throws:
        java.sql.SQLException
      • rtp

        protected final java.lang.String rtp​(java.lang.String query)

        Replace the table prefix in a query by replacing any occurrences of "{0}" with the table prefix.

        Parameters:
        query - the unsubstitued query
        Returns:
        the query, with proper table prefix substituted
      • getSchedulerNameLiteral

        protected java.lang.String getSchedulerNameLiteral()
      • serializeObject

        protected java.io.ByteArrayOutputStream serializeObject​(java.lang.Object obj)
                                                         throws java.io.IOException

        Create a serialized java.util.ByteArrayOutputStream version of an Object.

        Parameters:
        obj - the object to serialize
        Returns:
        the serialized ByteArrayOutputStream
        Throws:
        java.io.IOException - if serialization causes an error
      • serializeJobData

        protected java.io.ByteArrayOutputStream serializeJobData​(JobDataMap data)
                                                          throws java.io.IOException

        Remove the transient data from and then create a serialized java.util.ByteArrayOutputStream version of a JobDataMap.

        Parameters:
        data - the JobDataMap to serialize
        Returns:
        the serialized ByteArrayOutputStream
        Throws:
        java.io.IOException - if serialization causes an error
      • getKeyOfNonSerializableValue

        protected java.lang.Object getKeyOfNonSerializableValue​(java.util.Map<?,​?> data)
        Find the key of the first non-serializable value in the given Map.
        Returns:
        The key of the first non-serializable value in the given Map or null if all values are serializable.
      • convertFromProperty

        protected java.util.Map<?,​?> convertFromProperty​(java.util.Properties properties)
                                                        throws java.io.IOException
        convert the JobDataMap into a list of properties
        Throws:
        java.io.IOException
      • convertToProperty

        protected java.util.Properties convertToProperty​(java.util.Map<?,​?> data)
                                                  throws java.io.IOException
        convert the JobDataMap into a list of properties
        Throws:
        java.io.IOException
      • getObjectFromBlob

        protected java.lang.Object getObjectFromBlob​(java.sql.ResultSet rs,
                                                     java.lang.String colName)
                                              throws java.lang.ClassNotFoundException,
                                                     java.io.IOException,
                                                     java.sql.SQLException

        This method should be overridden by any delegate subclasses that need special handling for BLOBs. The default implementation uses standard JDBC java.sql.Blob operations.

        Parameters:
        rs - the result set, already queued to the correct row
        colName - the column name for the BLOB
        Returns:
        the deserialized Object from the ResultSet BLOB
        Throws:
        java.lang.ClassNotFoundException - if a class found during deserialization cannot be found
        java.io.IOException - if deserialization causes an error
        java.sql.SQLException
      • getJobDataFromBlob

        protected java.lang.Object getJobDataFromBlob​(java.sql.ResultSet rs,
                                                      java.lang.String colName)
                                               throws java.lang.ClassNotFoundException,
                                                      java.io.IOException,
                                                      java.sql.SQLException

        This method should be overridden by any delegate subclasses that need special handling for BLOBs for job details. The default implementation uses standard JDBC java.sql.Blob operations.

        Parameters:
        rs - the result set, already queued to the correct row
        colName - the column name for the BLOB
        Returns:
        the deserialized Object from the ResultSet BLOB
        Throws:
        java.lang.ClassNotFoundException - if a class found during deserialization cannot be found
        java.io.IOException - if deserialization causes an error
        java.sql.SQLException
      • closeResultSet

        protected static void closeResultSet​(java.sql.ResultSet rs)
        Cleanup helper method that closes the given ResultSet while ignoring any errors.
      • closeStatement

        protected static void closeStatement​(java.sql.Statement statement)
        Cleanup helper method that closes the given Statement while ignoring any errors.
      • setBoolean

        protected void setBoolean​(java.sql.PreparedStatement ps,
                                  int index,
                                  boolean val)
                           throws java.sql.SQLException
        Sets the designated parameter to the given Java boolean value. This just wraps PreparedStatement.setBoolean(int, boolean) by default, but it can be overloaded by subclass delegates for databases that don't explicitly support the boolean type.
        Throws:
        java.sql.SQLException
      • getBoolean

        protected boolean getBoolean​(java.sql.ResultSet rs,
                                     java.lang.String columnName)
                              throws java.sql.SQLException
        Retrieves the value of the designated column in the current row as a boolean. This just wraps ResultSet.getBoolean(java.lang.String) by default, but it can be overloaded by subclass delegates for databases that don't explicitly support the boolean type.
        Throws:
        java.sql.SQLException
      • getBoolean

        protected boolean getBoolean​(java.sql.ResultSet rs,
                                     int columnIndex)
                              throws java.sql.SQLException
        Retrieves the value of the designated column index in the current row as a boolean. This just wraps ResultSet.getBoolean(java.lang.String) by default, but it can be overloaded by subclass delegates for databases that don't explicitly support the boolean type.
        Throws:
        java.sql.SQLException
      • setBytes

        protected void setBytes​(java.sql.PreparedStatement ps,
                                int index,
                                java.io.ByteArrayOutputStream baos)
                         throws java.sql.SQLException
        Sets the designated parameter to the byte array of the given ByteArrayOutputStream. Will set parameter value to null if the ByteArrayOutputStream is null. This just wraps PreparedStatement.setBytes(int, byte[]) by default, but it can be overloaded by subclass delegates for databases that don't explicitly support storing bytes in this way.
        Throws:
        java.sql.SQLException