package org.jenkinsci.plugins.parameterizedschedular;
import hudson.scheduler.CronTabList;
import hudson.scheduler.Hash;
import hudson.scheduler.Messages;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import antlr.ANTLRException;
/**
* mostly a copy of {@link CronTabList}
*
* @author jameswilson
*
*/
public class ParameterizedCronTabList {
private final List<ParameterizedCronTab> cronTabs;
public ParameterizedCronTabList(List<ParameterizedCronTab> cronTabs) {
this.cronTabs = cronTabs;
}
public static ParameterizedCronTabList create(String cronTabSpecification) throws ANTLRException {
return create(cronTabSpecification, null);
}
public static ParameterizedCronTabList create(String cronTabSpecification, Hash hash) throws ANTLRException {
List<ParameterizedCronTab> result = new ArrayList<ParameterizedCronTab>();
int lineNumber = 0;
for (String line : cronTabSpecification.split("\\r?\\n")) {
lineNumber++;
line = line.trim();
if (line.length() == 0 || line.startsWith("#"))
continue; // ignorable line
try {
result.add(ParameterizedCronTab.create(line, lineNumber, hash));
} catch (ANTLRException e) {
throw new ANTLRException(Messages.CronTabList_InvalidInput(line, e.toString()), e);
}
}
return new ParameterizedCronTabList(result);
}
public ParameterizedCronTab check(Calendar calendar) {
for (ParameterizedCronTab tab : cronTabs) {
if (tab.check(calendar))
return tab;
}
return null;
}
public String checkSanity() {
for (ParameterizedCronTab tab : cronTabs) {
String s = tab.checkSanity();
if (s != null)
return s;
}
return null;
}
}