package fitnesse.responders.run.formatters;
import java.io.IOException;
import java.io.Writer;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import util.TimeMeasurement;
import fitnesse.FitNesseContext;
import fitnesse.responders.run.TestPage;
import fitnesse.wiki.WikiPage;
public class SuiteHistoryFormatter extends SuiteExecutionReportFormatter {
private Writer writer;
private XmlFormatter.WriterFactory writerFactory;
private long suiteTime = 0;
public SuiteHistoryFormatter(FitNesseContext context, final WikiPage page, Writer writer) throws Exception {
super(context, page);
this.writer = writer;
}
@Override
public void newTestStarted(TestPage test, TimeMeasurement timeMeasurement) {
if (suiteTime == 0)
suiteTime = timeMeasurement.startedAt();
super.newTestStarted(test, timeMeasurement);
}
public SuiteHistoryFormatter(FitNesseContext context, WikiPage page, XmlFormatter.WriterFactory source) {
super(context, page);
writerFactory = source;
}
@Override
public void allTestingComplete(TimeMeasurement totalTimeMeasurement) throws IOException {
super.allTestingComplete(totalTimeMeasurement);
if (writerFactory != null)
writer = writerFactory.getWriter(context, page, getPageCounts(), suiteTime);
VelocityContext velocityContext = new VelocityContext();
velocityContext.put("suiteExecutionReport", suiteExecutionReport);
VelocityEngine velocityEngine = context.pageFactory.getVelocityEngine();
Template template = velocityEngine.getTemplate("suiteHistoryXML.vm");
template.merge(velocityContext, writer);
writer.close();
}
}