📄 uicrontrigger.java
字号:
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 + -