001: /**
002: * ========================================
003: * JFreeReport : a free Java report library
004: * ========================================
005: *
006: * Project Info: http://reporting.pentaho.org/
007: *
008: * (C) Copyright 2000-2007, by Object Refinery Limited, Pentaho Corporation and Contributors.
009: *
010: * This library is free software; you can redistribute it and/or modify it under the terms
011: * of the GNU Lesser General Public License as published by the Free Software Foundation;
012: * either version 2.1 of the License, or (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
015: * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016: * See the GNU Lesser General Public License for more details.
017: *
018: * You should have received a copy of the GNU Lesser General Public License along with this
019: * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
020: * Boston, MA 02111-1307, USA.
021: *
022: * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
023: * in the United States and other countries.]
024: *
025: * ------------
026: * $Id: CSVTableModel.java 3048 2007-07-28 18:02:42Z tmorgner $
027: * ------------
028: * (C) Copyright 2000-2005, by Object Refinery Limited.
029: * (C) Copyright 2005-2007, by Pentaho Corporation.
030: */package org.jfree.report.modules.misc.tablemodel;
031:
032: import javax.swing.table.AbstractTableModel;
033:
034: /**
035: * <code>TableModel</code> used by the <code>CSVTableModelProducer</code> class. It has a
036: * feature which generates the column name if it is not know.
037: *
038: * @author Mimil
039: * @see this.getColumnName()
040: */
041: public class CSVTableModel extends AbstractTableModel {
042:
043: private String[] columnNames = null;
044: private int rowCount = 0;
045: private int maxColumnCount = 0;
046: private Object[][] data;
047:
048: public CSVTableModel() {
049: }
050:
051: public Object[][] getData() {
052: return data;
053: }
054:
055: public void setData(final Object[][] data) {
056: this .data = data;
057: }
058:
059: public String[] getColumnNames() {
060: return columnNames;
061: }
062:
063: public void setColumnNames(final String[] columnNames) {
064: this .columnNames = columnNames;
065: }
066:
067: /**
068: * Counts columns of this <code>TableModel</code>.
069: *
070: * @return the column count
071: */
072: public int getColumnCount() {
073: if (this .columnNames != null) {
074: return columnNames.length;
075: }
076:
077: return this .maxColumnCount;
078: }
079:
080: /**
081: * Counts rows of this <code>TableModel</code>.
082: *
083: * @return the row count
084: */
085: public int getRowCount() {
086: return this .rowCount;
087: }
088:
089: /**
090: * Gets the Object at specified row and column positions.
091: *
092: * @param rowIndex row index
093: * @param columnIndex column index
094: * @return The requested Object
095: */
096: public Object getValueAt(final int rowIndex, final int columnIndex) {
097: final Object[] line = this .data[rowIndex];
098:
099: if (line.length < columnIndex) {
100: return null;
101: } else {
102: return line[columnIndex];
103: }
104: }
105:
106: /**
107: * Sets the maximum column count if it is bigger than the current one.
108: *
109: * @param maxColumnCount
110: */
111: public void setMaxColumnCount(final int maxColumnCount) {
112: if (this .maxColumnCount < maxColumnCount) {
113: this .maxColumnCount = maxColumnCount;
114: }
115: }
116:
117: public int getMaxColumnCount() {
118: return maxColumnCount;
119: }
120:
121: /**
122: * Return the column name at a specified position.
123: *
124: * @param column column index
125: * @return the column name
126: */
127: public String getColumnName(final int column) {
128: if (this .columnNames != null) {
129: return this .columnNames[column];
130: } else {
131: if (column >= this .maxColumnCount) {
132: throw new IllegalArgumentException("Column (" + column
133: + ") does not exist");
134: } else {
135: return "COLUMN_" + column;
136: }
137: }
138: }
139: }
|