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

📄 uicrontrigger.java

📁 定时器开源项目, 相对于 jcrontab, Quartz 算是更完整的一个项目, 随著开发的版本上来, 他已经脱离只是写在程序里面的计时器, 在指定的时间或区间, 处理所指定的事件. 也加入了 se
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                    while ((day + daysToAdd + 7) <= lDay)                        daysToAdd += 7;                    day += daysToAdd;                } else if (nthdayOfWeek != 0) { // are we looking for the Nth                    // XXX day in the month?                    int dow = ((Integer) daysOfWeek.first()).intValue(); // desired                    // d-o-w                    int cDow = cl.get(Calendar.DAY_OF_WEEK); // current d-o-w                    int daysToAdd = 0;                    if (cDow < dow) daysToAdd = dow - cDow;                    else if (cDow > dow) daysToAdd = dow + (7 - cDow);                    day += daysToAdd;                    int weekOfMonth = day / 7;                    if (day % 7 > 0) weekOfMonth++;                    daysToAdd = (nthdayOfWeek - weekOfMonth) * 7;                    day += daysToAdd;                    if (daysToAdd < 0 || day > getLastDayOfMonth(mon)) {                        cl.set(Calendar.SECOND, 0);                        cl.set(Calendar.MINUTE, 0);                        cl.set(Calendar.HOUR_OF_DAY, 0);                        cl.set(Calendar.DAY_OF_MONTH, 1);                        cl.set(Calendar.MONTH, mon); // no '- 1' here because                        // we are promoting the                        // month                        continue;                    }                } else {                    int cDow = cl.get(Calendar.DAY_OF_WEEK); // current d-o-w                    int dow = ((Integer) daysOfWeek.first()).intValue(); // desired                    // d-o-w                    st = daysOfWeek.tailSet(new Integer(cDow));                    if (st != null && st.size() > 0) {                        dow = ((Integer) st.first()).intValue();                    }                    int daysToAdd = 0;                    if (cDow < dow) daysToAdd = dow - cDow;                    if (cDow > dow) daysToAdd = dow + (7 - cDow);                    int lDay = getLastDayOfMonth(mon);                    if (day + daysToAdd > lDay) { // will we pass the end of                        // the month?                        cl.set(Calendar.SECOND, 0);                        cl.set(Calendar.MINUTE, 0);                        cl.set(Calendar.HOUR_OF_DAY, 0);                        cl.set(Calendar.DAY_OF_MONTH, 1);                        cl.set(Calendar.MONTH, mon); // no '- 1' here because                        // we are promoting the                        // month                        continue;                    } else if (daysToAdd > 0) { // are we swithing days?                        cl.set(Calendar.SECOND, 0);                        cl.set(Calendar.MINUTE, 0);                        cl.set(Calendar.HOUR_OF_DAY, 0);                        cl.set(Calendar.DAY_OF_MONTH, day + daysToAdd);                        cl.set(Calendar.MONTH, mon - 1); // '- 1' because                        // calendar is 0-based                        // for this field, and                        // we are 1-based                        continue;                    }                }            } else { // dayOfWSpec && !dayOfMSpec                throw new UnsupportedOperationException(                        "Support for specifying both a day-of-week AND a day-of-month parameter is not implemented."); // TODO:            }            cl.set(Calendar.DAY_OF_MONTH, day);            mon = cl.get(Calendar.MONTH) + 1; // '+ 1' because calendar is            // 0-based for this field, and we            // are 1-based            int year = cl.get(Calendar.YEAR);            t = -1;            // get month...................................................            st = months.tailSet(new Integer(mon));            if (st != null && st.size() != 0) {                t = mon;                mon = ((Integer) st.first()).intValue();            } else {                mon = ((Integer) months.first()).intValue();                year++;            }            if (mon != t) {                cl.set(Calendar.SECOND, 0);                cl.set(Calendar.MINUTE, 0);                cl.set(Calendar.HOUR_OF_DAY, 0);                cl.set(Calendar.DAY_OF_MONTH, 1);                cl.set(Calendar.MONTH, mon - 1); // '- 1' because calendar is                // 0-based for this field, and                // we are 1-based                cl.set(Calendar.YEAR, year);                continue;            }            cl.set(Calendar.MONTH, mon - 1); // '- 1' because calendar is            // 0-based for this field, and we            // are 1-based            year = cl.get(Calendar.YEAR);            t = -1;            // get year...................................................            st = years.tailSet(new Integer(year));            if (st != null && st.size() != 0) {                t = year;                year = ((Integer) st.first()).intValue();            } else                return null; // ran out of years...            if (year != t) {                cl.set(Calendar.SECOND, 0);                cl.set(Calendar.MINUTE, 0);                cl.set(Calendar.HOUR_OF_DAY, 0);                cl.set(Calendar.DAY_OF_MONTH, 1);                cl.set(Calendar.MONTH, mon - 1); // '- 1' because calendar is                // 0-based for this field, and                // we are 1-based                cl.set(Calendar.YEAR, year);                continue;            }            cl.set(Calendar.YEAR, year);            gotOne = true;        } // while( !done )        return cl.getTime();    }    private Date getTimeBefore(Date endTime) // TODO: implement    {        return null;    }    public boolean isLeapYear() {        Calendar cl = Calendar.getInstance(timeZone);        int year = cl.get(Calendar.YEAR);        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) return true;        else            return false;    }    public int getLastDayOfMonth(int monthNum) {        switch (monthNum) {        case 1:            return 31;        case 2:            return (isLeapYear()) ? 29 : 28;        case 3:            return 31;        case 4:            return 30;        case 5:            return 31;        case 6:            return 30;        case 7:            return 31;        case 8:            return 31;        case 9:            return 30;        case 10:            return 31;        case 11:            return 30;        case 12:            return 31;        default:            throw new IllegalArgumentException("Illegal month number: "                    + monthNum);        }    }    public Integer[] getSecondsValues() {        Integer list[] = new Integer[60];        for (int i = 0; i < 60; i++) {            list[i] = new Integer(i);        }        return list;    }    public Integer[] getSecondsLabels() {        return getSecondsValues();    }    public Integer[] getSeconds() {        Integer list[] = new Integer[seconds.size()];        if (seconds != null) {            int i = 0;            for (Iterator it = seconds.iterator(); it.hasNext(); i++) {                list[i] = (Integer) it.next();            }        }        return list;    }    public void setSeconds(Integer[] val) {        if (seconds != null) seconds.clear();        else            seconds = new TreeSet();        for (int i = 0; i < val.length; i++) {            seconds.add(val[i]);        }    }    public Integer[] getMinutesValues() {        Integer list[] = new Integer[60];        for (int i = 0; i < 60; i++) {            list[i] = new Integer(i);        }        return list;    }    public Integer[] getMinutesLabels() {        return getMinutesValues();    }    public Integer[] getMinutes() {        Integer list[] = new Integer[minutes.size()];        if (minutes != null) {            int i = 0;            for (Iterator it = minutes.iterator(); it.hasNext(); i++) {                list[i] = (Integer) it.next();            }        }        return list;    }    public void setMinutes(Integer[] val) {        if (minutes != null) minutes.clear();        else            minutes = new TreeSet();        for (int i = 0; i < val.length; i++) {            minutes.add(val[i]);        }    }    public Integer[] getHoursValues() {        Integer list[] = new Integer[24];        for (int i = 0; i < 24; i++) {            list[i] = new Integer(i);        }        return list;    }    public String[] getHoursLabels() {        String vals[] = {"12AM (Midnight)", "1AM", "2AM", "3AM", "4AM", "5AM",                "6AM", "7AM", "8AM", "9AM", "10AM", "11AM", "12PM (Noon)",                "1PM", "2PM", "3PM", "4PM", "5PM", "6PM", "7PM", "8PM", "9PM",                "10PM", "11PM"};        return vals;    }    public Integer[] getHours() {        Integer list[] = new Integer[hours.size()];        if (hours != null) {            int i = 0;            for (Iterator it = hours.iterator(); it.hasNext(); i++) {                list[i] = (Integer) it.next();            }        }        return list;    }    public void setHours(Integer[] val) {        if (hours != null) hours.clear();        else            hours = new TreeSet();        for (int i = 0; i < val.length; i++) {            hours.add(val[i]);        }    }    public Integer[] getDaysOfMonthValues() {        Integer list[] = new Integer[31];        for (int i = 0; i < 31; i++) {            list[i] = new Integer(i + 1);        }        return list;    }    public Integer[] getDaysOfMonthLabels() {        return getDaysOfMonthValues();    }    public Integer[] getDaysOfMonth() {        Integer list[] = new Integer[daysOfMonth.size()];        if (daysOfMonth != null) {            int i = 0;            for (Iterator it = daysOfMonth.iterator(); it.hasNext(); i++) {                list[i] = (Integer) it.next();            }        }        return list;    }    public void setDaysOfMonth(Integer[] val) {        if (daysOfMonth != null) daysOfMonth.clear();        else            daysOfMonth = new TreeSet();        for (int i = 0; i < val.length; i++) {            daysOfMonth.add(val[i]);        }        daysOfWeek.clear();        daysOfWeek.add(NO_SPEC);    }    public Integer[] getMonthsValues() {        Integer list[] = new Integer[12];        for (int i = 0; i < 12; i++) {            list[i] = new Integer(i + 1);        }        return list;    }    public String[] getMonthsLabels() {        String vals[] = {"January", "February", "March", "April", "May",                "June", "July", "August", "September", "October", "November",                "December"};        return vals;    }    public Integer[] getMonths() {        Integer list[] = new Integer[months.size()];        if (months != null) {            int i = 0;            for (Iterator it = months.iterator(); it.hasNext(); i++) {                list[i] = (Integer) it.next();            }        }        return list;    }    public void setMonths(Integer[] val) {        if (months != null) months.clear();        else            months = new TreeSet();        for (int i = 0; i < val.length; i++) {            months.add(val[i]);        }    }    public String[] getDaysOfWeekLabels() {        String list[] = {"Sunday", "Monday", "Tuesday", "Wednesday",                "Thursday", "Friday", "Saturday"};        return list;    }    public Integer[] getDaysOfWeekValues() {        Integer list[] = new Integer[7];        for (int i = 0; i < 7; i++)            list[i] = new Integer(i + 1);        return list;    }    public Integer[] getDaysOfWeek() {        Integer list[] = new Integer[daysOfWeek.size()];        if (daysOfWeek != null) {            int i = 0;            for (Iterator it = daysOfWeek.iterator(); it.hasNext(); i++) {                list[i] = (Integer) it.next();            }        }        return list;    }    public void setDaysOfWeek(Integer[] val) {        if (daysOfWeek != null) daysOfWeek.clear();        else            daysOfWeek = new TreeSet();        for (int i = 0; i < val.length; i++) {            daysOfWeek.add(val[i]);        }        daysOfMonth.clear();        daysOfMonth.add(NO_SPEC);    }    public Integer[] getYearsValues() {        Integer list[] = new Integer[20];        Calendar now = Calendar.getInstance();        int year = now.get(Calendar.YEAR);        for (int i = 0; i < 20; i++) {            list[i] = new Integer(i + year);        }        return list;    }    public Integer[] getYearsLabels() {        return getYearsValues();    }    public Integer[] getYears() {        Integer list[] = new Integer[years.size()];        if (years != null) {            int i = 0;            for (Iterator it = years.iterator(); it.hasNext(); i++) {                list[i] = (Integer) it.next();            }        }        return list;    }    public void setYears(Integer[] val) {        if (years != null) years.clear();        else            years = new TreeSet();        for (int i = 0; i < val.length; i++) {            years.add(val[i]);        }    }    public static void main(String[] argv) {        CronTrigger ct = new CronTrigger("a", "a");        try {            ct.setCronExpression("0 * * * * ? *");        } catch (ParseException e) {            //            log.error("caught an exception", e);        }        ct.setStartTime(new Date());        ct.setTimeZone(TimeZone.getDefault());        System.out.println(ct.getExpressionSummary());        ct.computeFirstFireTime(null);        UICronTrigger uict = new UICronTrigger("a", "a");        Integer set[] = new Integer[1];        set[0] = new Integer(1);        uict.setSeconds(set);        System.out.println(ct.getExpressionSummary());        uict.computeFirstFireTime(null);    }}

⌨️ 快捷键说明

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