package no.difi.datahotel.util.formater; import java.io.ByteArrayOutputStream; import java.util.List; import java.util.Map; import no.difi.datahotel.model.Result; import no.difi.datahotel.util.CSVWriter; import no.difi.datahotel.util.FormaterInterface; import no.difi.datahotel.util.RequestContext; /** * Class for formatting objects into representable CSV data. */ public class CSVFormater implements FormaterInterface { public String format(Object object, RequestContext context) throws Exception { if (object instanceof Result) { List<Map<String, String>> data = ((Result) object).getEntries(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); CSVWriter writer = new CSVWriter(baos); writer.writeHeader(data.get(0).keySet().toArray(new String[0])); for (Map<String, String> row : data) writer.write(row.values().toArray(new String[0])); writer.close(); return baos.toString("UTF-8"); } throw new Exception("Unable to parse content."); } }