package org.oddjob.schedules.regression; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.TimeZone; import org.oddjob.OddjobDescriptorFactory; import org.oddjob.arooa.ArooaDescriptor; import org.oddjob.arooa.ArooaSession; import org.oddjob.arooa.parsing.ArooaElement; import org.oddjob.arooa.registry.ComponentPool; import org.oddjob.arooa.standard.StandardArooaParser; import org.oddjob.arooa.xml.XMLConfiguration; /** * */ public class ScheduleTester { private List<SingleTestSchedule> tests = new ArrayList<SingleTestSchedule>(); private TimeZone tz; private String config; private ArooaSession session; public void setTest(int index, SingleTestSchedule test ) { tests.add(index, test); } public ScheduleTester(String configFile) throws Exception { this(configFile, null); } public ScheduleTester(String configFile, TimeZone timeZone) throws Exception { this.config = configFile; // because of eclipse. if ("testNone".equals(configFile)) { return; } this.tz = timeZone; InputStream in = this.getClass().getResourceAsStream(configFile); ArooaDescriptor descriptor = new OddjobDescriptorFactory().createDescriptor(null); StandardArooaParser parser = new StandardArooaParser( this, descriptor); parser.setExpectedDocumentElement( new ArooaElement("schedule-tester")); parser.parse( new XMLConfiguration(configFile, in)); session = parser.getSession(); session.getComponentPool().configure(this); } public void run() { TimeZone.setDefault(tz); for (SingleTestSchedule schedule: tests) { schedule.run(); } ComponentPool pool = session.getComponentPool(); pool.contextFor(this).getRuntime().destroy(); } public String toString() { return config; } }