package ie.dcu.apps.ist.exp; import java.io.*; public class ExperimentResults { private static final String XML_HEADER = "%n%n"; private static final String BEGIN_EXPERIMENT_TAG = "%n"; private static final String BEGIN_TASK_TAG = " %n"; private static final String BEGIN_EVALUATION_TAG = " %n"; private static final String MEASURE_TAG = " %n"; private static final String END_EVALUATION_TAG = " %n"; private static final String END_TASK_TAG = " %n"; private static final String END_EXPERIMENT_TAG = "%n"; private final PrintStream out; ExperimentResults(File file) throws FileNotFoundException { this(new FileOutputStream(file)); } ExperimentResults(OutputStream out) { this.out = new PrintStream(new BufferedOutputStream(out)); } public void beginDocument() { write(XML_HEADER); } public void beginExperiment(Experiment ex) { String dir = ex.getDirectory().getAbsolutePath(); write(BEGIN_EXPERIMENT_TAG, ex.getName(), ex.getTime(), dir); } public void beginTask(int idx, Task task) { String im = task.getImageFile().getName(); String gt = task.getMaskFile().getName(); write(BEGIN_TASK_TAG, idx, im, gt); } public void beginEvaluation(int time) { write(BEGIN_EVALUATION_TAG, time); } public void endEvaluation() { write(END_EVALUATION_TAG); } public void addMeasure(String name, double value) { write(MEASURE_TAG, name, value); } public void endTask() { write(END_TASK_TAG); } public void endExperiment() { write(END_EXPERIMENT_TAG); } public void endDocument() throws IOException { flush(); } public void flush() throws IOException { out.flush(); if (out.checkError()) { throw new IOException(); } } public void close() { out.close(); } private void write(String format, Object ... args) { out.printf(format, args); } }