package experiments.evaluation; import java.io.FileWriter; import java.io.IOException; import java.util.LinkedList; import java.util.List; import au.com.bytecode.opencsv.CSVWriter; public class Output { private List<StatisticalMeasure> measures; private CSVWriter writer; private CSVWriter writeSingleQuery; public Output() { try { writer = new CSVWriter(new FileWriter(StartEvaluation.csvFile), '\t'); if(StartEvaluation.singleQueryFile != null) { writeSingleQuery = new CSVWriter(new FileWriter(StartEvaluation.singleQueryFile), '\t'); } } catch (IOException e) { e.printStackTrace(); } measures = new LinkedList<StatisticalMeasure>(); } public void print() { System.out.println("---SYSTEM OUTPUT---"); for (int i = 0; i < measures.size(); i++) { String[] names = measures.get(i).getNames(); for (int j = 0; j < names.length; j++) { double[] vals = measures.get(i).getResult(); System.out.println(names[j] + ": " + vals[j]); } } } public void printCSVHeader() { List<String> strings = new LinkedList<String>(); strings.add("Experiment"); for (int i = 0; i < measures.size(); i++) { String[] names = measures.get(i).getNames(); for (int j = 0; j < names.length; j++) { strings.add(names[j]); } } String[] arr = new String[strings.size()]; strings.toArray(arr); writer.writeNext(arr); } public void printCSV(String experiment) { List<String> vals = new LinkedList<String>(); vals.add(experiment); for (int i = 0; i < measures.size(); i++) { double[] numbers = measures.get(i).getResult(); for (int j = 0; j < numbers.length; j++) { vals.add(String.valueOf(numbers[j])); } } String[] arr = new String[vals.size()]; vals.toArray(arr); writer.writeNext(arr); measures.clear(); } public void addMeasure(StatisticalMeasure me) { measures.add(me); } public void printSingleQueryHeader() { List<String> strings = new LinkedList<String>(); strings.add("Querynumber"); for (int i = 0; i < measures.size(); i++) { String[] names = measures.get(i).getNames(); for (int j = 0; j < names.length; j++) { strings.add(names[j]); } } String[] arr = new String[strings.size()]; strings.toArray(arr); writeSingleQuery.writeNext(arr); measures.clear(); } public void writeSingleQuery(String query) { List<String> lst = new LinkedList<String>(); lst.add(query); for (int i = 0; i < measures.size(); i++) { double[] numbers = measures.get(i).getQueryResult(); for (int j = 0; j < numbers.length; j++) { lst.add(String.valueOf(numbers[j])); } } String[] arr = new String[lst.size()]; lst.toArray(arr); writeSingleQuery.writeNext(arr); } public void clearMeasures() { measures.clear(); } public void close() { try { writer.close(); if(writeSingleQuery != null) { writeSingleQuery.close(); } } catch (IOException e) { e.printStackTrace(); } } }