CSV Writer
/*
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();
}
Related examples in the same category