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}