KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > jasperreports > engine > query > JRQueryExecuterFactory


1 /*
2  * ============================================================================
3  * GNU Lesser General Public License
4  * ============================================================================
5  *
6  * JasperReports - Free Java report-generating library.
7  * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
8  *
9  * This library is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Lesser General Public
11  * License as published by the Free Software Foundation; either
12  * 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,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  * Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
22  *
23  * JasperSoft Corporation
24  * 303 Second Street, Suite 450 North
25  * San Francisco, CA 94107
26  * http://www.jaspersoft.com
27  */

28 package net.sf.jasperreports.engine.query;
29
30 import java.util.Map JavaDoc;
31
32 import net.sf.jasperreports.engine.JRDataset;
33 import net.sf.jasperreports.engine.JRException;
34 import net.sf.jasperreports.engine.JRValueParameter;
35
36
37 /**
38  * Factory classes used to create query executers.
39  * <p/>
40  * For each query language, a query executer factory must be created and registered as a JR property.
41  * <p/>
42  * Query executer factory instances must be thread-safe as they are cached and used as singletons.
43  *
44  * @author Lucian Chirita (lucianc@users.sourceforge.net)
45  * @version $Id: JRQueryExecuterFactory.java 1401 2006-09-21 11:04:34 +0300 (Thu, 21 Sep 2006) lucianc $
46  * @see net.sf.jasperreports.engine.query.JRQueryExecuter
47  */

48 public interface JRQueryExecuterFactory
49 {
50     /**
51      * Returns the built-in parameters associated with this query type.
52      * <p/>
53      * These parameters will be created as system-defined parameters for each
54      * report/dataset having a query of this type.
55      * <p/>
56      * The returned array should contain consecutive pairs of parameter names and parameter classes
57      * (e.g. <code>{"Param1", String.class, "Param2", "List.class"}</code>).
58      *
59      * @return array of built-in parameter names and types associated with this query type
60      */

61     public Object JavaDoc[] getBuiltinParameters();
62     
63     
64     /**
65      * Creates a query executer.
66      * <p/>
67      * This method is called at fill time for reports/datasets having a query supported by
68      * this factory.
69      *
70      * @param dataset the dataset containing the query, fields, etc
71      * @param parameters map of value parameters (instances of {@link JRValueParameter JRValueParameter})
72      * indexed by name
73      *
74      * @return a query executer
75      * @throws JRException
76      */

77     public JRQueryExecuter createQueryExecuter(JRDataset dataset, Map JavaDoc parameters) throws JRException;
78
79     
80     /**
81      * Decides whether the query executers created by this factory support a query parameter type.
82      * <p/>
83      * This check is performed for all $P{..} parameters in the query.
84      *
85      * @param className the value class name of the parameter
86      * @return whether the parameter value type is supported
87      */

88     public boolean supportsQueryParameterType(String JavaDoc className);
89 }
90
Popular Tags