/** * Build the actual Trigger -- NOT intended to be invoked by end users, * but will rather be invoked by a TriggerBuilder which this * ScheduleBuilder is given to. * * @see TriggerBuilder#withSchedule(ScheduleBuilder) */ @Override public MutableTrigger build() { DailyTimeIntervalTriggerImpl st = new DailyTimeIntervalTriggerImpl(); st.setRepeatInterval(interval); st.setRepeatIntervalUnit(intervalUnit); st.setMisfireInstruction(misfireInstruction); st.setRepeatCount(repeatCount); if(daysOfWeek != null) st.setDaysOfWeek(daysOfWeek); else st.setDaysOfWeek(ALL_DAYS_OF_THE_WEEK); if(startTimeOfDay != null) st.setStartTimeOfDay(startTimeOfDay); else st.setStartTimeOfDay(TimeOfDay.hourAndMinuteOfDay(0, 0)); if(endTimeOfDay != null) st.setEndTimeOfDay(endTimeOfDay); else st.setEndTimeOfDay(TimeOfDay.hourMinuteAndSecondOfDay(23, 59, 59)); return st; }
private boolean isSameDay(Date d1, Date d2) { Calendar c1 = createCalendarTime(d1); Calendar c2 = createCalendarTime(d2); return c1.get(Calendar.YEAR) == c2.get(Calendar.YEAR) && c1.get(Calendar.DAY_OF_YEAR) == c2.get(Calendar.DAY_OF_YEAR); }
/** * <p> * Set the time at which the <code>DailyTimeIntervalTrigger</code> should occur. * </p> * * @exception IllegalArgumentException * if startTime is <code>null</code>. */ @Override public void setStartTime(Date startTime) { if (startTime == null) { throw new IllegalArgumentException("Start time cannot be null"); } Date eTime = getEndTime(); if (eTime != null && eTime.before(startTime)) { throw new IllegalArgumentException( "End time cannot be before start time"); } this.startTime = startTime; }
int instr = getMisfireInstruction(); 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());
SimplePropertiesTriggerProperties props = new SimplePropertiesTriggerProperties(); props.setInt1(dailyTrigger.getRepeatInterval()); props.setString1(dailyTrigger.getRepeatIntervalUnit().name()); props.setInt2(dailyTrigger.getTimesTriggered()); Set<Integer> days = dailyTrigger.getDaysOfWeek(); String daysStr = join(days, ","); props.setString2(daysStr); TimeOfDay startTimeOfDay = dailyTrigger.getStartTimeOfDay(); if (startTimeOfDay != null) { timeOfDayBuffer.append(startTimeOfDay.getHour()).append(","); timeOfDayBuffer.append(",,,"); TimeOfDay endTimeOfDay = dailyTrigger.getEndTimeOfDay(); if (endTimeOfDay != null) { timeOfDayBuffer.append(endTimeOfDay.getHour()).append(","); props.setLong1(dailyTrigger.getRepeatCount());
/** * Get a {@link ScheduleBuilder} that is configured to produce a * schedule identical to this trigger's schedule. * * @see #getTriggerBuilder() */ @Override public ScheduleBuilder<DailyTimeIntervalTrigger> getScheduleBuilder() { DailyTimeIntervalScheduleBuilder cb = DailyTimeIntervalScheduleBuilder.dailyTimeIntervalSchedule() .withInterval(getRepeatInterval(), getRepeatIntervalUnit()) .onDaysOfTheWeek(getDaysOfWeek()).startingDailyAt(getStartTimeOfDay()).endingDailyAt(getEndTimeOfDay()); switch(getMisfireInstruction()) { case MISFIRE_INSTRUCTION_DO_NOTHING : cb.withMisfireHandlingInstructionDoNothing(); break; case MISFIRE_INSTRUCTION_FIRE_ONCE_NOW : cb.withMisfireHandlingInstructionFireAndProceed(); break; } return cb; }
Date fireTime = advanceToNextDayOfWeekIfNecessary(afterTime, afterTimePastEndTimeOfDay); if (fireTime == null) return null; long startMillis = fireTimeStartDate.getTime(); long secondsAfterStart = (fireMillis - startMillis) / 1000L; long repeatLong = getRepeatInterval(); Calendar sTime = createCalendarTime(fireTimeStartDate); IntervalUnit repeatUnit = getRepeatIntervalUnit(); if(repeatUnit.equals(IntervalUnit.SECOND)) { long jumpCount = secondsAfterStart / repeatLong; if(secondsAfterStart % repeatLong != 0) jumpCount++; sTime.add(Calendar.SECOND, getRepeatInterval() * (int)jumpCount); fireTime = sTime.getTime(); } else if(repeatUnit.equals(IntervalUnit.MINUTE)) { if(secondsAfterStart % (repeatLong * 60L) != 0) jumpCount++; sTime.add(Calendar.MINUTE, getRepeatInterval() * (int)jumpCount); fireTime = sTime.getTime(); } else if(repeatUnit.equals(IntervalUnit.HOUR)) { if(secondsAfterStart % (repeatLong * 60L * 60L) != 0) jumpCount++; sTime.add(Calendar.HOUR_OF_DAY, getRepeatInterval() * (int)jumpCount); fireTime = sTime.getTime(); fireTime = advanceToNextDayOfWeekIfNecessary(fireTime, isSameDay(fireTime, fireTimeEndDate));
TimeOfDay sTimeOfDay = getStartTimeOfDay(); Date fireTimeStartDate = sTimeOfDay.getTimeOfDayForDate(fireTime); Calendar fireTimeStartDateCal = createCalendarTime(fireTimeStartDate); int dayOfWeekOfFireTime = fireTimeStartDateCal.get(Calendar.DAY_OF_WEEK); Set<Integer> daysOfWeekToFire = getDaysOfWeek(); if (forceToAdvanceNextDay || !daysOfWeekToFire.contains(dayOfWeekOfFireTime)) { Date eTime = getEndTime(); if (eTime != null && fireTime.getTime() > eTime.getTime()) { return null;
public Date computeFirstFireTime(org.quartz.Calendar calendar) { nextFireTime = getFireTimeAfter(new Date(getStartTime().getTime() - 1000L)); && !calendar.isTimeIncluded(nextFireTime.getTime())) { nextFireTime = getFireTimeAfter(nextFireTime);
if (getEndTimeOfDay() != null && !getStartTimeOfDay().before(getEndTimeOfDay())) { throw new SchedulerException("StartTimeOfDay " + startTimeOfDay + " should not come after endTimeOfDay " + endTimeOfDay);
public void updateWithNewCalendar(org.quartz.Calendar calendar, long misfireThreshold) nextFireTime = getFireTimeAfter(previousFireTime); while (nextFireTime != null && !calendar.isTimeIncluded(nextFireTime.getTime())) { nextFireTime = getFireTimeAfter(nextFireTime); long diff = now.getTime() - nextFireTime.getTime(); if(diff >= misfireThreshold) { nextFireTime = getFireTimeAfter(nextFireTime);
public void setStartTimeOfDay(TimeOfDay startTimeOfDay) { if (startTimeOfDay == null) { throw new IllegalArgumentException("Start time of day cannot be null"); } TimeOfDay eTime = getEndTimeOfDay(); if (eTime != null && eTime.before(startTimeOfDay)) { throw new IllegalArgumentException( "End time of day cannot be before start time of day"); } this.startTimeOfDay = startTimeOfDay; }
/** * <p> * Determines whether or not the <code>DailyTimeIntervalTrigger</code> will occur * again. * </p> */ @Override public boolean mayFireAgain() { return (getNextFireTime() != null); }
SimplePropertiesTriggerProperties props = new SimplePropertiesTriggerProperties(); props.setInt1(dailyTrigger.getRepeatInterval()); props.setString1(dailyTrigger.getRepeatIntervalUnit().name()); props.setInt2(dailyTrigger.getTimesTriggered()); Set<Integer> days = dailyTrigger.getDaysOfWeek(); String daysStr = join(days, ","); props.setString2(daysStr); TimeOfDay startTimeOfDay = dailyTrigger.getStartTimeOfDay(); if (startTimeOfDay != null) { timeOfDayBuffer.append(startTimeOfDay.getHour()).append(","); timeOfDayBuffer.append(",,,"); TimeOfDay endTimeOfDay = dailyTrigger.getEndTimeOfDay(); if (endTimeOfDay != null) { timeOfDayBuffer.append(endTimeOfDay.getHour()).append(","); props.setLong1(dailyTrigger.getRepeatCount());
/** * Get a {@link ScheduleBuilder} that is configured to produce a * schedule identical to this trigger's schedule. * * @see #getTriggerBuilder() */ @Override public ScheduleBuilder<DailyTimeIntervalTrigger> getScheduleBuilder() { DailyTimeIntervalScheduleBuilder cb = DailyTimeIntervalScheduleBuilder.dailyTimeIntervalSchedule() .withInterval(getRepeatInterval(), getRepeatIntervalUnit()) .onDaysOfTheWeek(getDaysOfWeek()).startingDailyAt(getStartTimeOfDay()).endingDailyAt(getEndTimeOfDay()); switch(getMisfireInstruction()) { case MISFIRE_INSTRUCTION_DO_NOTHING : cb.withMisfireHandlingInstructionDoNothing(); break; case MISFIRE_INSTRUCTION_FIRE_ONCE_NOW : cb.withMisfireHandlingInstructionFireAndProceed(); break; } return cb; }
Date fireTime = advanceToNextDayOfWeekIfNecessary(afterTime, afterTimePastEndTimeOfDay); if (fireTime == null) return null; long startMillis = fireTimeStartDate.getTime(); long secondsAfterStart = (fireMillis - startMillis) / 1000L; long repeatLong = getRepeatInterval(); Calendar sTime = createCalendarTime(fireTimeStartDate); IntervalUnit repeatUnit = getRepeatIntervalUnit(); if(repeatUnit.equals(IntervalUnit.SECOND)) { long jumpCount = secondsAfterStart / repeatLong; if(secondsAfterStart % repeatLong != 0) jumpCount++; sTime.add(Calendar.SECOND, getRepeatInterval() * (int)jumpCount); fireTime = sTime.getTime(); } else if(repeatUnit.equals(IntervalUnit.MINUTE)) { if(secondsAfterStart % (repeatLong * 60L) != 0) jumpCount++; sTime.add(Calendar.MINUTE, getRepeatInterval() * (int)jumpCount); fireTime = sTime.getTime(); } else if(repeatUnit.equals(IntervalUnit.HOUR)) { if(secondsAfterStart % (repeatLong * 60L * 60L) != 0) jumpCount++; sTime.add(Calendar.HOUR_OF_DAY, getRepeatInterval() * (int)jumpCount); fireTime = sTime.getTime(); fireTime = advanceToNextDayOfWeekIfNecessary(fireTime, isSameDay(fireTime, fireTimeEndDate));
TimeOfDay sTimeOfDay = getStartTimeOfDay(); Date fireTimeStartDate = sTimeOfDay.getTimeOfDayForDate(fireTime); Calendar fireTimeStartDateCal = createCalendarTime(fireTimeStartDate); int dayOfWeekOfFireTime = fireTimeStartDateCal.get(Calendar.DAY_OF_WEEK); Set<Integer> daysOfWeekToFire = getDaysOfWeek(); if (forceToAdvanceNextDay || !daysOfWeekToFire.contains(dayOfWeekOfFireTime)) { Date eTime = getEndTime(); if (eTime != null && fireTime.getTime() > eTime.getTime()) { return null;
int instr = getMisfireInstruction(); 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 computeFirstFireTime(org.quartz.Calendar calendar) { nextFireTime = getFireTimeAfter(new Date(getStartTime().getTime() - 1000L)); && !calendar.isTimeIncluded(nextFireTime.getTime())) { nextFireTime = getFireTimeAfter(nextFireTime);
if (getEndTimeOfDay() != null && !getStartTimeOfDay().before(getEndTimeOfDay())) { throw new SchedulerException("StartTimeOfDay " + startTimeOfDay + " should not come after endTimeOfDay " + endTimeOfDay);