package org.genedb.web.mvc.controller.download; import java.io.IOException; import java.util.List; import org.apache.log4j.Logger; import org.genedb.querying.tmpquery.GeneDetail; public class FormatCSV extends FormatBase { private Logger logger = Logger.getLogger(FormatCSV.class); public FormatCSV() { super(); this.postRecordSeparator = "\n"; this.headerContentStart = "#"; } @Override public void formatBody(List<GeneDetail> entries) throws IOException { logger.error(String.format("Formatting with separator '%s' and internal '%s'.", fieldSeparator, fieldInternalSeparator)); for (GeneDetail entry: entries) { boolean first = true; for (String fieldValue : getFieldValues(getExtractor(entry), outputOptions)) { if (! first) { writer.append(fieldSeparator); } else { first = false; } writer.append(fieldValue); } writer.append(postRecordSeparator); } } @Override public void formatHeader() throws IOException { boolean first = true; if (header) { writer.append(headerContentStart); for (OutputOption outputOption : outputOptions) { if (! first) { writer.append(this.fieldSeparator); } else { first = false; } writer.append(outputOption.name()); } writer.append(postRecordSeparator); } } @Override public void formatFooter() throws IOException { // blank } }