// Path: src/main/java/net/chandol/logjdbc/logging/LogContext.java
// public class LogContext {
//     private LogJdbcConfig config;
// 
//     private String sql;
//     private ParameterCollector parameterCollector;
//     private ResultSetCollector resultSetCollector;
// 
//     private PrintLogHelper helper;
// 
//     public void printLog() {
//         if (parameterPrintable())
//             config.getSqlPrinter().printParameter(this);
// 
//         if (sqlPrintable())
//             config.getSqlPrinter().printSql(this);
// 
//         if (resultSetPrintable())
//             config.getResultSetPrinter().printResultSet(this);
//     }
// 
//     public void setSql(String sql) {
//         this.sql = sql;
//     }
// 
//     public ParameterCollector initParameterCollector() {
//         this.parameterCollector = new ParameterCollector();
//         return this.parameterCollector;
//     }
// 
//     public ResultSetCollector initResultSetCollector(ResultSetMetaData metaData) {
//         this.resultSetCollector = new ResultSetCollector(metaData);
//         return this.resultSetCollector;
//     }
// 
//     /* getter */
//     public LogJdbcConfig getConfig() {
//         return config;
//     }
// 
//     public String getSql() {
//         return sql;
//     }
// 
//     public ParameterCollector getParameterCollector() {
//         return parameterCollector;
//     }
// 
//     public ResultSetCollector getResultSetCollector() {
//         return resultSetCollector;
//     }
// 
//     public PrintLogHelper getHelper() {
//         return helper;
//     }
// 
//     /* printable */
//     private boolean resultSetPrintable() {
//         return resultSetCollector != null;
//     }
// 
//     private boolean parameterPrintable() {
//         return parameterCollector != null;
//     }
// 
//     private boolean sqlPrintable() {
//         return sql != null && !sql.isEmpty();
//     }
// 
//     /* Constructor */
//     private LogContext(LogJdbcConfig config) {
//         this.config = config;
//         this.helper = new PrintLogHelper(config);
//     }
// 
//     private LogContext(LogJdbcConfig config, String sql) {
//         this(config);
//         this.sql = sql;
//     }
// 
//     public static LogContext of(LogJdbcConfig config) {
//         return new LogContext(config);
//     }
// 
//     public static LogContext of(LogJdbcConfig config, String sql) {
//         return new LogContext(config, sql);
//     }
// 
// }


import net.chandol.logjdbc.logging.LogContext;
import java.sql.*;
package net.chandol.logjdbc.jdbcproxy;



public class ProxyStatement implements Statement {
    private Statement _stmt;
    protected LogContext context;

// Path: src/main/java/net/chandol/logjdbc/logging/LogContext.java
// public class LogContext {
//     private LogJdbcConfig config;
// 
//     private String sql;
//     private ParameterCollector parameterCollector;
//     private ResultSetCollector resultSetCollector;
// 
//     private PrintLogHelper helper;
// 
//     public void printLog() {
//         if (parameterPrintable())
//             config.getSqlPrinter().printParameter(this);
// 
//         if (sqlPrintable())
//             config.getSqlPrinter().printSql(this);
// 
//         if (resultSetPrintable())
//             config.getResultSetPrinter().printResultSet(this);
//     }
// 
//     public void setSql(String sql) {
//         this.sql = sql;
//     }
// 
//     public ParameterCollector initParameterCollector() {
//         this.parameterCollector = new ParameterCollector();
//         return this.parameterCollector;
//     }
// 
//     public ResultSetCollector initResultSetCollector(ResultSetMetaData metaData) {
//         this.resultSetCollector = new ResultSetCollector(metaData);
//         return this.resultSetCollector;
//     }
// 
//     /* getter */
//     public LogJdbcConfig getConfig() {
//         return config;
//     }
// 
//     public String getSql() {
//         return sql;
//     }
// 
//     public ParameterCollector getParameterCollector() {
//         return parameterCollector;
//     }
// 
//     public ResultSetCollector getResultSetCollector() {
//         return resultSetCollector;
//     }
// 
//     public PrintLogHelper getHelper() {
//         return helper;
//     }
// 
//     /* printable */
//     private boolean resultSetPrintable() {
//         return resultSetCollector != null;
//     }
// 
//     private boolean parameterPrintable() {
//         return parameterCollector != null;
//     }
// 
//     private boolean sqlPrintable() {
//         return sql != null && !sql.isEmpty();
//     }
// 
//     /* Constructor */
//     private LogContext(LogJdbcConfig config) {
//         this.config = config;
//         this.helper = new PrintLogHelper(config);
//     }
// 
//     private LogContext(LogJdbcConfig config, String sql) {
//         this(config);
//         this.sql = sql;
//     }
// 
//     public static LogContext of(LogJdbcConfig config) {
//         return new LogContext(config);
//     }
// 
//     public static LogContext of(LogJdbcConfig config, String sql) {
//         return new LogContext(config, sql);
//     }
// 
// }


// Path: src/main/java/net/chandol/logjdbc/jdbcproxy/ProxyStatement.java
import net.chandol.logjdbc.logging.LogContext;
import java.sql.*;

package net.chandol.logjdbc.jdbcproxy;



public class ProxyStatement implements Statement {
    private Statement _stmt;
    protected LogContext context;

    public ProxyStatement(LogContext context, Statement statement) {