Frames | No Frames |
1: /** 2: * ======================================== 3: * JFreeReport : a free Java report library 4: * ======================================== 5: * 6: * Project Info: http://reporting.pentaho.org/ 7: * 8: * (C) Copyright 2000-2007, by Object Refinery Limited, Pentaho Corporation and Contributors. 9: * 10: * This library is free software; you can redistribute it and/or modify it under the terms 11: * of the GNU Lesser General Public License as published by the Free Software Foundation; 12: * either version 2.1 of the License, or (at your option) any later version. 13: * 14: * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 15: * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16: * See the GNU Lesser General Public License for more details. 17: * 18: * You should have received a copy of the GNU Lesser General Public License along with this 19: * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, 20: * Boston, MA 02111-1307, USA. 21: * 22: * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 23: * in the United States and other countries.] 24: * 25: * ------------ 26: * $Id: TableReportDataFactory.java 3525 2007-10-16 11:43:48Z tmorgner $ 27: * ------------ 28: * (C) Copyright 2000-2005, by Object Refinery Limited. 29: * (C) Copyright 2005-2007, by Pentaho Corporation. 30: */ 31: package org.jfree.report; 32: 33: import java.util.HashMap; 34: import javax.swing.table.TableModel; 35: 36: /** 37: * Creation-Date: 21.02.2006, 17:59:32 38: * 39: * @author Thomas Morgner 40: */ 41: public class TableReportDataFactory implements ReportDataFactory, Cloneable 42: { 43: private HashMap tables; 44: 45: public TableReportDataFactory() 46: { 47: this.tables = new HashMap(); 48: } 49: 50: public TableReportDataFactory(final String name, final TableModel tableModel) 51: { 52: this(); 53: addTable(name, tableModel); 54: } 55: 56: public void addTable(final String name, final TableModel tableModel) 57: { 58: tables.put(name, tableModel); 59: } 60: 61: public void removeTable(final String name) 62: { 63: tables.remove(name); 64: } 65: 66: /** 67: * Queries a datasource. The string 'query' defines the name of the query. The 68: * Parameterset given here may contain more data than actually needed. 69: * <p/> 70: * The dataset may change between two calls, do not assume anything! 71: * 72: * @param query the name of the table. 73: * @param parameters are ignored for this factory. 74: * @return the report data or null. 75: */ 76: public ReportData queryData(final String query, final DataSet parameters) 77: throws ReportDataFactoryException 78: { 79: final TableModel model = (TableModel) tables.get(query); 80: if (model == null) 81: { 82: return null; 83: } 84: 85: return new TableReportData(model); 86: } 87: 88: public void open() 89: { 90: 91: } 92: 93: public void close() 94: { 95: 96: } 97: 98: /** 99: * Derives a freshly initialized report data factory, which is independend of 100: * the original data factory. Opening or Closing one data factory must not 101: * affect the other factories. 102: * 103: * @return 104: */ 105: public ReportDataFactory derive() 106: { 107: try 108: { 109: return (ReportDataFactory) clone(); 110: } 111: catch (CloneNotSupportedException e) 112: { 113: throw new IllegalStateException("Clone should not fail."); 114: } 115: } 116: 117: public Object clone () throws CloneNotSupportedException 118: { 119: final TableReportDataFactory dataFactory = (TableReportDataFactory) super.clone(); 120: dataFactory.tables = (HashMap) tables.clone(); 121: return dataFactory; 122: } 123: }