1 package org.jahia.clipbuilder.sql.bean; 2 3 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 22 public class QueryBean { 23 24 private List queryData; 25 private String [] queryColumns; 26 private RowSetDynaClass resultSet; 27 28 31 private final Log log = LogFactory.getLog(getClass().getName()); 32 33 34 37 public QueryBean() { 38 try { 39 Class.forName(DbProps.DRIVER); 40 } 41 catch (Exception e) { 42 throw new RuntimeException (e); 43 } 44 } 45 46 47 52 public void setQueryData(java.util.List queryData) { 53 this.queryData = queryData; 54 } 55 56 57 62 public void setQueryColumns(java.lang.String [] queryColumns) { 63 this.queryColumns = queryColumns; 64 } 65 66 67 72 public java.util.List getQueryData() { 73 return queryData; 74 } 75 76 77 82 public java.lang.String [] getQueryColumns() { 83 return this.queryColumns; 84 } 85 86 87 92 public RowSetDynaClass getResultSet() throws RuntimeException { 93 if (this.resultSet == null) { 94 throw new RuntimeException ("Execute sql query before"); 95 } 96 return resultSet; 97 } 98 99 100 105 public void executeQuery(String 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 while (rs.next()) { 129 String [] record = new String [colCount]; 130 this.queryColumns = new String [colCount]; 131 132 for (int i = 1; i <= colCount; i++) { 133 queryColumns[i - 1] = rsm.getColumnLabel(i); 134 sqlType = rsm.getColumnType(i); 135 137 Object o = rs.getObject(i); 138 if (o != null) { 139 record[i - 1] = o.toString(); 141 } 142 else { 143 record[i - 1] = "No value"; 145 } 146 156 } 157 158 queryData.add(record); 159 } 160 161 162 psmt = conn.prepareStatement(queryString); 164 rs = psmt.executeQuery(); 165 resultSet = new RowSetDynaClass(rs, false); 166 167 rs.close(); 168 } 169 catch (Exception e) { 170 log.error("Enable to execute quers due to an execption", e); 171 throw new RuntimeException (e); 172 } 173 } 174 175 } 176 | Popular Tags |