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 FormatHTML extends FormatBase {
private Logger logger = Logger.getLogger(FormatHTML.class);
protected String headerFieldSeparator;
protected String postHeaderFieldSeparator;
public void setHeaderFieldSeparator(String headerFieldSeparator) {
this.headerFieldSeparator = headerFieldSeparator;
}
public void setPostHeaderFieldSeparator(String postHeaderFieldSeparator) {
this.postHeaderFieldSeparator = postHeaderFieldSeparator;
}
public FormatHTML() {
super();
fieldSeparator = "<td>";
postFieldSeparator = "</td>";
recordSeparator = "<tr>";
postRecordSeparator = "</tr>";
headerFieldSeparator = "<th>";
postHeaderFieldSeparator = "</th>";
String n = "\n";
this.headerContentStart = "<html><head><title>GeneDB export results</title>" +
"<style>" + n +
"table { " + n +
" border-collapse: collapse;" + n +
" border-width:1px;" + n +
" border-spacing:2px;" + n +
"} " + n +
"td, tr { " + n +
" padding: 5px;" + n +
"} " + n +
"table, td, th, tr { " + n +
" border: 1px solid black; " + n +
"} " + n +
"</style></head><body><table>";
this.footerContentStart = "</table></body></html>";
}
@Override
public void formatBody(List<GeneDetail> entries) throws IOException {
logger.info(String.format("Formatting separators : %s %s %s %s", fieldSeparator, postFieldSeparator, recordSeparator, postRecordSeparator));
for (GeneDetail entry : entries) {
writer.append(recordSeparator);
for (String fieldValue : getFieldValues(getExtractor(entry), outputOptions)) {
writer.append(fieldSeparator);
writer.append(fieldValue);
writer.append(postFieldSeparator);
}
writer.append(postRecordSeparator);
}
}
@Override
public void formatHeader() throws IOException {
writer.append(headerContentStart);
if (header) {
writer.append(recordSeparator);
for (OutputOption outputOption : outputOptions) {
writer.append(headerFieldSeparator);
writer.append(outputOption.name());
writer.append(postHeaderFieldSeparator);
}
writer.append(postRecordSeparator);
}
}
@Override
public void formatFooter() throws IOException {
writer.append(footerContentStart);
}
}