01: /**
02: * ========================================
03: * JFreeReport : a free Java report library
04: * ========================================
05: *
06: * Project Info: http://reporting.pentaho.org/
07: *
08: * (C) Copyright 2000-2007, by Object Refinery Limited, Pentaho Corporation and Contributors.
09: *
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: SQLReportDataFactory.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: */package org.jfree.report.modules.data.sql;
31:
32: import java.sql.Connection;
33: import java.util.HashMap;
34:
35: import org.jfree.report.DataSet;
36: import org.jfree.report.ReportData;
37: import org.jfree.report.ReportDataFactoryException;
38:
39: /**
40: * Creation-Date: 19.02.2006, 17:37:33
41: *
42: * @author Thomas Morgner
43: */
44: public class SQLReportDataFactory extends SimpleSQLReportDataFactory {
45: private HashMap querymappings;
46:
47: public SQLReportDataFactory(final Connection connection) {
48: super (connection);
49: querymappings = new HashMap();
50: }
51:
52: public SQLReportDataFactory(
53: final ConnectionProvider connectionProvider) {
54: super (connectionProvider);
55: querymappings = new HashMap();
56: }
57:
58: public void setQuery(final String name, final String queryString) {
59: if (queryString == null) {
60: querymappings.remove(name);
61: } else {
62: querymappings.put(name, queryString);
63: }
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
73: * @param parameters
74: * @return
75: */
76: public ReportData queryData(final String query,
77: final DataSet parameters) throws ReportDataFactoryException {
78: if (query == null) {
79: throw new NullPointerException("Query is null.");
80: }
81: final String realQuery = getQuery(query);
82: if (realQuery == null) {
83: throw new ReportDataFactoryException("Query '" + query
84: + "' is not recognized.");
85: }
86: return super .queryData(realQuery, parameters);
87: }
88:
89: public String getQuery(final String name) {
90: return (String) querymappings.get(name);
91: }
92:
93: public String[] getQueryNames() {
94: return (String[]) querymappings.keySet().toArray(
95: new String[querymappings.size()]);
96: }
97:
98: }
|