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

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

?? uicrontrigger.java

?? Quartz 是個開源的作業(yè)調度框架
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/*  * 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 org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.quartz.Scheduler;import org.quartz.SimpleTrigger;import org.quartz.Trigger;import org.quartz.CronTrigger;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;import java.util.SortedSet;import java.util.TimeZone;import java.util.TreeSet;import java.text.ParseException;/** * <p> * A concrete <code>{@link Trigger}</code> that is used to fire a <code>{@link Job}</code> * at given moments in time, defined with Unix 'cron-like' definitions. * </p> *  * <p> * What you should know about this particular trigger is that it is based on * org.quartz.CronTrigger, but the the functionality to build the sets from a * string are unused. Whereas CronTrigger would essentially deserialize by * rebuilding the TreeSets from the cronExpression, this class does not have a * cronExpression, and de/serializes the TreeSets in their entirety. This is * because the TreeSets map directly to the Struts user interface for set * selection, and no effort is made to write an interpreter to map them back * and forth between legacy UN*X cron expressions that CronTrigger uses. * </p> *  * <p> * The method I use with this trigger is to instantiate it, then put it in the * ActionForm of a Struts bean, then let Struts manipulate it directly through * BeanUtils. You are by no means required to do that, but to fully understand * the concepts here, at least until there is better documentation, you should * understand how it works within that context first so you can write the * appropriate code that Struts does for you for free. I'll try to explain that * here. * </p> *  * <p> * Struts JSP tags allow the user to use Apache BeanUtils to reference * components of beans by path. This is to say that a bean <code>Foo</code> * that has an accessor method <code>Bar getBar()</code> and given <code> * Bar</code> * has a primitive type <code>String</code> as a field named <code>splat</code>, * one can set the field to <i>"new string value"</i> as follows: * </p> * <code> * // create a new Foo with contained reference to a new Bar * Foo fooBean = new Foo(); * fooBean.setBar(new Bar()); * // set the splat string in the Bar bean from Foo * BeanUtils.setProperty(fooBean, "bar.splat", "new string value"); * </code> * <p> * In turn, Struts JSP tags use the bean addressing provided by BeanUtils to * address accessor methods within the bean graph that is rooted with the * ActionForm that is put into the Action context. * </p> * <p> * Finally, having all this allows you to put direct selection lists on the * screen of the UI, then map them directly into the UICronTrigger bean. Given * a ActionForm bean that was set up to contain a <code>UICronTrigger</code> * in a field called <code>trigger</code>, the following HTML code will * completely create your UI in Struts: * </p> *  * <code> *               <tr class="listRowUnshaded"> *   <td width="80">Date</td> *   <td align="right"> *   <html:select property="trigger.daysOfWeek" size="5" multiple="true"> *   <html:options property="trigger.daysOfWeekValues" labelProperty="trigger.daysOfWeekLabels"/> *   </html:select> *   <html:select property="trigger.daysOfMonth" size="5" multiple="true"> *   <html:options property="trigger.daysOfMonthValues" labelProperty="trigger.daysOfMonthLabels"/> *   </html:select> *   <html:select property="trigger.months" size="5" multiple="true"> *   <html:options property="trigger.monthsValues" labelProperty="trigger.monthsLabels"/> *   </html:select> *   <html:select property="trigger.years" size="5" multiple="true"> *   <html:options property="trigger.yearsValues" labelProperty="trigger.yearsLabels"/> *   </html:select> *   </td> *   </tr> *   <tr class="listRowShaded"> *   <td width="80">Time</td> *   <td colspan="2" align="right"> *   <html:select property="trigger.hours" size="5" multiple="true"> *   <html:options property="trigger.hoursValues" labelProperty="trigger.hoursLabels"/> *   </html:select> *   <html:select property="trigger.minutes" size="5" multiple="true"> *   <html:options property="trigger.minutesValues" labelProperty="trigger.minutesLabels"/> *   </html:select> *   </td> *   </tr> *   </code> * <p> * So if you don't want to use Struts, what you have to do is take the * information that was submitted on the form in the HTML select ranges, * iterate each of them, and add the values to the appropriate sets in the * fields of this class. Make sense? * </p> *  * Note that this is not as versatile as the standard CronTrigger. There are * tricks with "last day of month" and repeating sets that need to be manually * selected, and sets that can happen for date ranges much longer than we can * reasonably map with direct selection in a UI. *  * @see org.quartz.CronTrigger * @see Trigger * @see SimpleTrigger *  * @author Brian Topping * @author based on code by Sharada Jambula, James House, Mads Henderson * @deprecated */public class UICronTrigger extends Trigger {    /*     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     *      * Constants.     *      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     */    /**     * <p>     * Instructs the <code>{@link Scheduler}</code> that upon a mis-fire     * situation, the <code>{@link org.quartz.CronTrigger}</code> wants to be     * fired now by <code>Scheduler</code>.     * </p>     */    public static final int MISFIRE_INSTRUCTION_FIRE_ONCE_NOW = 1;    /**     * <p>     * Instructs the <code>{@link Scheduler}</code> that upon a mis-fire     * situation, the <code>{@link org.quartz.CronTrigger}</code> wants to     * have it's next-fire-time updated to the next time in the schedule after     * the current time, but it does not to be fired now.     * </p>     */    public static final int MISFIRE_INSTRUCTION_DO_NOTHING = 2;    /*     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     *      * Data members.     *      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     */    private static final int ALL_SPEC_INT = 99; // '*'    private static final int NO_SPEC_INT = 98; // '?'    private static final Integer ALL_SPEC = new Integer(ALL_SPEC_INT);    private static final Integer NO_SPEC = new Integer(NO_SPEC_INT);    private static Map monthMap = new HashMap(20);    private static Map dayMap = new HashMap(60);    static {        monthMap.put("JAN", new Integer(0));        monthMap.put("FEB", new Integer(1));        monthMap.put("MAR", new Integer(2));        monthMap.put("APR", new Integer(3));        monthMap.put("MAY", new Integer(4));        monthMap.put("JUN", new Integer(5));        monthMap.put("JUL", new Integer(6));        monthMap.put("AUG", new Integer(7));        monthMap.put("SEP", new Integer(8));        monthMap.put("OCT", new Integer(9));        monthMap.put("NOV", new Integer(10));        monthMap.put("DEC", new Integer(11));        dayMap.put("SUN", new Integer(1));        dayMap.put("MON", new Integer(2));        dayMap.put("TUE", new Integer(3));        dayMap.put("WED", new Integer(4));        dayMap.put("THU", new Integer(5));        dayMap.put("FRI", new Integer(6));        dayMap.put("SAT", new Integer(7));    }    private Date startTime = null;    private Date endTime = null;    private Date nextFireTime = null;    private TimeZone timeZone = null;    private Date previousFireTime = null;    private TreeSet seconds = null;    private TreeSet minutes = null;    private TreeSet hours = null;    private TreeSet daysOfMonth = null;    private TreeSet months = null;    private TreeSet daysOfWeek = null;    private TreeSet years = null;    private transient boolean lastdayOfWeek = false;    private transient int nthdayOfWeek = 0;    private transient boolean lastdayOfMonth = false;    private transient boolean calendardayOfWeek = false;    private transient boolean calendardayOfMonth = false;    /*     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     *      * Constructors.     *      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     */    public void reset() {        seconds = new TreeSet();        minutes = new TreeSet();        hours = new TreeSet();        daysOfMonth = new TreeSet();        months = new TreeSet();        daysOfWeek = new TreeSet();        years = new TreeSet();        // we always fire on the minute        seconds.add(new Integer(0));        minutes.add(ALL_SPEC);        for (int i = 0; i < 60; i++)            minutes.add(new Integer(i));        hours.add(ALL_SPEC);        for (int i = 0; i < 24; i++)            hours.add(new Integer(i));        daysOfMonth.add(ALL_SPEC);        for (int i = 1; i <= 31; i++)            daysOfMonth.add(new Integer(i));        months.add(ALL_SPEC);        for (int i = 1; i <= 12; i++)            months.add(new Integer(i));        daysOfWeek.add(NO_SPEC);        years.add(ALL_SPEC);        for (int i = 1970; i <= 2099; i++)            years.add(new Integer(i));        startTime = new Date();        setStartTime(startTime);        setTimeZone(TimeZone.getDefault());    }    /**     * <p>     * Create a <code>CronTrigger</code> with no settings.     * </p>     */    public UICronTrigger() {        super();        reset();    }    /**     * <p>     * Create a <code>CronTrigger</code> with the given name and group.     * </p>     */    public UICronTrigger(String name, String group) {        super(name, group);        reset();    }    /**     * <p>     * Create a <code>CronTrigger</code> with the given name and group, and     * associated with the identified <code>{@link Job}</code>.     * </p>     */    public UICronTrigger(String name, String group, String jobName,            String jobGroup) {        super(name, group, jobName, jobGroup);        reset();    }    /*     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     *      * Interface.     *      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     */    /**     * <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;    }    public void updateAfterMisfire(org.quartz.Calendar cal) {        int instr = getMisfireInstruction();        if (instr == MISFIRE_INSTRUCTION_SMART_POLICY)                instr = MISFIRE_INSTRUCTION_DO_NOTHING;        if (instr == MISFIRE_INSTRUCTION_DO_NOTHING) {            Date newFireTime = getFireTimeAfter(new Date());            while (newFireTime != null && cal != null                    && !cal.isTimeIncluded(newFireTime.getTime())) {                newFireTime = getFireTimeAfter(newFireTime);            }            setNextFireTime(newFireTime);        } else if (instr == MISFIRE_INSTRUCTION_FIRE_ONCE_NOW) {            setNextFireTime(new Date());        }    }    public Date getPreviousFireTime() {        return this.previousFireTime;    }    /**     * <p>     * Set the previous time at which the <code>SimpleTrigger</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>     * Sets the next time at which the <code>CronTrigger</code> will fire. If     * the trigger will not fire again, <code>null</code> will be returned.     * </p>     */    public void setNextFireTime(Date nextFireTime) {        this.nextFireTime = nextFireTime;    }    /**     * <p>     * Returns the time zone for which the <code>cronExpression</code> of

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲免费视频| 成人高清视频免费观看| 欧美乱妇15p| 日韩精品电影一区亚洲| 日韩欧美色电影| 久久精品久久99精品久久| 精品成人一区二区三区| 成人一区二区视频| 亚洲欧洲美洲综合色网| 91丨porny丨最新| 亚洲一区在线观看免费观看电影高清| 99re这里只有精品6| 亚洲一区精品在线| 日韩精品中文字幕一区二区三区| 黄页网站大全一区二区| 国产精品天美传媒| 91蝌蚪porny| 亚洲午夜免费视频| 欧美一区二区人人喊爽| 国产91丝袜在线播放九色| 亚洲人妖av一区二区| 欧美日韩国产精选| 精品亚洲成a人| 亚洲乱码日产精品bd| 91精品久久久久久久91蜜桃| 国产·精品毛片| 亚洲国产精品一区二区www在线| 欧美美女直播网站| 国产美女视频91| 亚洲欧洲中文日韩久久av乱码| 5858s免费视频成人| 国产成人av在线影院| 亚洲一区二区中文在线| 日本一区二区免费在线| 欧美日韩情趣电影| 国产成人在线电影| 亚洲愉拍自拍另类高清精品| www激情久久| 欧美一a一片一级一片| 国产原创一区二区三区| 亚洲一区二三区| 国产日韩v精品一区二区| 欧美色电影在线| 国产成人午夜电影网| 日本不卡的三区四区五区| 国产精品久久久久久久久晋中 | 亚洲成人在线网站| 国产精品卡一卡二| 欧美成人一区二区三区| 欧美在线你懂的| 成人激情免费视频| 国产一区二区0| 日韩精品欧美成人高清一区二区| 欧美—级在线免费片| 日韩一区二区三区四区| 色综合激情五月| 国产成人av福利| 精品一区二区三区在线播放| 亚洲一区二区不卡免费| 1区2区3区国产精品| 国产欧美日韩三区| 精品美女一区二区| 777xxx欧美| 欧美日韩在线播| 欧美网站一区二区| 在线观看日韩高清av| 一本色道综合亚洲| 97精品电影院| 成人精品电影在线观看| 国产精品一线二线三线| 六月丁香综合在线视频| 亚洲18女电影在线观看| 亚洲午夜激情网站| 一区二区三区四区视频精品免费 | 成人午夜视频免费看| 精品一区二区在线观看| 蜜桃在线一区二区三区| 亚洲bt欧美bt精品| 一级中文字幕一区二区| 亚洲男帅同性gay1069| 亚洲人123区| 亚洲视频你懂的| 亚洲欧美区自拍先锋| 亚洲免费av网站| ㊣最新国产の精品bt伙计久久| 欧美经典三级视频一区二区三区| 久久精品欧美一区二区三区不卡 | 成人中文字幕在线| 国产大陆亚洲精品国产| 国产麻豆精品视频| 成人免费毛片嘿嘿连载视频| 成人午夜视频在线| 精品视频资源站| 欧美精品久久久久久久久老牛影院 | 中文字幕日韩一区| 一区二区三区在线播放| 日韩精品电影一区亚洲| 精品在线你懂的| 99亚偷拍自图区亚洲| 在线观看国产91| 日韩一级精品视频在线观看| 久久免费视频色| 亚洲区小说区图片区qvod| 丝袜美腿亚洲色图| 国产精品羞羞答答xxdd| 色88888久久久久久影院野外| 欧美私人免费视频| 久久尤物电影视频在线观看| 国产精品每日更新| 视频在线观看国产精品| 国产99久久久国产精品| 欧美日韩一区二区三区四区五区 | 欧美一区二区三区在线| 欧美高清一级片在线观看| 亚洲综合在线视频| 久久狠狠亚洲综合| 日本久久电影网| 欧美va在线播放| 一区二区三区四区中文字幕| 狠狠色综合日日| 欧洲国内综合视频| 国产欧美久久久精品影院| 五月婷婷另类国产| av影院午夜一区| 欧美成人性福生活免费看| 最好看的中文字幕久久| 轻轻草成人在线| 91麻豆6部合集magnet| 精品国产青草久久久久福利| 一区二区三区日韩| 国产精品1024| 欧美成人三级电影在线| 亚洲一区电影777| www.亚洲免费av| 久久久久久久综合狠狠综合| 国产综合色产在线精品| 欧美视频中文字幕| 亚洲天堂免费看| 国产麻豆精品theporn| 91精品久久久久久久99蜜桃| 中文字幕一区二区三| 国产综合色在线| 日韩亚洲欧美一区| 偷拍亚洲欧洲综合| 91国偷自产一区二区开放时间 | 91尤物视频在线观看| 国产欧美一区二区三区在线看蜜臀 | 亚洲欧美一区二区久久| 国产精品中文字幕欧美| 日韩午夜激情av| 日本亚洲一区二区| 欧美日本免费一区二区三区| 亚洲免费在线播放| 成人丝袜18视频在线观看| 欧美精品一区二区在线播放| 男男视频亚洲欧美| 欧美一级爆毛片| 日本三级亚洲精品| 欧美一区二区视频在线观看2022| 一区二区三区资源| 日本电影欧美片| 亚洲激情自拍视频| 色哟哟国产精品| 亚洲精品免费在线| 日本乱码高清不卡字幕| 亚洲综合视频在线观看| 欧美视频日韩视频在线观看| 亚洲一区欧美一区| 欧美网站一区二区| 日韩精品每日更新| 精品乱人伦一区二区三区| 色偷偷88欧美精品久久久| 亚洲色欲色欲www| 色综合久久综合| 一区二区三区在线免费视频 | 欧美日韩综合不卡| 丝袜亚洲另类欧美综合| 欧美老肥妇做.爰bbww| 久久精品国产一区二区三 | 日韩欧美精品在线视频| 精品亚洲porn| 亚洲国产精品av| 色综合一区二区三区| 亚洲成人精品在线观看| 欧美一级黄色大片| 国产精品66部| 亚洲欧洲综合另类| 777奇米四色成人影色区| 久久国产精品72免费观看| 久久九九久精品国产免费直播| 成人性生交大片免费看在线播放 | 久久精品网站免费观看| 波多野结衣中文字幕一区| 亚洲色图在线播放| 欧美久久婷婷综合色| 国产91精品入口| 一区二区三区欧美| 日韩美女视频一区二区在线观看| 国产成a人无v码亚洲福利| 一区二区三区中文字幕精品精品|