view flys-artifacts/src/main/java/de/intevation/flys/exports/StepCSVWriter.java @ 4890:bf38ea4cb0f7

Added bodies to macros. Use the bodies of <dc:call-macro><body></dc:call-macro> as <dc:macro-body/> in tthe macro. Example: <dc:macro name="greet"><hello><dc:macro-body/></hello></dc:macro> <dc:call-macro name="greet"><planet>Earth</planet></dc:call-macro> Result: <hello><panet>Earth</planet></hello>
author Sascha L. Teichmann <teichmann@intevation.de>
date Mon, 28 Jan 2013 18:55:55 +0100
parents 475dd07c2cb1
children
line wrap: on
line source
package de.intevation.flys.exports;

import au.com.bytecode.opencsv.CSVWriter;

import java.util.ArrayList;
import java.util.Arrays;

/**
 * Class to overcome shortcoming of CSVWriter to accept String-Arrays only.
 * The StepCSVWriter buffers incoming values, such that rows in a csv can be
 * created more dynamically. Do not forget to call flush().
 */
public class StepCSVWriter {

    /** Writer to use when calling flush. */
    CSVWriter writer = null;
    /** Buffer of strings (values). */
    ArrayList<String> buffer;


    /** Trivial constructor. */
    public StepCSVWriter() {
        buffer = new ArrayList<String>();
    }


    /** Set writer. */
    public void setCSVWriter(CSVWriter writer) {
        this.writer = writer;
    }


    /** Add a value to next flush. */
    public void addNext(String value) {
        buffer.add(value);
    }


    /** Add many values to next flush. */
    public void addNexts(String ... values) {
        buffer.addAll(Arrays.asList(values));
    }


    /** Write the row with csvwriter. */
    public void flush() {
        writer.writeNext(buffer.toArray(new String[buffer.size()]));
        buffer.clear();
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org