CSVWriter.java Source code

Java tutorial

Introduction

Here is the source code for CSVWriter.java

Source

/*
PearReview - The peer review assistant.
Copyright (C) 2009  Dimitrij Pankratz, Anton Musichin
http://www.pearreview.com, info@pearreview.com
    
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
    
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
    
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

//package com.pearreview.util.csv;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Serializable;

public class CSVWriter implements Serializable {
    private static final long serialVersionUID = 2444199148253681816L;

    public static final char COMMA_SEPARATOR = 0x2C;
    public static final char COLON_SEPARATOR = 0x3A;
    public static final char SEMICOLON_SEPARATOR = 0x3B;
    public static final char TABULATOR_SEPARATOR = 0x09;

    /**
     * Writes a table model to csv formatted file
     * 
     * @param file
     *            file to create
     * @param model
     *            model to write
     * @throws IOException
     */
    public void write(File file, CSVTableModel model, char separator) throws IOException {
        /* create file */
        FileWriter fw = new FileWriter(file);
        BufferedWriter bw = new BufferedWriter(fw);

        String value;

        /* write columns */
        if (model.areColumnsVisible()) {
            for (int column = 0; column < model.getColumnCount(); column++) {
                value = encodeValue(model.getColumnName(column), separator);
                bw.write(value);
                if (column < model.getColumnCount() - 1) {
                    bw.write(separator);
                } else {
                    bw.newLine();
                }
            }
        }

        /* write data */
        for (int row = 0; row < model.getRowCount(); row++) {
            for (int column = 0; column < model.getColumnCount(); column++) {
                value = encodeValue(model.getValueAt(row, column), separator);
                bw.write(value);
                if (column < model.getColumnCount() - 1) {
                    bw.write(separator);
                } else {
                    bw.newLine();
                }
            }
        }

        /* close file */
        bw.close();
    }

    protected String encodeValue(String value, char separator) {
        return "\"" + value + "\"";
    }
}

interface CSVTableModel {
    public String getValueAt(int row, int column);

    public int getColumnCount();

    public int getRowCount();

    public String getColumnName(int column);

    public boolean areColumnsVisible();
}