亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? trigger.java

?? Quartz 是個開源的作業調度框架
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:

/* 
 * 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;

import java.util.Date;
import java.util.LinkedList;


/**
 * <p>
 * The base abstract class to be extended by all <code>Trigger</code>s.
 * </p>
 * 
 * <p>
 * <code>Triggers</code> s have a name and group associated with them, which
 * should uniquely identify them within a single <code>{@link Scheduler}</code>.
 * </p>
 * 
 * <p>
 * <code>Trigger</code>s are the 'mechanism' by which <code>Job</code> s
 * are scheduled. Many <code>Trigger</code> s can point to the same <code>Job</code>,
 * but a single <code>Trigger</code> can only point to one <code>Job</code>.
 * </p>
 * 
 * <p>
 * Triggers can 'send' parameters/data to <code>Job</code>s by placing contents
 * into the <code>JobDataMap</code> on the <code>Trigger</code>.
 * </p>
 * 
 * @see SimpleTrigger
 * @see CronTrigger
 * @see NthIncludedDayTrigger
 * @see TriggerUtils
 * @see JobDataMap
 * @see JobExecutionContext
 * 
 * @author James House
 * @author Sharada Jambula
 */
public abstract class Trigger implements java.io.Serializable, Cloneable,
        Comparable {

    private static final long serialVersionUID = -3904243490805975570L;
    
    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * 
     * Constants.
     * 
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */

    /**
     * <p>
     * Instructs the <code>{@link Scheduler}</code> that the <code>{@link Trigger}</code>
     * has no further instructions.
     * </p>
     */
    public static final int INSTRUCTION_NOOP = 0;

    /**
     * <p>
     * Instructs the <code>{@link Scheduler}</code> that the <code>{@link Trigger}</code>
     * wants the <code>{@link org.quartz.JobDetail}</code> to re-execute
     * immediately. If not in a 'RECOVERING' or 'FAILED_OVER' situation, the
     * execution context will be re-used (giving the <code>Job</code> the
     * abilitiy to 'see' anything placed in the context by its last execution).
     * </p>
     */
    public static final int INSTRUCTION_RE_EXECUTE_JOB = 1;

    /**
     * <p>
     * Instructs the <code>{@link Scheduler}</code> that the <code>{@link Trigger}</code>
     * should be put in the <code>COMPLETE</code> state.
     * </p>
     */
    public static final int INSTRUCTION_SET_TRIGGER_COMPLETE = 2;

    /**
     * <p>
     * Instructs the <code>{@link Scheduler}</code> that the <code>{@link Trigger}</code>
     * wants itself deleted.
     * </p>
     */
    public static final int INSTRUCTION_DELETE_TRIGGER = 3;

    /**
     * <p>
     * Instructs the <code>{@link Scheduler}</code> that all <code>Trigger</code>
     * s referencing the same <code>{@link org.quartz.JobDetail}</code> as
     * this one should be put in the <code>COMPLETE</code> state.
     * </p>
     */
    public static final int INSTRUCTION_SET_ALL_JOB_TRIGGERS_COMPLETE = 4;

    /**
     * <p>
     * Instructs the <code>{@link Scheduler}</code> that all <code>Trigger</code>
     * s referencing the same <code>{@link org.quartz.JobDetail}</code> as
     * this one should be put in the <code>ERROR</code> state.
     * </p>
     */
    public static final int INSTRUCTION_SET_TRIGGER_ERROR = 5;

    /**
     * <p>
     * Instructs the <code>{@link Scheduler}</code> that the <code>Trigger</code>
     * should be put in the <code>ERROR</code> state.
     * </p>
     */
    public static final int INSTRUCTION_SET_ALL_JOB_TRIGGERS_ERROR = 6;

    /**
     * <p>
     * Instructs the <code>{@link Scheduler}</code> that upon a mis-fire
     * situation, the <code>updateAfterMisfire()</code> method will be called
     * on the <code>Trigger</code> to determine the mis-fire instruction.
     * </p>
     * 
     * <p>
     * In order to see if this instruction fits your needs, you should look at
     * the documentation for the <code>getSmartMisfirePolicy()</code> method
     * on the particular <code>Trigger</code> implementation you are using.
     * </p>
     */
    public static final int MISFIRE_INSTRUCTION_SMART_POLICY = 0;

    /**
     * <p>
     * Indicates that the <code>Trigger</code> is in the "normal" state.
     * </p>
     */
    public final static int STATE_NORMAL = 0;

    /**
     * <p>
     * Indicates that the <code>Trigger</code> is in the "paused" state.
     * </p>
     */
    public final static int STATE_PAUSED = 1;

    /**
     * <p>
     * Indicates that the <code>Trigger</code> is in the "complete" state.
     * </p>
     * 
     * <p>
     * "Complete" indicates that the trigger has not remaining fire-times in
     * its schedule.
     * </p>
     */
    public final static int STATE_COMPLETE = 2;

    /**
     * <p>
     * Indicates that the <code>Trigger</code> is in the "error" state.
     * </p>
     * 
     * <p>
     * A <code>Trigger</code> arrives at the error state when the scheduler
     * attempts to fire it, but cannot due to an error creating and executing
     * its related job. Often this is due to the <code>Job</code>'s
     * class not existing in the classpath.
     * </p>
     * 
     * <p>
     * When the trigger is in the error state, the scheduler will make no
     * attempts to fire it.
     * </p>
     */
    public final static int STATE_ERROR = 3;


    /**
     * <p>
     * Indicates that the <code>Trigger</code> is in the "blocked" state.
     * </p>
     * 
     * <p>
     * A <code>Trigger</code> arrives at the blocked state when the job that
     * it is associated with is a <code>StatefulJob</code> and it is 
     * currently executing.
     * </p>
     *
     * @see StatefulJob 
     */
    public final static int STATE_BLOCKED = 4;

    /**
     * <p>
     * Indicates that the <code>Trigger</code> does not exist.
     * </p>
     */
    public final static int STATE_NONE = -1;

    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * 
     * Data members.
     * 
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */

    private String name;

    private String group = Scheduler.DEFAULT_GROUP;

    private String jobName;

    private String jobGroup = Scheduler.DEFAULT_GROUP;

    private String description;
    
    private JobDataMap jobDataMap;

    private boolean volatility = false;

    private String calendarName = null;

    private String fireInstanceId = null;

    private int misfireInstruction = MISFIRE_INSTRUCTION_SMART_POLICY;

    private LinkedList triggerListeners = new LinkedList();

    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * 
     * Constructors.
     * 
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */

    /**
     * <p>
     * Create a <code>Trigger</code> with no specified name, group, or <code>{@link org.quartz.JobDetail}</code>.
     * </p>
     * 
     * <p>
     * Note that the {@link #setName(String)},{@link #setGroup(String)}and
     * the {@link #setJobName(String)}and {@link #setJobGroup(String)}methods
     * must be called before the <code>Trigger</code> can be placed into a
     * {@link Scheduler}.
     * </p>
     */
    public Trigger() {
        // do nothing...
    }

    /**
     * <p>
     * Create a <code>Trigger</code> with the given name, and group.
     * </p>
     * 
     * <p>
     * Note that the {@link #setJobName(String)}and
     * {@link #setJobGroup(String)}methods must be called before the <code>Trigger</code>
     * can be placed into a {@link Scheduler}.
     * </p>
     * 
     * @param group if <code>null</code>, Scheduler.DEFAULT_GROUP will be used.
     * 
     * @exception IllegalArgumentException
     *              if name is null or empty, or the group is an empty string.
     */
    public Trigger(String name, String group) {
        setName(name);
        setGroup(group);
    }

    /**
     * <p>
     * Create a <code>Trigger</code> with the given name, and group.
     * </p>
     * 
     * @param group if <code>null</code>, Scheduler.DEFAULT_GROUP will be used.
     * 
     * @exception IllegalArgumentException
     *              if name is null or empty, or the group is an empty string.
     */
    public Trigger(String name, String group, String jobName, String jobGroup) {
        setName(name);
        setGroup(group);
        setJobName(jobName);
        setJobGroup(jobGroup);
    }

    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * 
     * Interface.
     * 
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */

    /**
     * <p>
     * Get the name of this <code>Trigger</code>.
     * </p>
     */
    public String getName() {
        return name;
    }

    /**
     * <p>
     * Set the name of this <code>Trigger</code>.
     * </p>
     * 
     * @exception IllegalArgumentException
     *              if name is null or empty.
     */
    public void setName(String name) {
        if (name == null || name.trim().length() == 0)
                throw new IllegalArgumentException(
                        "Trigger name cannot be null or empty.");

        this.name = name;
    }

    /**
     * <p>
     * Get the group of this <code>Trigger</code>.
     * </p>
     */
    public String getGroup() {
        return group;
    }

    /**
     * <p>
     * Set the name of this <code>Trigger</code>. 
     * </p>
     * 
     * @param group if <code>null</code>, Scheduler.DEFAULT_GROUP will be used.
     * 
     * @exception IllegalArgumentException
     *              if group is an empty string.
     */
    public void setGroup(String group) {
        if (group != null && group.trim().length() == 0)
                throw new IllegalArgumentException(
                        "Group name cannot be an empty string.");

        if(group == null)
            group = Scheduler.DEFAULT_GROUP;
        
        this.group = group;
    }

    /**
     * <p>
     * Get the name of the associated <code>{@link org.quartz.JobDetail}</code>.
     * </p>
     */
    public String getJobName() {
        return jobName;
    }

    /**
     * <p>
     * Set the name of the associated <code>{@link org.quartz.JobDetail}</code>.
     * </p>
     * 
     * @exception IllegalArgumentException
     *              if jobName is null or empty.
     */
    public void setJobName(String jobName) {
        if (jobName == null || jobName.trim().length() == 0)
                throw new IllegalArgumentException(
                        "Job name cannot be null or empty.");

        this.jobName = jobName;
    }

    /**
     * <p>
     * Get the name of the associated <code>{@link org.quartz.JobDetail}</code>'s
     * group.
     * </p>
     */
    public String getJobGroup() {
        return jobGroup;
    }

    /**
     * <p>
     * Set the name of the associated <code>{@link org.quartz.JobDetail}</code>'s
     * group.
     * </p>
     * 
     * @param group if <code>null</code>, Scheduler.DEFAULT_GROUP will be used.
     * 
     * @exception IllegalArgumentException
     *              if group is an empty string.
     */
    public void setJobGroup(String jobGroup) {
        if (jobGroup != null && jobGroup.trim().length() == 0)
                throw new IllegalArgumentException(
                        "Group name cannot be null or empty.");

        if(jobGroup == null)
            jobGroup = Scheduler.DEFAULT_GROUP;
        
        this.jobGroup = jobGroup;
    }

    /**
     * <p>
     * Returns the 'full name' of the <code>Trigger</code> in the format
     * "group.name".
     * </p>
     */
    public String getFullName() {
        return group + "." + name;
    }

    /**
     * <p>
     * Returns the 'full name' of the <code>Job</code> that the <code>Trigger</code>
     * points to, in the format "group.name".
     * </p>
     */
    public String getFullJobName() {
        return jobGroup + "." + jobName;
    }

    /**
     * <p>
     * Return the description given to the <code>Trigger</code> instance by
     * its creator (if any).
     * </p>
     * 
     * @return null if no description was set.
     */
    public String getDescription() {
        return description;
    }

    /**
     * <p>
     * Set a description for the <code>Trigger</code> instance - may be
     * useful for remembering/displaying the purpose of the trigger, though the
     * description has no meaning to Quartz.
     * </p>
     */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
偷拍日韩校园综合在线| 国产在线精品视频| 久久精品视频免费| 欧美性猛片xxxx免费看久爱| 国产曰批免费观看久久久| 亚洲激情成人在线| 欧美精品一区二区久久婷婷| 欧美综合一区二区三区| 国产成人av一区二区三区在线| 亚洲一二三四在线| 国产精品久久久久一区二区三区共| 欧美久久一区二区| 91美女在线看| 成人永久免费视频| 国内精品在线播放| 日韩av在线播放中文字幕| 亚洲精品中文字幕在线观看| 国产午夜精品一区二区三区四区| 欧美精选一区二区| 色网站国产精品| 不卡的av网站| 国产九色精品成人porny| 日韩激情中文字幕| 亚洲综合区在线| 亚洲精品免费在线观看| 国产精品乱人伦中文| 精品理论电影在线观看 | 色94色欧美sute亚洲线路一久| 激情综合色丁香一区二区| 日韩高清一区在线| 亚洲bt欧美bt精品| 性欧美疯狂xxxxbbbb| 亚洲国产成人porn| 午夜一区二区三区在线观看| 依依成人精品视频| 一区二区三区在线看| 国产精品国产馆在线真实露脸| 久久美女艺术照精彩视频福利播放| 91麻豆精品国产91久久久更新时间| 欧美亚日韩国产aⅴ精品中极品| 色视频一区二区| 99国产欧美另类久久久精品| 99精品视频在线观看免费| 成人av在线资源网| 99精品偷自拍| 欧美在线观看一区| 欧美三级视频在线观看| 欧亚洲嫩模精品一区三区| 在线看国产日韩| 欧美日韩精品一区二区在线播放| 欧美性猛片aaaaaaa做受| 欧美日韩第一区日日骚| 51精品秘密在线观看| 欧美一区二区三区免费在线看 | 日本不卡的三区四区五区| 免费高清在线一区| 国产精品综合av一区二区国产馆| 国产盗摄一区二区三区| 成人av影视在线观看| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美吻胸吃奶大尺度电影| 欧美色图免费看| 26uuu亚洲综合色| 欧美高清在线一区二区| 亚洲欧美激情小说另类| 午夜精品久久久久久久99樱桃| 久久成人羞羞网站| 成人av在线影院| 欧美三区免费完整视频在线观看| 日韩欧美激情在线| 国产精品久久99| 亚洲国产一区二区三区| 麻豆精品一区二区| 成人禁用看黄a在线| 欧美三级视频在线| 久久精品亚洲乱码伦伦中文| 成人免费一区二区三区在线观看| 亚洲午夜精品久久久久久久久| 麻豆91在线看| 99re热视频精品| 日韩欧美www| 水蜜桃久久夜色精品一区的特点| 久久精品夜色噜噜亚洲aⅴ| 国产精品第五页| 免费高清成人在线| 99re热视频这里只精品| 日韩欧美二区三区| 亚洲男人的天堂在线aⅴ视频| 日本免费在线视频不卡一不卡二| 国产成人综合亚洲网站| 欧美三级乱人伦电影| 国产欧美一区二区三区鸳鸯浴| 亚洲香肠在线观看| 国产成人免费视频一区| 337p亚洲精品色噜噜噜| 综合激情成人伊人| 韩国欧美国产1区| 91成人在线精品| 欧美国产日韩亚洲一区| 蜜臀a∨国产成人精品| 91免费版在线看| 国产欧美精品一区二区色综合| 亚洲国产精品一区二区久久| 国产大陆精品国产| 欧美一区二区大片| 亚洲一区精品在线| 99久久99久久久精品齐齐| 久久午夜羞羞影院免费观看| 午夜精品影院在线观看| 在线免费观看日本一区| 国产精品国产三级国产有无不卡| 久久精品国产第一区二区三区| 欧洲一区在线观看| 国产精品进线69影院| 国产一区二区网址| 欧美xxxxxxxx| 日韩1区2区3区| 欧美日韩一区二区在线观看视频| 中文字幕一区二区三| 国产91在线观看丝袜| 国产日韩亚洲欧美综合| 久久99精品国产.久久久久| 欧美日韩www| 亚洲一区二区黄色| 欧美亚男人的天堂| 亚洲一区二区三区美女| 91丝袜国产在线播放| 国产精品美女一区二区三区| 国产乱码精品一区二区三| 精品理论电影在线观看| 六月丁香综合在线视频| 欧美一级欧美一级在线播放| 香蕉加勒比综合久久| 欧美日韩一区二区三区四区| 夜夜嗨av一区二区三区网页| 91亚洲国产成人精品一区二三| 国产精品美女视频| 9i在线看片成人免费| 一色桃子久久精品亚洲| 91在线云播放| 夜色激情一区二区| 欧洲av一区二区嗯嗯嗯啊| 香港成人在线视频| 欧美日韩激情一区| 日本欧美肥老太交大片| 精品国产麻豆免费人成网站| 激情综合亚洲精品| 中文在线资源观看网站视频免费不卡| 国产电影一区二区三区| 日韩一区欧美一区| 欧美三级中文字幕在线观看| 日韩中文字幕区一区有砖一区| 这里只有精品99re| 国产精品亚洲午夜一区二区三区| 久久精品亚洲精品国产欧美 | 中文字幕欧美日本乱码一线二线| 波波电影院一区二区三区| 中文字幕电影一区| 91香蕉视频在线| 亚洲成av人影院| 亚洲精品一区二区三区影院 | 日韩免费成人网| 国内精品久久久久影院一蜜桃| 国产午夜精品一区二区三区四区| 不卡的av网站| 婷婷成人综合网| 久久久精品黄色| 91精品福利视频| 狠狠久久亚洲欧美| 亚洲人妖av一区二区| 欧美日韩国产美| 风间由美性色一区二区三区| 亚洲综合999| 久久久亚洲午夜电影| 91麻豆.com| 老司机午夜精品| 综合激情成人伊人| 91精品国产综合久久精品性色| 国产东北露脸精品视频| 亚洲午夜一区二区| 久久久久久久久久看片| 91成人网在线| 国产aⅴ综合色| 亚洲成人av电影在线| 久久久电影一区二区三区| 欧美亚洲动漫制服丝袜| 国产传媒日韩欧美成人| 亚洲高清久久久| 国产精品人人做人人爽人人添| 欧美日韩另类国产亚洲欧美一级| 国产精品1区2区| 婷婷成人综合网| 中文字幕字幕中文在线中不卡视频| 欧美一区二区三区在| 99久久久精品| 国产成人在线免费| 蜜臀av一级做a爰片久久| 亚洲精品成人a在线观看| 国产性做久久久久久| 欧美一区二区三区精品|