in src/java/org/apache/turbine/services/schedule/AbstractJobEntry.java [207:292]
public void calcRunTime()
throws TurbineException
{
Calendar schedrun = Calendar.getInstance();
Calendar now = Calendar.getInstance();
switch (evaluateJobType())
{
case SECOND:
// SECOND (every so many seconds...)
schedrun.add(Calendar.SECOND, getSecond());
runtime = schedrun.getTime().getTime();
break;
case MINUTE:
// MINUTE (every so many minutes...)
schedrun.add(Calendar.SECOND, getSecond());
schedrun.add(Calendar.MINUTE, getMinute());
runtime = schedrun.getTime().getTime();
break;
case WEEK_DAY:
// WEEKDAY (day of the week)
schedrun.set(Calendar.SECOND, getSecond());
schedrun.set(Calendar.MINUTE, getMinute());
schedrun.set(Calendar.HOUR_OF_DAY, getHour());
schedrun.set(Calendar.DAY_OF_WEEK, getWeekDay());
if (now.before(schedrun))
{
// Scheduled time has NOT expired.
runtime = schedrun.getTime().getTime();
}
else
{
// Scheduled time has expired; roll to the next week.
schedrun.add(Calendar.DAY_OF_WEEK, 7);
runtime = schedrun.getTime().getTime();
}
break;
case DAY_OF_MONTH:
// DAY_OF_MONTH (date of the month)
schedrun.set(Calendar.SECOND, getSecond());
schedrun.set(Calendar.MINUTE, getMinute());
schedrun.set(Calendar.HOUR_OF_DAY, getHour());
schedrun.set(Calendar.DAY_OF_MONTH, getDayOfMonth());
if (now.before(schedrun))
{
// Scheduled time has NOT expired.
runtime = schedrun.getTime().getTime();
}
else
{
// Scheduled time has expired; roll to the next month.
schedrun.add(Calendar.MONTH, 1);
runtime = schedrun.getTime().getTime();
}
break;
case DAILY:
// DAILY (certain hour:minutes of the day)
schedrun.set(Calendar.SECOND, getSecond());
schedrun.set(Calendar.MINUTE, getMinute());
schedrun.set(Calendar.HOUR_OF_DAY, getHour());
// Scheduled time has NOT expired.
if (now.before(schedrun))
{
runtime = schedrun.getTime().getTime();
}
else
{
// Scheduled time has expired; roll forward 24 hours.
schedrun.add(Calendar.HOUR_OF_DAY, 24);
runtime = schedrun.getTime().getTime();
}
break;
default:
// Do nothing.
}
log.info("Next runtime for task {} is {}", this::getTask, this::getNextRunDate);
}