package hudson.drools;
import hudson.Extension;
import hudson.model.Hudson;
import hudson.model.PeriodicWork;
import hudson.triggers.TimerTrigger;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* Runs every minute to check {@link TimerTrigger} and schedules build.
*/
@Extension
public class Cron extends PeriodicWork {
private final Calendar cal = new GregorianCalendar();
public long getRecurrencePeriod() {
return MIN;
}
public void doRun() {
while (new Date().getTime() - cal.getTimeInMillis() > 1000) {
try {
checkTriggers(cal);
} catch (Throwable e) {
e.printStackTrace();
}
cal.add(Calendar.MINUTE, 1);
}
}
public static void checkTriggers(final Calendar cal) {
Hudson inst = Hudson.getInstance();
for (DroolsProject p : inst.getAllItems(DroolsProject.class)) {
if (p.getTabs() != null) {
if (p.getTabs().check(cal)) {
p.scheduleBuild(new TimerTrigger.TimerTriggerCause());
}
}
}
}
}