KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jahia > clipbuilder > sql > bean > QueryBean


1 package org.jahia.clipbuilder.sql.bean;
2
3 /*
4  * QueryBean.java
5  *
6  * QueryBean is used to execute and return the results of a query on behalf of
7  * the QueryPortlet application.
8  * This bean is far from robust. Purely for demonstration of the portlet...
9  *
10  * Created on May 15, 2004, 3:59 PM
11  */

12 import java.sql.*;
13 import java.util.*;
14 import org.apache.commons.logging.Log;
15 import org.apache.commons.logging.LogFactory;
16 import org.jahia.clipbuilder.sql.config.DbProps;
17 import org.apache.commons.beanutils.*;
18
19 /**
20  *@author Khaled TLILI
21  */

22 public class QueryBean {
23
24     private List queryData;
25     private String JavaDoc[] queryColumns;
26     private RowSetDynaClass resultSet;
27
28     /**
29      * Designated Logger for this class.
30      */

31     private final Log log = LogFactory.getLog(getClass().getName());
32
33
34     /**
35      * Constructor for the QueryBean object
36      */

37     public QueryBean() {
38         try {
39             Class.forName(DbProps.DRIVER);
40         }
41         catch (Exception JavaDoc e) {
42             throw new RuntimeException JavaDoc(e);
43         }
44     }
45
46
47     /**
48      * Setter for property queryData.
49      *
50      *@param queryData New value of property queryData.
51      */

52     public void setQueryData(java.util.List JavaDoc queryData) {
53         this.queryData = queryData;
54     }
55
56
57     /**
58      * Setter for property queryColumns.
59      *
60      *@param queryColumns New value of property queryColumns.
61      */

62     public void setQueryColumns(java.lang.String JavaDoc[] queryColumns) {
63         this.queryColumns = queryColumns;
64     }
65
66
67     /**
68      * Getter for property queryData.
69      *
70      *@return Value of property queryData.
71      */

72     public java.util.List JavaDoc getQueryData() {
73         return queryData;
74     }
75
76
77     /**
78      * Getter for property queryColumns.
79      *
80      *@return Value of property queryColumns.
81      */

82     public java.lang.String JavaDoc[] getQueryColumns() {
83         return this.queryColumns;
84     }
85
86
87     /**
88      * Gets the ResultSet attribute of the QueryBean object
89      *
90      *@return The ResultSet value
91      */

92     public RowSetDynaClass getResultSet() throws RuntimeException JavaDoc{
93         if (this.resultSet == null) {
94             throw new RuntimeException JavaDoc("Execute sql query before");
95         }
96         return resultSet;
97     }
98
99
100     /**
101      * Returns a query's results.
102      *
103      *@param queryString Description of Parameter
104      */

105     public void executeQuery(String JavaDoc queryString) {
106         Connection conn = null;
107         PreparedStatement psmt = null;
108         ResultSet rs = null;
109         ResultSetMetaData rsm = null;
110
111         log.info("Executing QueryBean's executeQuery method. (New SQL to parse)");
112         try {
113             conn = DriverManager.getConnection(DbProps.URL, DbProps.USERNAME, DbProps.PASSWORD);
114             psmt = conn.prepareStatement(queryString);
115
116             if (log.isDebugEnabled()) {
117                 log.debug("QueryBean.executeQuery. queryString : " + queryString);
118             }
119
120             rs = psmt.executeQuery();
121
122             rsm = rs.getMetaData();
123             int sqlType = 0;
124             int colCount = rsm.getColumnCount();
125
126             this.queryData = new ArrayList();
127             //All data are Strings.
128
while (rs.next()) {
129                 String JavaDoc[] record = new String JavaDoc[colCount];
130                 this.queryColumns = new String JavaDoc[colCount];
131
132                 for (int i = 1; i <= colCount; i++) {
133                     queryColumns[i - 1] = rsm.getColumnLabel(i);
134                     sqlType = rsm.getColumnType(i);
135                     //For this simple example, I'm only checking 2 types...
136

137                     Object JavaDoc o = rs.getObject(i);
138                     if (o != null) {
139                         //log.debug("Record value: " + o.toString());
140
record[i - 1] = o.toString();
141                     }
142                     else {
143                         //log.debug("There is no value for index " + (i - 1));
144
record[i - 1] = "No value";
145                     }
146                     /*
147                      * switch (sqlType) {
148                      * case java.sql.Types.INTEGER:
149                      * record[i - 1] = new Integer(rs.getInt(i)).toString();
150                      * break;
151                      * case java.sql.Types.VARCHAR:
152                      * record[i - 1] = rs.getString(i);
153                      * break;
154                      * }
155                      */

156                 }
157
158                 queryData.add(record);
159             }
160
161
162                         // set ResultSet object
163
psmt = conn.prepareStatement(queryString);
164                         rs = psmt.executeQuery();
165             resultSet = new RowSetDynaClass(rs, false);
166
167                         rs.close();
168         }
169         catch (Exception JavaDoc e) {
170             log.error("Enable to execute quers due to an execption", e);
171             throw new RuntimeException JavaDoc(e);
172         }
173     }
174
175 }
176
Popular Tags