/* * JasperReports - Free Java Reporting Library. * Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved. * http://www.jaspersoft.com * * Unless you have purchased a commercial license agreement from Jaspersoft, * the following license terms apply: * * This program is part of JasperReports. * * JasperReports is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * JasperReports 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with JasperReports. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.jasperreports.engine.data; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.text.DateFormat; import java.text.NumberFormat; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JRDataSourceProvider; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRField; import net.sf.jasperreports.engine.JasperReport; /** * @author Ionut Nedelcu (ionutned@users.sourceforge.net) * @version $Id: JRCsvDataSourceProvider.java 3678 2010-04-02 12:13:06Z shertage $ */ public class JRCsvDataSourceProvider implements JRDataSourceProvider { private Reader reader; private DateFormat dateFormat; private char fieldDelimiter; private String recordDelimiter; private String[] columnNames; private NumberFormat numberFormat; /** * @param stream an input stream containing CSV data */ public JRCsvDataSourceProvider(InputStream stream) { this(new InputStreamReader(stream)); } /** * Builds a datasource instance. * @param file a file containing CSV data */ public JRCsvDataSourceProvider(File file) throws FileNotFoundException { this(new FileReader(file)); } /** * Builds a datasource instance. * @param reader a <tt>Reader</tt> instance, for reading the stream */ public JRCsvDataSourceProvider(Reader reader) { this.reader = reader; } /** * */ public boolean supportsGetFieldsOperation() { return false; } /** * */ public JRField[] getFields(JasperReport report) throws JRException, UnsupportedOperationException { return null; } /** * */ public JRDataSource create(JasperReport report) throws JRException { JRCsvDataSource ds; if (reader != null) { ds = new JRCsvDataSource(reader); } else { throw new JRException("Cannot find a source to read the data from"); } ds.setDateFormat(dateFormat); ds.setNumberFormat(numberFormat); ds.setFieldDelimiter(fieldDelimiter); ds.setRecordDelimiter(recordDelimiter); ds.setColumnNames(columnNames); return ds; } /** * */ public void dispose(JRDataSource dataSource) throws JRException { } public String[] getColumnNames() { return columnNames; } public void setColumnNames(String[] colNames) { if (colNames == null) { this.columnNames = null; } else { this.columnNames = new String[colNames.length]; System.arraycopy(colNames, 0, this.columnNames, 0, colNames.length); } } public DateFormat getDateFormat() { return dateFormat; } public void setDateFormat(DateFormat dateFormat) { this.dateFormat = dateFormat; } public char getFieldDelimiter() { return fieldDelimiter; } public void setFieldDelimiter(char fieldDelimiter) { this.fieldDelimiter = fieldDelimiter; } public String getRecordDelimiter() { return recordDelimiter; } public void setRecordDelimiter(String recordDelimiter) { this.recordDelimiter = recordDelimiter; } public NumberFormat getNumberFormat() { return numberFormat; } public void setNumberFormat(NumberFormat numberFormat) { this.numberFormat = numberFormat; } }