1 5 package com.teamkonzept.db; 6 7 import java.sql.*; 8 import java.util.Vector ; 9 import java.util.Stack ; 10 import java.util.Enumeration ; 11 import java.util.NoSuchElementException ; 12 13 import com.teamkonzept.lib.*; 14 import com.teamkonzept.webman.db.TKWebmanDBManager; 15 import com.teamkonzept.webman.mainint.WebmanExceptionHandler; 16 17 import org.apache.log4j.Category; 18 19 33 public abstract class TKExtendedPrepQuery extends TKPrepQuery { 34 35 36 static Category cat = Category.getInstance(TKExtendedPrepQuery.class.getName()); 37 38 41 protected Vector results = null; 42 43 46 protected TKPrepQuery[] queries = null; 47 48 52 private Class [] prevClasses = null; 53 54 58 protected void addResult(ResultSet rs) { 59 if (rs != null) { 60 if (results == null) { 61 results = new Vector (); 62 } 63 results.addElement(rs); 65 } 66 } 67 68 71 protected void addResults(ResultSet[] rs) { 72 if (rs != null) { 73 if (results == null) { 74 results = new Vector (); 75 } 76 for (int i = 0; i < rs.length; i++) { 77 results.addElement(rs); 79 } 80 } 81 } 82 83 89 public abstract boolean execute() throws SQLException; 90 91 95 protected void init(Class [] classes) throws SQLException, ClassCastException { 96 if (classes == null) { 97 return; 98 } 99 if (prevClasses == null || !classes.equals(prevClasses)) { 100 prevClasses = classes; 101 queries = new TKPrepQuery[classes.length]; 102 for (int i = 0; i < classes.length; i++) { 103 queries[i] = (TKPrepQuery) TKWebmanDBManager.newQuery(classes[i]); 104 } 105 } 106 } 107 108 114 public ResultSet fetchResultSet() { 115 if (results != null && results.size() > 0) { ResultSet tmp = (ResultSet) results.elementAt(0); 117 results.removeElementAt(0); 118 return tmp; 119 } 120 return null; 121 } 122 123 129 protected boolean hasResults() { 130 return results != null && results.size() > 0; 131 } 132 133 138 protected void debugParams() 139 { 140 if (cat.isDebugEnabled()) 141 { 142 if (paramOrder == null) { 143 cat.debug("paramOrder is null!"); 144 return; 145 } 146 StringBuffer buf = new StringBuffer ("Parameters of class "); 147 buf.append(getClass().getName()); 148 String currentParamName = null; 149 Object currentParam = null; 150 buf.append(": {"); 151 for (int i = 0; i < paramOrder.length; i++) { 152 currentParamName = paramOrder[i]; 153 currentParam = queryParams.get(currentParamName); 154 buf.append(currentParamName); 155 buf.append("="); 156 buf.append(currentParam); 157 buf.append(" [type: "); 158 buf.append(currentParam.getClass().getName()); 159 buf.append("]"); 160 if (i < (paramOrder.length - 1)) { 161 buf.append(", "); 162 } 163 } 164 buf.append("}"); 165 cat.debug(buf.toString()); 166 } 167 } 168 169 172 protected Enumeration queries() { 173 return new Enumeration () { 174 int count = 0; 175 int elementCount = queries.length; 176 177 public boolean hasMoreElements() { 178 return count < elementCount; 179 } 180 181 public Object nextElement() { 182 if (count < elementCount) { 183 return queries[count++].sqlString; 184 } 185 throw new NoSuchElementException ("Statement Enumeration"); 186 } 187 }; 188 } 189 190 194 public void close() throws SQLException { 195 if (queries == null) { 196 return; 197 } 198 cat.debug("queries to close: " + queries.length); 199 for (int i = 0; i < queries.length; i++) { 200 queries[i].close(); 201 } 202 cat.debug("queries closed"); 203 } 204 } 205 206 | Popular Tags |