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: TableReportDataFactory.java 3525 2007-10-16 11:43:48Z tmorgner $
027: * ------------
028: * (C) Copyright 2000-2005, by Object Refinery Limited.
029: * (C) Copyright 2005-2007, by Pentaho Corporation.
030: */package org.jfree.report;
031:
032: import java.util.HashMap;
033: import javax.swing.table.TableModel;
034:
035: /**
036: * Creation-Date: 21.02.2006, 17:59:32
037: *
038: * @author Thomas Morgner
039: */
040: public class TableReportDataFactory implements ReportDataFactory,
041: Cloneable {
042: private HashMap tables;
043:
044: public TableReportDataFactory() {
045: this .tables = new HashMap();
046: }
047:
048: public TableReportDataFactory(final String name,
049: final TableModel tableModel) {
050: this ();
051: addTable(name, tableModel);
052: }
053:
054: public void addTable(final String name, final TableModel tableModel) {
055: tables.put(name, tableModel);
056: }
057:
058: public void removeTable(final String name) {
059: tables.remove(name);
060: }
061:
062: /**
063: * Queries a datasource. The string 'query' defines the name of the query. The
064: * Parameterset given here may contain more data than actually needed.
065: * <p/>
066: * The dataset may change between two calls, do not assume anything!
067: *
068: * @param query the name of the table.
069: * @param parameters are ignored for this factory.
070: * @return the report data or null.
071: */
072: public ReportData queryData(final String query,
073: final DataSet parameters) throws ReportDataFactoryException {
074: final TableModel model = (TableModel) tables.get(query);
075: if (model == null) {
076: return null;
077: }
078:
079: return new TableReportData(model);
080: }
081:
082: public void open() {
083:
084: }
085:
086: public void close() {
087:
088: }
089:
090: /**
091: * Derives a freshly initialized report data factory, which is independend of
092: * the original data factory. Opening or Closing one data factory must not
093: * affect the other factories.
094: *
095: * @return
096: */
097: public ReportDataFactory derive() {
098: try {
099: return (ReportDataFactory) clone();
100: } catch (CloneNotSupportedException e) {
101: throw new IllegalStateException("Clone should not fail.");
102: }
103: }
104:
105: public Object clone() throws CloneNotSupportedException {
106: final TableReportDataFactory dataFactory = (TableReportDataFactory) super
107: .clone();
108: dataFactory.tables = (HashMap) tables.clone();
109: return dataFactory;
110: }
111: }
|