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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? uicrontrigger.java

?? Quartz 是個開源的作業(yè)調(diào)度框架
?? 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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品裸体舞一区二区三区| 亚洲自拍欧美精品| 欧美一区二区三区成人| 91麻豆蜜桃一区二区三区| 精品一区二区三区免费观看 | 91精品国产色综合久久| 91蜜桃在线免费视频| 国产不卡免费视频| 精品综合久久久久久8888| 亚洲成av人**亚洲成av**| 亚洲免费观看在线视频| 国产精品欧美一级免费| 国产偷国产偷精品高清尤物| 日韩亚洲欧美高清| 91精品国产免费久久综合| 欧美色视频在线观看| 91美女在线视频| www.激情成人| 成人美女视频在线观看18| 国产精品一区二区久久不卡| 久久99久久99| 韩国理伦片一区二区三区在线播放| 美女在线视频一区| 蜜臀av国产精品久久久久| 日本伊人午夜精品| 亚洲制服欧美中文字幕中文字幕| 亚洲欧洲性图库| 国产精品区一区二区三区| 欧美成人女星排行榜| 日韩欧美一级精品久久| 日韩欧美123| 精品国产第一区二区三区观看体验 | 激情综合网av| 国产麻豆精品在线| 波多野结衣的一区二区三区| 9i在线看片成人免费| 日本精品免费观看高清观看| 欧美性色综合网| 欧美日韩一区二区三区四区五区 | 欧美综合天天夜夜久久| 色婷婷亚洲综合| 在线观看91视频| 3d动漫精品啪啪| 久久一区二区三区四区| 国产精品丝袜一区| 亚洲免费观看高清完整版在线观看| 亚洲三级电影网站| 亚洲第一激情av| 久久精品国产亚洲高清剧情介绍 | 综合欧美亚洲日本| 亚洲成人av电影| 麻豆成人91精品二区三区| 国产麻豆成人传媒免费观看| 成人伦理片在线| 91精品办公室少妇高潮对白| 欧美丰满少妇xxxbbb| 精品福利在线导航| 国产精品高清亚洲| 日韩精品欧美成人高清一区二区| 精品一区二区在线视频| 99国产精品久久久久久久久久久 | 欧美老年两性高潮| 精品对白一区国产伦| 国产精品成人一区二区三区夜夜夜| 一区二区三区在线观看网站| 免费国产亚洲视频| 成人h动漫精品一区二区| 欧美日韩久久久久久| 欧美日韩高清在线播放| 久久久夜色精品亚洲| 欧美激情在线一区二区三区| 国产精品三级久久久久三级| 亚洲国产精品一区二区久久恐怖片 | 国产大陆精品国产| 欧美亚洲图片小说| 国产性色一区二区| 亚洲综合网站在线观看| 国产精品一区久久久久| 色综合久久综合网97色综合| 精品国产免费视频| 亚洲网友自拍偷拍| 国产精品一区二区免费不卡 | 国产日韩影视精品| 亚洲va国产天堂va久久en| 国产成人av在线影院| 色激情天天射综合网| 欧美一区二区三区公司| 国产精品久久三| 亚洲午夜精品久久久久久久久| 国产成人精品免费在线| 日韩视频免费观看高清完整版在线观看| 中文天堂在线一区| 久久成人久久爱| 欧美色视频一区| 亚洲色图色小说| 国产一区二区三区最好精华液| 欧美日韩在线一区二区| 亚洲欧美综合在线精品| 国产美女av一区二区三区| 欧美群妇大交群中文字幕| 日韩女优av电影在线观看| 日韩精品欧美精品| 欧美这里有精品| 最新日韩av在线| 粉嫩av一区二区三区在线播放 | 久久66热re国产| 欧美日韩一区二区电影| 亚洲男女毛片无遮挡| 成人黄色在线网站| 久久久三级国产网站| 青娱乐精品在线视频| 欧美性一二三区| 日本一二三不卡| 国产一区二区精品久久| 日韩精品一区二| 日韩成人一区二区三区在线观看| 日本韩国一区二区三区视频| 国产精品久久久久婷婷 | 日韩一区二区三区电影在线观看 | 欧美一区二区三区在线观看视频| 亚洲一区二区视频在线| 欧美亚洲一区二区在线| 亚洲国产成人91porn| 91传媒视频在线播放| 一区二区久久久久| 91色乱码一区二区三区| 国产精品高潮呻吟| 色综合天天综合在线视频| 亚洲视频一区在线| 91小视频在线免费看| 亚洲精品水蜜桃| 欧美怡红院视频| 亚洲成国产人片在线观看| 欧美福利视频导航| 日产国产高清一区二区三区| 日韩亚洲欧美成人一区| 激情成人综合网| 777a∨成人精品桃花网| 亚洲成精国产精品女| 91精品国产高清一区二区三区| 日本美女一区二区三区视频| 日韩美女视频在线| 国产一区二区主播在线| 久久久777精品电影网影网 | 亚洲一区精品在线| 欧美视频一区在线| 男人的j进女人的j一区| 日韩免费高清av| 高清国产一区二区| 中文字幕制服丝袜成人av| 色88888久久久久久影院按摩 | 国产精品自拍av| 亚洲欧美综合在线精品| 欧美无人高清视频在线观看| 日韩成人一级大片| 国产色91在线| 色视频欧美一区二区三区| 日本免费在线视频不卡一不卡二| 26uuu亚洲综合色欧美| gogo大胆日本视频一区| 中文字幕在线观看不卡| 欧美亚洲一区二区三区四区| 国产高清视频一区| 婷婷综合五月天| 国产精品久久久久aaaa| 欧美大片国产精品| 在线精品亚洲一区二区不卡| 国产综合色在线| 丝袜亚洲另类欧美| 综合色中文字幕| 久久综合丝袜日本网| 欧美日韩国产三级| 99精品桃花视频在线观看| 韩国v欧美v日本v亚洲v| 亚洲电影在线播放| 中文字幕在线不卡一区| 精品国产不卡一区二区三区| 欧美日本一道本在线视频| 91一区在线观看| 成人一区二区三区中文字幕| 精品一区二区三区视频在线观看| 亚洲愉拍自拍另类高清精品| 国产精品毛片大码女人| 26uuu精品一区二区三区四区在线| 欧美日韩高清在线播放| 在线免费观看视频一区| 不卡一区二区在线| 国产99久久久国产精品免费看| 美女视频黄久久| 日韩在线一二三区| 亚洲伊人伊色伊影伊综合网| 国产精品国模大尺度视频| 国产女主播视频一区二区| 久久综合狠狠综合久久激情| 欧美一区二区人人喊爽| 91精品视频网| 欧美丰满少妇xxxbbb| 欧美日韩国产不卡| 欧美精品电影在线播放| 欧美日韩视频不卡|