001package org.javasimon.console.action; 002 003import org.javasimon.Sample; 004import org.javasimon.console.ActionContext; 005 006import java.io.IOException; 007import java.io.PrintWriter; 008 009/** 010 * Export Simons as a flat CSV table. 011 * 012 * @author gquintana 013 */ 014public class TableCsvAction extends AbstractTableAction { 015 016 public static final String PATH = "/data/table.csv"; 017 018 /** 019 * Column separator (defaults to comma). 020 */ 021 private static final String columnSeparator = ","; 022 023 /** 024 * Row separator (defaults to CRLF). 025 */ 026 private static final String rowSeparator = "\r\n"; 027 028 public TableCsvAction(ActionContext context) { 029 super(context, "text/csv"); 030 stringifierFactory = new CsvStringifierFactory(); 031 } 032 033 @Override 034 protected void printHeaderRow(PrintWriter writer) throws IOException { 035 super.printHeaderRow(writer); 036 printEndOfLine(writer); 037 } 038 039 @Override 040 protected void printBodyRow(Sample sample, PrintWriter writer) throws IOException { 041 super.printBodyRow(sample, writer); 042 printEndOfLine(writer); 043 } 044 045 @Override 046 protected void printCell(Column column, String s, PrintWriter writer) throws IOException { 047 super.printCell(column, s, writer); 048 writer.write(columnSeparator); 049 } 050 051 private void printEndOfLine(PrintWriter writer) { 052 writer.write(rowSeparator); 053 } 054}