1 21 22 package uk.org.primrose.pool.core; 23 import java.sql.*; 24 25 38 class PoolSqlMonitor { 39 private Statement statement; 40 private boolean statementClosed = true; 41 private ResultSet resultSet; 42 private boolean resultSetClosed = true; 43 private String sql = ""; 44 private String caller = ""; 45 private long idleTime = 0L; 46 private long timeInUse = 0L; 47 private int numberOfCalls = 0; 48 49 50 protected void reset() { 51 this.sql = "TRANSITIONAL_CONNECTION_CLOSING"; 52 this.caller = "RESET"; 53 this.resultSet = null; 54 this.statement = null; 55 this.resultSetClosed = true; 56 this.statementClosed = true; 57 this.idleTime = System.currentTimeMillis(); 58 this.setTimeInUse(System.currentTimeMillis()); 60 this.numberOfCalls++; 61 } 62 63 65 protected Statement getStatement() { 66 return statement; 67 } 68 69 protected void setStatement(Statement statement) { 70 this.statement = statement; 71 } 72 73 protected boolean isStatementClosed() { 74 return statementClosed; 75 } 76 77 protected void setStatementClosed(boolean statementClosed) { 78 this.statementClosed = statementClosed; 79 } 80 81 83 protected ResultSet getResultSet() { 84 return resultSet; 85 } 86 87 protected void setResultSet(ResultSet resultSet) { 88 this.resultSet = resultSet; 89 } 90 91 protected boolean isResultSetClosed() { 92 return resultSetClosed; 93 } 94 95 protected void setResultSetClosed(boolean resultSetClosed) { 96 this.resultSetClosed = resultSetClosed; 97 } 98 99 100 103 protected void setSql(String sql) { 104 this.setTimeInUse(System.currentTimeMillis()); 106 this.sql = sql; 107 } 108 109 112 protected String getSql() { 113 return this.sql; 114 } 115 116 117 118 protected int getNumberOfCalls() { 119 return numberOfCalls; 120 } 121 122 protected long getTimeInUse() { 123 if (timeInUse == 0L) { 124 return 0L; 126 } else { 127 return (System.currentTimeMillis() -timeInUse); 128 } 129 } 130 131 protected void setTimeInUse(long timeInUse) { 132 this.timeInUse = timeInUse; 133 } 134 135 protected long getIdleTime() { 136 return (System.currentTimeMillis() -idleTime); 137 } 138 139 protected void setIdleTime(long idleTime) { 140 this.idleTime = idleTime; 141 } 142 143 private void setCaller() { 153 setCaller(4); 154 } 155 156 public void setCaller(int num) { 157 StringBuffer sb = new StringBuffer (); 158 159 try { 160 throw new Exception (); 161 } catch (Exception e) { 162 StackTraceElement [] ste = e.getStackTrace(); 163 for (int i = 0; i < ste.length; i++) { 165 if (this.getClass().getName().equals(ste[i].getClassName())) { 166 if (i+num >= (ste.length )) { 169 break; 170 } 171 sb.append(ste[i+num].getFileName() +"[method:" +ste[i+num].getMethodName() +",line:" +ste[i+num].getLineNumber() +"], "); 172 num++; 173 if (i+num >= (ste.length )) { 174 break; 175 } 176 sb.append(ste[i+num].getFileName() +"[method:" +ste[i+num].getMethodName() +",line:" +ste[i+num].getLineNumber() +"], "); 177 num++; 178 if (i+num >= (ste.length )) { 179 break; 180 } 181 sb.append(ste[i+num].getFileName() +"[method:" +ste[i+num].getMethodName() +",line:" +ste[i+num].getLineNumber() +"], "); 182 num++; 183 if (i+num >= (ste.length )) { 184 break; 185 } 186 sb.append(ste[i+num].getFileName() +"[method:" +ste[i+num].getMethodName() +",line:" +ste[i+num].getLineNumber() +"], "); 187 188 break; 189 190 } 191 } 192 } 193 194 this.caller = sb.toString(); 195 } 196 197 protected String getCaller() { 198 return this.caller; 199 } 200 201 } 202 | Popular Tags |