1:/* 2: * QueryBean.java 3: * 4: * QueryBean is used to execute and return the results of a query on behalf of 5: * the QueryPortlet application. 6: * This bean is far from robust. Purely for demonstration of the portlet... 7: * 8: * Created on May 15, 2004, 3:59 PM 9: */ 10:import java.sql.*; 11:import java.util.*; 12:import org.apache.commons.logging.Log; 13:import org.apache.commons.logging.LogFactory; 14:import config.DbProps; 15: 16:/** 17: * 18: * @author Michael Klaene 19: */ 20:public class QueryBean { 21: 22: /** Designated Logger for this class. */ 23: private final Log log = LogFactory.getLog(getClass().getName()); 24: 25: List queryData; 26: String[] queryColumns; 27: 28: public QueryBean() { 29: try{ 30: Class.forName(DbProps.DRIVER); 31: } 32: catch(Exception e){ 33: throw new RuntimeException(e); 34: } 35: } 36: 37: /**Returns a query's results. */ 38: public void executeQuery(String queryString){ 39: Connection conn = null; 40: PreparedStatement psmt = null; 41: ResultSet rs = null; 42: ResultSetMetaData rsm = null; 43: 44: log.info("Executing QueryBean's executeQuery method. (New SQL to parse)"); 45: try { 46: conn = 47: DriverManager.getConnection(DbProps.URL,DbProps.USERNAME,DbProps.PASSWORD); 48: psmt = conn.prepareStatement(queryString); 49: 50: if(log.isDebugEnabled()) { 51: log.debug("QueryBean.executeQuery. queryString : " + queryString); 52: } 53: 54: rs = psmt.executeQuery(); 55: 56: rsm = rs.getMetaData(); 57: int sqlType = 0; 58: int colCount = rsm.getColumnCount(); 59: 60: this.queryData = new ArrayList(); //All data are Strings. 61: while (rs.next()) { 62: String[] record = new String[colCount]; 63: this.queryColumns = new String[colCount]; 64: 65: for (int i = 1; i <= colCount;i++) { 66: queryColumns[i -1] = rsm.getColumnLabel(i); 67: sqlType = rsm.getColumnType(i); 68: 69: //For this simple example, I'm only checking 2 types... 70: switch(sqlType) { 71: case java.sql.Types.INTEGER: 72: record[i -1] = new Integer(rs.getInt(i)).toString(); 73: break; 74: case java.sql.Types.VARCHAR: 75: record[i -1] = rs.getString(i); 76: break; 77: } 78: } 79: 80: queryData.add(record); 81: } 82: } 83: catch (Exception e) { 84: throw new RuntimeException(e); 85: } 86: } 87: 88: /** 89: * Getter for property queryData. 90: * @return Value of property queryData. 91: */ 92: public java.util.List getQueryData() { 93: return queryData; 94: } 95: 96: /** 97: * Setter for property queryData. 98: * @param queryData New value of property queryData. 99: */ 100: public void setQueryData(java.util.List queryData) { 101: this.queryData = queryData; 102: } 103: 104: /** 105: * Getter for property queryColumns. 106: * @return Value of property queryColumns. 107: */ 108: public java.lang.String[] getQueryColumns() { 109: return this.queryColumns; 110: } 111: 112: /** 113: * Setter for property queryColumns. 114: * @param queryColumns New value of property queryColumns. 115: */ 116: public void setQueryColumns(java.lang.String[] queryColumns) { 117: this.queryColumns = queryColumns; 118: } 119: 120:}