package eu.choreos.vv.data.convertion.xml; import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import eu.choreos.vv.data.ExperimentReport; import eu.choreos.vv.data.ReportData; public class ExperimentReportXML extends XMLConverter<ExperimentReport> { public static final String REPORT = "report"; public static final String EXPERIMENT = "experiment"; public static final String MEASUREMENT_UNIT = "measurementUnit"; public static final String NAME = "name"; public static final String PARAMETER_LABELS = "parameterLabels"; public static final String LABEL = "label"; public static final String DATA = "data"; public static final String ITERATION = "iteration"; public static final String SEQUENCE = "sequence"; public static final String START_TIME = "startTime"; public static final String END_TIME = "endTime"; public ExperimentReportXML(PrintWriter writer) { super(writer); } @Override public void convert(ExperimentReport report) { header(report); writeReport(report); super.convert(report); } private void writeReport(ExperimentReport report) { openTag(REPORT); writeName(report); writeMeasurementUnit(report); writeParameterLabels(report); openTag(DATA); for(int iteration: report.keySet()) { writeIteration(iteration, report.get(iteration)); } closeTag(DATA); closeTag(REPORT); } private void writeIteration(int iteration, ReportData reportData) { Map<String, String> param = new HashMap<String, String>(); param.put(SEQUENCE, ""+iteration); param.put(START_TIME, reportData.getStartTime().toString()); param.put(END_TIME, reportData.getEndTime().toString()); openTag(ITERATION, param); // writeIterationOrder(iteration); writeReportData(reportData); closeTag(ITERATION); } private void writeReportData(ReportData reportData) { ReportDataXML reportDataXML = new ReportDataXML(this.getWriter()); reportDataXML.convert(reportData); } private void writeParameterLabels(ExperimentReport report) { openTag(PARAMETER_LABELS); writeList(LABEL, report.getParameterLabels()); closeTag(PARAMETER_LABELS); } private void writeMeasurementUnit(ExperimentReport report) { openTag(MEASUREMENT_UNIT); value(report.getMeasurementUnit()); closeTag(MEASUREMENT_UNIT); } private void writeName(ExperimentReport report) { openTag(NAME); value(report.getName().toString()); closeTag(NAME); } private void header(ExperimentReport report) { } }