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

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

?? ramjobstore.java

?? Java中非常實用流控制工具
?? JAVA
?? 第 1 頁 / 共 4 頁
字號:
                    Trigger[] trigs = getTriggersForJob(ctxt, tw.trigger
                            .getJobName(), tw.trigger.getJobGroup());
                    if ((trigs == null || trigs.length == 0) && !jw.jobDetail.isDurable()) {
                        removeJob(ctxt, tw.trigger.getJobName(), tw.trigger
                                .getJobGroup());
                    }
                }
            }
        }

        return found;
    }


    /**
     * @see org.quartz.spi.JobStore#replaceTrigger(org.quartz.core.SchedulingContext, java.lang.String, java.lang.String, org.quartz.Trigger)
     */
    public boolean replaceTrigger(SchedulingContext ctxt, String triggerName, String groupName, Trigger newTrigger) throws JobPersistenceException {
        String key = TriggerWrapper.getTriggerNameKey(triggerName, groupName);

        boolean found = false;

        synchronized (triggerLock) {
            // remove from triggers by FQN map
            TriggerWrapper tw = (TriggerWrapper) triggersByFQN.remove(key);
            found = ( tw == null) ? false : true;

            if (found) {

                if (!tw.getTrigger().getJobName().equals(newTrigger.getJobName()) ||
                    !tw.getTrigger().getJobGroup().equals(newTrigger.getJobGroup())) {
                    throw new JobPersistenceException("New trigger is not related to the same job as the old trigger.");
                }

                tw = null;
                // remove from triggers by group
                HashMap grpMap = (HashMap) triggersByGroup.get(groupName);
                if (grpMap != null) {
                    grpMap.remove(triggerName);
                    if (grpMap.size() == 0) {
                        triggersByGroup.remove(groupName);
                    }
                }
                // remove from triggers array
                Iterator tgs = triggers.iterator();
                while (tgs.hasNext()) {
                    tw = (TriggerWrapper) tgs.next();
                    if (key.equals(tw.key)) {
                        tgs.remove();
                        break;
                    }
                }
                timeTriggers.remove(tw);

                try {
                    storeTrigger(ctxt, newTrigger, false);
                } catch(JobPersistenceException jpe) {
                    storeTrigger(ctxt, tw.getTrigger(), false); // put previous trigger back...
                    throw jpe;
                }
            }
        }

        return found;
    }

    /**
     * <p>
     * Retrieve the <code>{@link org.quartz.JobDetail}</code> for the given
     * <code>{@link org.quartz.Job}</code>.
     * </p>
     *
     * @param jobName
     *          The name of the <code>Job</code> to be retrieved.
     * @param groupName
     *          The group name of the <code>Job</code> to be retrieved.
     * @return The desired <code>Job</code>, or null if there is no match.
     */
    public JobDetail retrieveJob(SchedulingContext ctxt, String jobName,
            String groupName) {
        JobWrapper jw = (JobWrapper) jobsByFQN.get(JobWrapper.getJobNameKey(
                jobName, groupName));

        return (jw != null) ? (JobDetail)jw.jobDetail.clone() : null;
    }

    /**
     * <p>
     * Retrieve the given <code>{@link org.quartz.Trigger}</code>.
     * </p>
     *
     * @param triggerName
     *          The name of the <code>Trigger</code> to be retrieved.
     * @param groupName
     *          The group name of the <code>Trigger</code> to be retrieved.
     * @return The desired <code>Trigger</code>, or null if there is no
     *         match.
     */
    public Trigger retrieveTrigger(SchedulingContext ctxt, String triggerName,
            String groupName) {
        TriggerWrapper tw = (TriggerWrapper) triggersByFQN.get(TriggerWrapper
                .getTriggerNameKey(triggerName, groupName));

        return (tw != null) ? (Trigger)tw.getTrigger().clone() : null;
    }

    /**
     * <p>
     * Get the current state of the identified <code>{@link Trigger}</code>.
     * </p>
     *
     * @see Trigger#STATE_NORMAL
     * @see Trigger#STATE_PAUSED
     * @see Trigger#STATE_COMPLETE
     * @see Trigger#STATE_ERROR
     * @see Trigger#STATE_BLOCKED
     * @see Trigger#STATE_NONE
     */
    public int getTriggerState(SchedulingContext ctxt, String triggerName,
            String groupName) throws JobPersistenceException {
        TriggerWrapper tw = (TriggerWrapper) triggersByFQN.get(TriggerWrapper
                .getTriggerNameKey(triggerName, groupName));
        if (tw == null) {
            return Trigger.STATE_NONE;
        }

        if (tw.state == TriggerWrapper.STATE_COMPLETE) {
            return Trigger.STATE_COMPLETE;
        }

        if (tw.state == TriggerWrapper.STATE_PAUSED) {
            return Trigger.STATE_PAUSED;
        }

        if (tw.state == TriggerWrapper.STATE_PAUSED_BLOCKED) {
            return Trigger.STATE_PAUSED;
        }

        if (tw.state == TriggerWrapper.STATE_BLOCKED) {
            return Trigger.STATE_BLOCKED;
        }

        if (tw.state == TriggerWrapper.STATE_ERROR) {
            return Trigger.STATE_ERROR;
        }

        return Trigger.STATE_NORMAL;
    }

    /**
     * <p>
     * Store the given <code>{@link org.quartz.Calendar}</code>.
     * </p>
     *
     * @param calendar
     *          The <code>Calendar</code> to be stored.
     * @param replaceExisting
     *          If <code>true</code>, any <code>Calendar</code> existing
     *          in the <code>JobStore</code> with the same name & group
     *          should be over-written.
     * @param updateTriggers
     *          If <code>true</code>, any <code>Trigger</code>s existing
     *          in the <code>JobStore</code> that reference an existing
     *          Calendar with the same name with have their next fire time
     *          re-computed with the new <code>Calendar</code>.
     * @throws ObjectAlreadyExistsException
     *           if a <code>Calendar</code> with the same name already
     *           exists, and replaceExisting is set to false.
     */
    public void storeCalendar(SchedulingContext ctxt, String name,
            Calendar calendar, boolean replaceExisting, boolean updateTriggers)
        throws ObjectAlreadyExistsException {
        Object obj = calendarsByName.get(name);

        if (obj != null && replaceExisting == false) {
            throw new ObjectAlreadyExistsException(
                "Calendar with name '" + name + "' already exists.");
        } else if (obj != null) {
            calendarsByName.remove(name);
        }

        calendarsByName.put(name, calendar);

        if(obj != null && updateTriggers) {
            synchronized (triggerLock) {
                Iterator trigs = getTriggerWrappersForCalendar(name).iterator();
                while (trigs.hasNext()) {
                    TriggerWrapper tw = (TriggerWrapper) trigs.next();
                    Trigger trig = tw.getTrigger();
                    boolean removed = timeTriggers.remove(tw);

                    trig.updateWithNewCalendar(calendar, getMisfireThreshold());

                    if(removed) {
                        timeTriggers.add(tw);
                    }
                }
            }
        }
    }

    /**
     * <p>
     * Remove (delete) the <code>{@link org.quartz.Calendar}</code> with the
     * given name.
     * </p>
     *
     * <p>
     * If removal of the <code>Calendar</code> would result in
     * <code.Trigger</code>s pointing to non-existent calendars, then a
     * <code>JobPersistenceException</code> will be thrown.</p>
     *       *
     * @param calName The name of the <code>Calendar</code> to be removed.
     * @return <code>true</code> if a <code>Calendar</code> with the given name
     * was found and removed from the store.
     */
    public boolean removeCalendar(SchedulingContext ctxt, String calName)
        throws JobPersistenceException {
        int numRefs = 0;

        synchronized (triggerLock) {
            Iterator itr = triggers.iterator();
            while (itr.hasNext()) {
                Trigger trigg = ((TriggerWrapper) itr.next()).trigger;
                if (trigg.getCalendarName() != null
                        && trigg.getCalendarName().equals(calName)) {
                    numRefs++;
                }
            }
        }

        if (numRefs > 0) {
            throw new JobPersistenceException(
                    "Calender cannot be removed if it referenced by a Trigger!");
        }

        return (calendarsByName.remove(calName) != null);
    }

    /**
     * <p>
     * Retrieve the given <code>{@link org.quartz.Trigger}</code>.
     * </p>
     *
     * @param calName
     *          The name of the <code>Calendar</code> to be retrieved.
     * @return The desired <code>Calendar</code>, or null if there is no
     *         match.
     */
    public Calendar retrieveCalendar(SchedulingContext ctxt, String calName) {
        return (Calendar) calendarsByName.get(calName);
    }

    /**
     * <p>
     * Get the number of <code>{@link org.quartz.JobDetail}</code> s that are
     * stored in the <code>JobsStore</code>.
     * </p>
     */
    public int getNumberOfJobs(SchedulingContext ctxt) {
        return jobsByFQN.size();
    }

    /**
     * <p>
     * Get the number of <code>{@link org.quartz.Trigger}</code> s that are
     * stored in the <code>JobsStore</code>.
     * </p>
     */
    public int getNumberOfTriggers(SchedulingContext ctxt) {
        return triggers.size();
    }

    /**
     * <p>
     * Get the number of <code>{@link org.quartz.Calendar}</code> s that are
     * stored in the <code>JobsStore</code>.
     * </p>
     */
    public int getNumberOfCalendars(SchedulingContext ctxt) {
        return calendarsByName.size();
    }

    /**
     * <p>
     * Get the names of all of the <code>{@link org.quartz.Job}</code> s that
     * have the given group name.
     * </p>
     */
    public String[] getJobNames(SchedulingContext ctxt, String groupName) {
        String[] outList = null;
        HashMap grpMap = (HashMap) jobsByGroup.get(groupName);
        if (grpMap != null) {
            synchronized (triggerLock) {
                outList = new String[grpMap.size()];
                int outListPos = 0;

                for (Iterator valueIter = grpMap.values().iterator(); valueIter.hasNext();) {
                    JobWrapper jw = (JobWrapper)valueIter.next();

                    if (jw != null) {
                        outList[outListPos++] = jw.jobDetail.getName();
                    }
                }
            }
        } else {
            outList = new String[0];
        }

        return outList;
    }

    /**
     * <p>
     * Get the names of all of the <code>{@link org.quartz.Calendar}</code> s
     * in the <code>JobStore</code>.
     * </p>
     *
     * <p>
     * If there are no Calendars in the given group name, the result should be
     * a zero-length array (not <code>null</code>).
     * </p>
     */
    public String[] getCalendarNames(SchedulingContext ctxt) {
        Set names = calendarsByName.keySet();
        return (String[]) names.toArray(new String[names.size()]);
    }

    /**
     * <p>
     * Get the names of all of the <code>{@link org.quartz.Trigger}</code> s
     * that have the given group name.
     * </p>
     */
    public String[] getTriggerNames(SchedulingContext ctxt, String groupName) {
        String[] outList = null;
        HashMap grpMap = (HashMap) triggersByGroup.get(groupName);
        if (grpMap != null) {
            synchronized (triggerLock) {
                outList = new String[grpMap.size()];
                int outListPos = 0;

                for (Iterator valueIter = grpMap.values().iterator(); valueIter.hasNext();) {
                    TriggerWrapper tw = (TriggerWrapper) valueIter.next();

                    if (tw != null) {
                        outList[outListPos++] = tw.trigger.getName();
                    }
                }
            }
        } else {
            outList = new String[0];
        }

        return outList;
    }

    /**
     * <p>
     * Get the names of all of the <code>{@link org.quartz.Job}</code>
     * groups.
     * </p>
     */
    public String[] getJobGroupNames(SchedulingContext ctxt) {
        String[] outList = null;

        synchronized (triggerLock) {
            outList = new String[jobsByGroup.size()];
            int outListPos = 0;
            Iterator keys = jobsByGroup.keySet().iterator();
            while (keys.hasNext()) {
                outList[outListPos++] = (String) keys.next();
            }
        }

        return outList;
    }

    /**
     * <p>
     * Get the names of all of the <code>{@link org.quartz.Trigger}</code>
     * groups.
     * </p>
     */
    public String[] getTriggerGroupNames(SchedulingContext ctxt) {
        String[] outList = null;

        synchronized (triggerLock) {
            outList = new String[triggersByGroup.size()];
            int outListPos = 0;
            Iterator keys = triggersByGroup.keySet().iterator();
            while (keys.hasNext()) {
                outList[outListPos++] = (String) keys.next();
            }
        }

        return outList;
    }

    /**
     * <p>
     * Get all of the Triggers that are associated to the given Job.
     * </p>
     *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美xxxx老人做受| 紧缚奴在线一区二区三区| 久久伊人中文字幕| 欧美日韩不卡一区二区| 91在线观看一区二区| 在线观看免费成人| 精品国产污污免费网站入口| 亚洲色大成网站www久久九九| 亚洲精品国产精品乱码不99 | 久久青草欧美一区二区三区| 亚洲欧美另类在线| 精品一区二区三区在线视频| 在线中文字幕一区| 欧美亚洲禁片免费| 欧美在线一二三| 精品国产人成亚洲区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 宅男噜噜噜66一区二区66| 欧美亚洲综合久久| 欧美日韩黄色一区二区| 51精品国自产在线| 亚洲激情六月丁香| 蓝色福利精品导航| 成人丝袜视频网| 欧美日韩一区小说| 精品国产免费人成电影在线观看四季 | 国产精品第五页| 五月天丁香久久| 国产经典欧美精品| 欧美午夜精品电影| 久久人人超碰精品| 亚洲国产日韩综合久久精品| 久久成人免费电影| 91女人视频在线观看| 日韩女优电影在线观看| 一区二区三区色| 成人app网站| 日韩欧美黄色影院| 亚洲一二三级电影| 狠狠色狠狠色综合日日91app| 成人app在线观看| 欧美一区二区三区免费在线看| 综合久久一区二区三区| 美脚の诱脚舐め脚责91| 91久久国产综合久久| 国产精品国产自产拍在线| 无码av中文一区二区三区桃花岛| 成人动漫视频在线| 久久亚洲私人国产精品va媚药| 亚洲欧美偷拍卡通变态| 日本高清视频一区二区| 有坂深雪av一区二区精品| 91传媒视频在线播放| 日本一区二区不卡视频| 精久久久久久久久久久| 精品日韩欧美一区二区| 看国产成人h片视频| 欧美刺激午夜性久久久久久久| 性做久久久久久免费观看| 欧美午夜精品一区二区蜜桃| 亚洲线精品一区二区三区| 不卡的av中国片| 中文字幕一区二区三区不卡在线| 成人激情黄色小说| 亚洲码国产岛国毛片在线| 色婷婷久久99综合精品jk白丝| 亚洲精品国产高清久久伦理二区| 韩国av一区二区三区| 日韩精品综合一本久道在线视频| 性欧美大战久久久久久久久| 92国产精品观看| 欧美经典一区二区| 国产成人免费xxxxxxxx| 中文在线资源观看网站视频免费不卡| 日本最新不卡在线| 欧美电影免费观看完整版| 国产一区二区三区免费观看| 国产午夜精品美女毛片视频| 欧美猛男gaygay网站| 欧美日韩国产综合一区二区三区| 欧美午夜在线一二页| 91福利在线播放| 日韩美女视频在线| 亚洲视频一二区| 免费精品99久久国产综合精品| 国产一区二区三区精品欧美日韩一区二区三区| 国产麻豆精品在线观看| 97久久精品人人澡人人爽| 正在播放一区二区| 中文字幕av一区 二区| 亚洲成人在线免费| 国产福利一区二区| 欧美色网站导航| 久久精品亚洲精品国产欧美| 亚洲日穴在线视频| 麻豆精品视频在线| 99久久国产综合精品色伊| 欧美色精品在线视频| 久久久www免费人成精品| 亚洲国产日韩一级| 成人激情电影免费在线观看| 在线成人免费观看| 国产精品国产三级国产普通话蜜臀 | 国产精品第13页| 亚洲电影第三页| 久久国产综合精品| 日韩一区二区在线看片| 一片黄亚洲嫩模| 欧美韩国日本不卡| 欧美精品一卡二卡| 欧美视频在线一区| 最新日韩av在线| 成人欧美一区二区三区小说| 久久中文娱乐网| 69久久99精品久久久久婷婷| 色狠狠一区二区| 日韩av成人高清| 亚洲精品国产精华液| 欧美岛国在线观看| 日韩精品中午字幕| 欧美一区二区视频在线观看 | 一本到不卡免费一区二区| 免费av网站大全久久| 日本成人超碰在线观看| 久久久久久**毛片大全| 国产精品久久夜| 国产精品视频免费| 亚洲美女屁股眼交3| 亚洲黄色尤物视频| 国产精品的网站| 国产亚洲欧美激情| 欧美日韩在线一区二区| 免费精品视频最新在线| 日本最新不卡在线| 久久99久久久久久久久久久| 亚洲激情一二三区| 一二三四区精品视频| 精品国产一区久久| 久久色.com| 国产精品传媒在线| 日韩美女视频在线| 91麻豆精品国产自产在线| 不卡电影免费在线播放一区| 91麻豆免费观看| 91国模大尺度私拍在线视频| 4438亚洲最大| 日韩视频在线观看一区二区| 欧美日韩在线三区| 欧美巨大另类极品videosbest | 亚洲精选在线视频| 亚洲成人黄色小说| 久久国产精品区| 亚洲18女电影在线观看| 亚洲国产美女搞黄色| 国产电影精品久久禁18| 99麻豆久久久国产精品免费优播| jvid福利写真一区二区三区| 色婷婷国产精品综合在线观看| 91麻豆精品国产91久久久久久久久 | 亚洲综合色视频| 蜜桃av噜噜一区二区三区小说| 午夜伊人狠狠久久| 国产一区二区不卡老阿姨| 偷偷要91色婷婷| 国产99久久久精品| 成人精品视频一区二区三区 | 日韩美女视频19| 日韩精品电影在线| 91久久人澡人人添人人爽欧美| 日韩欧美中文字幕公布| 国内成+人亚洲+欧美+综合在线| 精品视频在线免费观看| 久久人人爽人人爽| 久久成人免费日本黄色| 国内精品视频一区二区三区八戒| 亚洲精品国产一区二区精华液| 亚洲精品视频在线观看免费| 国产精品国产三级国产三级人妇| 日韩一区二区电影在线| 欧美日本一道本| 欧美一区二区三区不卡| 7777精品久久久大香线蕉| 日韩亚洲欧美在线| 欧美日本一区二区三区| 欧美一级专区免费大片| 欧美熟乱第一页| 欧美一区永久视频免费观看| 欧美高清视频不卡网| 欧美日韩国产影片| 欧美一区二区三区白人| 日韩女优制服丝袜电影| 精品欧美一区二区三区精品久久| a亚洲天堂av| 大胆亚洲人体视频| 色狠狠一区二区| 欧美精品亚洲一区二区在线播放| 欧美视频精品在线观看| 欧美丰满美乳xxx高潮www| 欧美日韩视频在线一区二区| 久久久天堂av|