[#1177] Add SQL Console module to jOOQ - parameters description is a separate variable, to potentially apply filtering in the future.

This commit is contained in:
Chrriis 2012-04-09 12:37:55 +00:00
parent bfd039bdcb
commit 6b5c14a2aa
3 changed files with 19 additions and 8 deletions

View File

@ -128,17 +128,14 @@ public class DebugListener extends DefaultExecuteListener {
ResultSet resultSet = ctx.resultSet();
String[] sql = ctx.batchSQL();
SqlQueryType sqlQueryType = SqlQueryType.detectType(sql[0]);
String parameterDescription = null;
if(sql.length == 1) {
PreparedStatement statement = ctx.statement();
if(statement instanceof UsageTrackingPreparedStatement) {
String parameterDescription = ((UsageTrackingPreparedStatement) statement).getParameterDescription();
if(parameterDescription != null) {
// Make a copy to not change internal structure.
sql = new String[] {sql[0] + " -> " + parameterDescription};
}
parameterDescription = ((UsageTrackingPreparedStatement) statement).getParameterDescription();
}
}
DebuggerData sqlQueryDebuggerData = new DebuggerData(sqlQueryType, sql, startPreparationTime == 0? null: aggregatedPreparationDuration, startBindTime == 0? null: endBindTime - startBindTime, endExecutionTime - startExecutionTime);
DebuggerData sqlQueryDebuggerData = new DebuggerData(sqlQueryType, sql, parameterDescription, startPreparationTime == 0? null: aggregatedPreparationDuration, startBindTime == 0? null: endBindTime - startBindTime, endExecutionTime - startExecutionTime);
for(Debugger listener: sqlQueryDebuggerList) {
listener.debugQueries(sqlQueryDebuggerData);
}

View File

@ -49,6 +49,7 @@ public class DebuggerData implements Serializable {
private int id;
private SqlQueryType queryType;
private String[] queries;
private String parameterDescription;
private Long preparationDuration;
private Long bindingDuration;
private long executionDuration;
@ -56,7 +57,7 @@ public class DebuggerData implements Serializable {
private long threadID;
private StackTraceElement[] callerStackTraceElements;
public DebuggerData(SqlQueryType queryType, String[] queries, Long preparationDuration, Long bindingDuration, long executionDuration) {
public DebuggerData(SqlQueryType queryType, String[] queries, String parameterDescription, Long preparationDuration, Long bindingDuration, long executionDuration) {
this.id = nextID++;
Thread currentThread = Thread.currentThread();
this.threadName = currentThread.getName();
@ -64,6 +65,7 @@ public class DebuggerData implements Serializable {
this.callerStackTraceElements = new Exception().getStackTrace();
this.queryType = queryType;
this.queries = queries;
this.parameterDescription = parameterDescription;
this.preparationDuration = preparationDuration;
this.bindingDuration = bindingDuration;
this.executionDuration = executionDuration;
@ -93,6 +95,13 @@ public class DebuggerData implements Serializable {
return queries;
}
/**
* @return non null if queries consist of a single prepared statement with parameters.
*/
public String getParameterDescription() {
return parameterDescription;
}
public Long getPreparedStatementPreparationDuration() {
return preparationDuration;
}

View File

@ -759,7 +759,12 @@ public class LoggerPane extends JPanel {
return sqlQueryDebuggerData.getQueryType();
}
public String[] getQueries() {
return sqlQueryDebuggerData.getQueries();
String parameterDescription = sqlQueryDebuggerData.getParameterDescription();
String[] queries = sqlQueryDebuggerData.getQueries();
if(parameterDescription != null) {
return new String[] {queries[0] + " -> " + parameterDescription};
}
return queries;
}
public Throwable getThrowable() {
return throwable;