KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > taglibs > standard > tag > el > sql > QueryTag


1 /*
2  * Copyright 1999-2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.taglibs.standard.tag.el.sql;
17
18 import javax.servlet.jsp.JspException JavaDoc;
19
20 import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager;
21 import org.apache.taglibs.standard.tag.common.sql.QueryTagSupport;
22
23 /**
24  * Subclass for the JSTL library with EL support.
25  *
26  * @author Hans Bergsten
27  * @author Justyna Horwat
28  */

29 public class QueryTag extends QueryTagSupport {
30
31     private String JavaDoc dataSourceEL;
32     private String JavaDoc sqlEL;
33     private String JavaDoc startRowEL;
34     private String JavaDoc maxRowsEL;
35
36     //*********************************************************************
37
// Constructor
38

39     /**
40      * Constructs a new QueryTag. As with TagSupport, subclasses
41      * should not provide other constructors and are expected to call
42      * the superclass constructor
43      */

44     public QueryTag() {
45         super();
46     }
47
48     //*********************************************************************
49
// Accessor methods
50

51     public void setDataSource(String JavaDoc dataSourceEL) {
52     this.dataSourceEL = dataSourceEL;
53     this.dataSourceSpecified = true;
54     }
55
56     /**
57      * The index of the first row returned can be
58      * specified using startRow.
59      */

60     public void setStartRow(String JavaDoc startRowEL) {
61     this.startRowEL = startRowEL;
62     }
63
64     /**
65      * Query result can be limited by specifying
66      * the maximum number of rows returned.
67      */

68     public void setMaxRows(String JavaDoc maxRowsEL) {
69     this.maxRowsEL = maxRowsEL;
70     this.maxRowsSpecified = true;
71     }
72
73     /**
74      * Setter method for the SQL statement to use for the
75      * query. The statement may contain parameter markers
76      * (question marks, ?). If so, the parameter values must
77      * be set using nested value elements.
78      */

79     public void setSql(String JavaDoc sqlEL) {
80     this.sqlEL = sqlEL;
81     }
82
83     public int doStartTag() throws JspException JavaDoc {
84         evaluateExpressions();
85     return super.doStartTag();
86     }
87
88     //*********************************************************************
89
// Private utility methods
90

91     // Evaluates expressions as necessary
92
private void evaluateExpressions() throws JspException JavaDoc {
93         Integer JavaDoc tempInt = null;
94
95         if (dataSourceEL != null) {
96             rawDataSource = (Object JavaDoc) ExpressionEvaluatorManager.evaluate(
97                 "dataSource", dataSourceEL, Object JavaDoc.class, this, pageContext);
98         }
99
100         if (sqlEL != null) {
101             sql = (String JavaDoc) ExpressionEvaluatorManager.evaluate("sql", sqlEL,
102                 String JavaDoc.class, this, pageContext);
103         }
104
105     if (startRowEL != null) {
106         tempInt = (Integer JavaDoc) ExpressionEvaluatorManager.evaluate(
107                 "startRow", startRowEL, Integer JavaDoc.class, this, pageContext);
108         if (tempInt != null)
109         startRow = tempInt.intValue();
110     }
111
112     if (maxRowsEL != null) {
113         tempInt = (Integer JavaDoc) ExpressionEvaluatorManager.evaluate(
114                 "maxRows", maxRowsEL, Integer JavaDoc.class, this, pageContext);
115         if (tempInt != null)
116         maxRows = tempInt.intValue();
117     }
118     }
119 }
120
Popular Tags