package edu.usc.enl.dynamicmeasurement.model.event;
import edu.usc.enl.dynamicmeasurement.algorithms.tasks.Task2;
import edu.usc.enl.dynamicmeasurement.data.ConfigReader;
import edu.usc.enl.dynamicmeasurement.data.trace.FilterTraceMapping;
import edu.usc.enl.dynamicmeasurement.util.Util;
import org.w3c.dom.Element;
/**
* Created with IntelliJ IDEA.
* User: masoud
* Date: 9/2/13
* Time: 10:23 AM <br/>
* Adds a task that reads traces
*/
public class AddTraceTaskEvent extends TaskEvent {
protected FilterTraceMapping mapping;
public AddTraceTaskEvent(Element element) {
super(element);
}
public void setMapping(FilterTraceMapping mapping) {
this.mapping = mapping;
}
@Override
public void run() throws Exception {
Task2 task = getTask();
task.setTraceReader(mapping.getInputTrace(task.getFilter()).getTaskTraceReader(task.getFilter(), getEpoch(), false));
handler.addTask(task, getEpoch());
}
protected Task2 getTask() throws InstantiationException, IllegalAccessException, java.lang.reflect.InvocationTargetException, NoSuchMethodException, ClassNotFoundException {
Element e = Util.getChildrenProperties(element, "Property").values().iterator().next();
return (Task2) Class.forName(e.getAttribute(ConfigReader.PROPERTY_VALUE)).getConstructor(Element.class).newInstance(e);
}
}