📄 driverdelegate.java
字号:
/*
* Copyright 2004-2005 OpenSymphony
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
*/
/*
* Previously Copyright (c) 2001-2004 James House
*/
package org.quartz.impl.jdbcjobstore;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Set;
import org.quartz.Calendar;
import org.quartz.CronTrigger;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.spi.ClassLoadHelper;
import org.quartz.utils.Key;
import org.quartz.utils.TriggerStatus;
/**
* <p>
* This is the base interface for all driver delegate classes.
* </p>
*
* <p>
* This interface is very similar to the <code>{@link
* org.quartz.spi.JobStore}</code>
* interface except each method has an additional <code>{@link java.sql.Connection}</code>
* parameter.
* </p>
*
* <p>
* Unless a database driver has some <strong>extremely-DB-specific</strong>
* requirements, any DriverDelegate implementation classes should extend the
* <code>{@link org.quartz.impl.jdbcjobstore.StdJDBCDelegate}</code> class.
* </p>
*
* @author <a href="mailto:jeff@binaryfeed.org">Jeffrey Wescott</a>
* @author James House
*/
interface DriverDelegate {
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
* Interface.
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
//---------------------------------------------------------------------------
// startup / recovery
//---------------------------------------------------------------------------
/**
* <p>
* Update all triggers having one of the two given states, to the given new
* state.
* </p>
*
* @param conn
* the DB Connection
* @param newState
* the new state for the triggers
* @param oldState1
* the first old state to update
* @param oldState2
* the second old state to update
* @return number of rows updated
*/
int updateTriggerStatesFromOtherStates(Connection conn,
String newState, String oldState1, String oldState2)
throws SQLException;
/**
* <p>
* Get the names of all of the triggers that have misfired - according to
* the given timestamp.
* </p>
*
* @param conn
* the DB Connection
* @return an array of <code>{@link
* org.quartz.utils.Key}</code> objects
*/
Key[] selectMisfiredTriggers(Connection conn, long ts)
throws SQLException;
/**
* <p>
* Get the names of all of the triggers in the given state that have
* misfired - according to the given timestamp.
* </p>
*
* @param conn
* the DB Connection
* @return an array of <code>{@link
* org.quartz.utils.Key}</code> objects
*/
Key[] selectMisfiredTriggersInState(Connection conn, String state,
long ts) throws SQLException;
/**
* <p>
* Get the names of all of the triggers in the given states that have
* misfired - according to the given timestamp. No more than count will
* be returned.
* </p>
*
* @param conn the DB Connection
* @param count the most misfired triggers to return, negative for all
* @param resultList Output parameter. A List of
* <code>{@link org.quartz.utils.Key}</code> objects. Must not be null.
*
* @return Whether there are more misfired triggers left to find beyond
* the given count.
*/
boolean selectMisfiredTriggersInStates(Connection conn, String state1, String state2,
long ts, int count, List resultList) throws SQLException;
/**
* <p>
* Get the number of triggers in the given states that have
* misfired - according to the given timestamp.
* </p>
*
* @param conn the DB Connection
*/
int countMisfiredTriggersInStates(
Connection conn, String state1, String state2, long ts) throws SQLException;
/**
* <p>
* Get the names of all of the triggers in the given group and state that
* have misfired - according to the given timestamp.
* </p>
*
* @param conn
* the DB Connection
* @return an array of <code>{@link
* org.quartz.utils.Key}</code> objects
*/
Key[] selectMisfiredTriggersInGroupInState(Connection conn,
String groupName, String state, long ts) throws SQLException;
/**
* <p>
* 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 <code>{@link
* org.quartz.Scheduler}.DEFAULT_RECOVERY_GROUP</code>
* trigger group.
* </p>
*
* <p>
* In order to preserve the ordering of the triggers, the fire time will be
* set from the <code>COL_FIRED_TIME</code> column in the <code>TABLE_FIRED_TRIGGERS</code>
* table. The caller is responsible for calling <code>computeFirstFireTime</code>
* on each returned trigger. It is also up to the caller to insert the
* returned triggers to ensure that they are fired.
* </p>
*
* @param conn
* the DB Connection
* @return an array of <code>{@link org.quartz.Trigger}</code> objects
*/
Trigger[] selectTriggersForRecoveringJobs(Connection conn)
throws SQLException, IOException, ClassNotFoundException;
/**
* <p>
* Delete all fired triggers.
* </p>
*
* @param conn
* the DB Connection
* @return the number of rows deleted
*/
int deleteFiredTriggers(Connection conn) throws SQLException;
/**
* <p>
* Delete all fired triggers of the given instance.
* </p>
*
* @param conn
* the DB Connection
* @return the number of rows deleted
*/
int deleteFiredTriggers(Connection conn, String instanceId)
throws SQLException;
/**
* <p>
* Delete all volatile fired triggers.
* </p>
*
* @param conn
* the DB Connection
* @return the number of rows deleted
*/
int deleteVolatileFiredTriggers(Connection conn) throws SQLException;
/**
* <p>
* Get the names of all of the triggers that are volatile.
* </p>
*
* @param conn
* the DB Connection
* @return an array of <code>{@link
* org.quartz.utils.Key}</code> objects
*/
Key[] selectVolatileTriggers(Connection conn) throws SQLException;
/**
* <p>
* Get the names of all of the jobs that are volatile.
* </p>
*
* @param conn
* the DB Connection
* @return an array of <code>{@link
* org.quartz.utils.Key}</code> objects
*/
Key[] selectVolatileJobs(Connection conn) throws SQLException;
//---------------------------------------------------------------------------
// jobs
//---------------------------------------------------------------------------
/**
* <p>
* Insert the job detail record.
* </p>
*
* @param conn
* the DB Connection
* @param job
* the job to insert
* @return number of rows inserted
* @throws IOException
* if there were problems serializing the JobDataMap
*/
int insertJobDetail(Connection conn, JobDetail job)
throws IOException, SQLException;
/**
* <p>
* Update the job detail record.
* </p>
*
* @param conn
* the DB Connection
* @param job
* the job to update
* @return number of rows updated
* @throws IOException
* if there were problems serializing the JobDataMap
*/
int updateJobDetail(Connection conn, JobDetail job)
throws IOException, SQLException;
/**
* <p>
* Get the names of all of the triggers associated with the given job.
* </p>
*
* @param conn
* the DB Connection
* @param jobName
* the job name
* @param groupName
* the job group
* @return an array of <code>{@link
* org.quartz.utils.Key}</code> objects
*/
Key[] selectTriggerNamesForJob(Connection conn, String jobName,
String groupName) throws SQLException;
/**
* <p>
* Delete all job listeners for the given job.
* </p>
*
* @param conn
* the DB Connection
* @param jobName
* the name of the job
* @param groupName
* the group containing the job
* @return the number of rows deleted
*/
int deleteJobListeners(Connection conn, String jobName,
String groupName) throws SQLException;
/**
* <p>
* Delete the job detail record for the given job.
* </p>
*
* @param conn
* the DB Connection
* @param jobName
* the name of the job
* @param groupName
* the group containing the job
* @return the number of rows deleted
*/
int deleteJobDetail(Connection conn, String jobName, String groupName)
throws SQLException;
/**
* <p>
* Check whether or not the given job is stateful.
* </p>
*
* @param conn
* the DB Connection
* @param jobName
* the name of the job
* @param groupName
* the group containing the job
* @return true if the job exists and is stateful, false otherwise
*/
boolean isJobStateful(Connection conn, String jobName,
String groupName) throws SQLException;
/**
* <p>
* Check whether or not the given job exists.
* </p>
*
* @param conn
* the DB Connection
* @param jobName
* the name of the job
* @param groupName
* the group containing the job
* @return true if the job exists, false otherwise
*/
boolean jobExists(Connection conn, String jobName, String groupName)
throws SQLException;
/**
* <p>
* Update the job data map for the given job.
* </p>
*
* @param conn
* the DB Connection
* @param job
* the job to update
* @return the number of rows updated
* @throws IOException
* if there were problems serializing the JobDataMap
*/
int updateJobData(Connection conn, JobDetail job)
throws IOException, SQLException;
/**
* <p>
* Associate a listener with a job.
* </p>
*
* @param conn
* the DB Connection
* @param job
* the job to associate with the listener
* @param listener
* the listener to insert
* @return the number of rows inserted
*/
int insertJobListener(Connection conn, JobDetail job, String listener)
throws SQLException;
/**
* <p>
* Get all of the listeners for a given job.
* </p>
*
* @param conn
* the DB Connection
* @param jobName
* the job name whose listeners are wanted
* @param groupName
* the group containing the job
* @return array of <code>String</code> listener names
*/
String[] selectJobListeners(Connection conn, String jobName,
String groupName) throws SQLException;
/**
* <p>
* Select the JobDetail object for a given job name / group name.
* </p>
*
* @param conn
* the DB Connection
* @param jobName
* the job name whose listeners are wanted
* @param groupName
* the group containing the job
* @return the populated JobDetail object
* @throws ClassNotFoundException
* if a class found during deserialization cannot be found or if
* the job class could not be found
* @throws IOException
* if deserialization causes an error
*/
JobDetail selectJobDetail(Connection conn, String jobName,
String groupName, ClassLoadHelper loadHelper)
throws ClassNotFoundException, IOException, SQLException;
/**
* <p>
* Select the total number of jobs stored.
* </p>
*
* @param conn
* the DB Connection
* @return the total number of jobs stored
*/
int selectNumJobs(Connection conn) throws SQLException;
/**
* <p>
* Select all of the job group names that are stored.
* </p>
*
* @param conn
* the DB Connection
* @return an array of <code>String</code> group names
*/
String[] selectJobGroups(Connection conn) throws SQLException;
/**
* <p>
* Select all of the jobs contained in a given group.
* </p>
*
* @param conn
* the DB Connection
* @param groupName
* the group containing the jobs
* @return an array of <code>String</code> job names
*/
String[] selectJobsInGroup(Connection conn, String groupName)
throws SQLException;
//---------------------------------------------------------------------------
// triggers
//---------------------------------------------------------------------------
/**
* <p>
* Insert the base trigger data.
* </p>
*
* @param conn
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -