⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crontrigger.java

📁 Quartz is a full-featured, open source job scheduling system that can be integrated with, or used al
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
     * <p>     * If null, the start-time will also be set to the current time, the time     * zone will be set the the system's default.     * </p>     *      * @param startTime     *          A <code>Date</code> set to the time for the <code>Trigger</code>     *          to fire.     * @param endTime     *          A <code>Date</code> set to the time for the <code>Trigger</code>     *          to quit repeat firing.     */    public CronTrigger(String name, String group, String jobName,            String jobGroup, Date startTime, Date endTime, String cronExpression)        throws ParseException {        super(name, group, jobName, jobGroup);        setCronExpression(cronExpression);        if (startTime == null) {            startTime = new Date();        }        setStartTime(startTime);        if (endTime != null) {            setEndTime(endTime);        }        setTimeZone(TimeZone.getDefault());    }    /**     * <p>     * Create a <code>CronTrigger</code> with fire time dictated by the     * <code>cronExpression</code> resolved with respect to the specified     * <code>timeZone</code> occuring from the <code>startTime</code> until     * the given <code>endTime</code>.     * </p>     *      * <p>     * If null, the start-time will also be set to the current time. If null,     * the time zone will be set to the system's default.     * </p>     *      * @param name     *          of the <code>Trigger</code>     * @param group     *          of the <code>Trigger</code>     * @param jobName     *          name of the <code>{@link org.quartz.JobDetail}</code>     *          executed on firetime     * @param jobGroup     *          group of the <code>{@link org.quartz.JobDetail}</code>     *          executed on firetime     * @param startTime     *          A <code>Date</code> set to the earliest time for the <code>Trigger</code>     *          to start firing.     * @param endTime     *          A <code>Date</code> set to the time for the <code>Trigger</code>     *          to quit repeat firing.     * @param cronExpression     *          A cron expression dictating the firing sequence of the <code>Trigger</code>     * @param timeZone     *          Specifies for which time zone the <code>cronExpression</code>     *          should be interprted, i.e. the expression 0 0 10 * * ?, is     *          resolved to 10:00 am in this time zone.     * @throws ParseException     *           if the <code>cronExpression</code> is invalid.     */    public CronTrigger(String name, String group, String jobName,            String jobGroup, Date startTime, Date endTime,            String cronExpression, TimeZone timeZone) throws ParseException {        super(name, group, jobName, jobGroup);        setCronExpression(cronExpression);        if (startTime == null) {            startTime = new Date();        }        setStartTime(startTime);        if (endTime != null) {            setEndTime(endTime);        }        if (timeZone == null) {            setTimeZone(TimeZone.getDefault());        } else {            setTimeZone(timeZone);        }    }    /*     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     *      * Interface.     *      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     */        public Object clone() {        CronTrigger copy = (CronTrigger) super.clone();        copy.setCronExpression((CronExpression)cronEx.clone());        return copy;    }    public void setCronExpression(String cronExpression) throws ParseException {        this.cronEx = new CronExpression(cronExpression);        this.cronEx.setTimeZone(getTimeZone());    }    public String getCronExpression() {        return cronEx == null ? null : cronEx.getCronExpression();    }    public void setCronExpression(CronExpression cronExpression) {        this.cronEx = cronExpression;        this.timeZone = cronExpression.getTimeZone();    }        /**     * <p>     * Get the time at which the <code>CronTrigger</code> should occur.     * </p>     */    public Date getStartTime() {        return this.startTime;    }    public void setStartTime(Date startTime) {        if (startTime == null) {            throw new IllegalArgumentException("Start time cannot be null");        }        Date eTime = getEndTime();        if (eTime != null && startTime != null && eTime.before(startTime)) {            throw new IllegalArgumentException(                "End time cannot be before start time");        }                // round off millisecond...        // Note timeZone is not needed here as parameter for        // Calendar.getInstance(),        // since time zone is implicit when using a Date in the setTime method.        Calendar cl = Calendar.getInstance();        cl.setTime(startTime);        cl.set(Calendar.MILLISECOND, 0);        this.startTime = cl.getTime();    }    /**     * <p>     * Get the time at which the <code>CronTrigger</code> should quit     * repeating - even if repeastCount isn't yet satisfied.     * </p>     *      * @see #getFinalFireTime()     */    public Date getEndTime() {        return this.endTime;    }    public void setEndTime(Date endTime) {        Date sTime = getStartTime();        if (sTime != null && endTime != null && sTime.after(endTime)) {            throw new IllegalArgumentException(                    "End time cannot be before start time");        }        this.endTime = endTime;    }    /**     * <p>     * Returns the next time at which the <code>CronTrigger</code> will fire.     * If the trigger will not fire again, <code>null</code> will be     * returned. The value returned is not guaranteed to be valid until after     * the <code>Trigger</code> has been added to the scheduler.     * </p>     */    public Date getNextFireTime() {        return this.nextFireTime;    }    /**     * <p>     * Returns the previous time at which the <code>CronTrigger</code> will     * fire. If the trigger has not yet fired, <code>null</code> will be     * returned.     */    public Date getPreviousFireTime() {        return this.previousFireTime;    }    /**     * <p>     * Sets the next time at which the <code>CronTrigger</code> will fire.     * <b>This method should not be invoked by client code.</b>     * </p>     */    public void setNextFireTime(Date nextFireTime) {        this.nextFireTime = nextFireTime;    }    /**     * <p>     * Set the previous time at which the <code>CronTrigger</code> fired.     * </p>     *      * <p>     * <b>This method should not be invoked by client code.</b>     * </p>     */    public void setPreviousFireTime(Date previousFireTime) {        this.previousFireTime = previousFireTime;    }    /**     * <p>     * Returns the time zone for which the <code>cronExpression</code> of     * this <code>CronTrigger</code> will be resolved.     * </p>     */    public TimeZone getTimeZone() {                if(cronEx != null) {            return cronEx.getTimeZone();        }                if (timeZone == null) {            timeZone = TimeZone.getDefault();        }        return timeZone;    }    /**     * <p>     * Sets the time zone for which the <code>cronExpression</code> of this     * <code>CronTrigger</code> will be resolved.     * </p>     */    public void setTimeZone(TimeZone timeZone) {        if(cronEx != null) {            cronEx.setTimeZone(timeZone);        }        this.timeZone = timeZone;    }    /**     * <p>     * Returns the next time at which the <code>CronTrigger</code> will fire,     * after the given time. If the trigger will not fire after the given time,     * <code>null</code> will be returned.     * </p>     *      * <p>     * Note that the date returned is NOT validated against the related     * org.quartz.Calendar (if any)     * </p>     */    public Date getFireTimeAfter(Date afterTime) {        if (afterTime == null) {            afterTime = new Date();        }        if (getStartTime().after(afterTime)) {            afterTime = new Date(getStartTime().getTime() - 1000l);        }        if (getEndTime() != null && (afterTime.compareTo(getEndTime()) >= 0)) {            return null;        }                Date pot = getTimeAfter(afterTime);        if (getEndTime() != null && pot != null && pot.after(getEndTime())) {            return null;        }        return pot;    }    /**     * <p>     * NOT YET IMPLEMENTED: Returns the final time at which the      * <code>CronTrigger</code> will fire.     * </p>     *      * <p>     * Note that the return time *may* be in the past. and the date returned is     * not validated against org.quartz.calendar     * </p>     */    public Date getFinalFireTime() {        Date resultTime;        if (getEndTime() != null) {            resultTime = getTimeBefore(new Date(getEndTime().getTime() + 1000l));        } else {            resultTime = (cronEx == null) ? null : cronEx.getFinalFireTime();        }                if ((resultTime != null) && (getStartTime() != null) && (resultTime.before(getStartTime()))) {            return null;        }                 return resultTime;    }    /**     * <p>     * Determines whether or not the <code>CronTrigger</code> will occur     * again.     * </p>     */    public boolean mayFireAgain() {        return (getNextFireTime() != null);    }    protected boolean validateMisfireInstruction(int misfireInstruction) {        if (misfireInstruction < MISFIRE_INSTRUCTION_SMART_POLICY) {            return false;        }        if (misfireInstruction > MISFIRE_INSTRUCTION_DO_NOTHING) {            return false;        }        return true;    }    /**     * <p>     * Updates the <code>CronTrigger</code>'s state based on the     * MISFIRE_INSTRUCTION_XXX that was selected when the <code>CronTrigger</code>     * was created.     * </p>     *      * <p>     * If the misfire instruction is set to MISFIRE_INSTRUCTION_SMART_POLICY,     * then the following scheme will be used: <br>     * <ul>     * <li>The instruction will be interpreted as <code>MISFIRE_INSTRUCTION_FIRE_ONCE_NOW</code>     * </ul>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -