package org.jactr.tools.experiment.parser.handlers; /* * default logging */ import org.jactr.tools.experiment.IDataLogger; import org.jactr.tools.experiment.IExperiment; import org.jactr.tools.experiment.impl.XMLDataLogger; import org.jactr.tools.experiment.parser.ExperimentParser; import org.jactr.tools.experiment.trial.ITrial; import org.w3c.dom.Element; public class DataLoggerHandler implements INodeHandler<ITrial> { public String getTagName() { return "data-logger"; } public ITrial process(Element element, IExperiment experiment) { String className = element.getAttribute("class"); // String path = experiment.getVariableResolver() // .resolve(element.getAttribute("path"), experiment.getVariableContext()) // .toString(); String path = experiment.getVariableResolver().resolveValues( element.getAttribute("path"), experiment.getVariableContext()); // String file = experiment.getVariableResolver() // .resolve(element.getAttribute("file"), experiment.getVariableContext()) // .toString(); String file = experiment.getVariableResolver().resolveValues( element.getAttribute("file"), experiment.getVariableContext()); IDataLogger collector = null; try { collector = (IDataLogger) getClass().getClassLoader() .loadClass(className).newInstance(); } catch (Exception e) { ExperimentParser.LOGGER.error("Could not create " + className + ", using default xml ", e); collector = new XMLDataLogger(); path = experiment.getVariableResolver() .resolve("${actrWorkingDir}/data", experiment.getVariableContext()) .toString(); } collector.setExperiment(experiment); collector.setPath(path, file); experiment.setDataCollector(collector); return null; } public boolean shouldDecend() { return false; } }