package org.skywalking.apm.plugin.jdbc; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.SQLWarning; public class SWStatement implements java.sql.Statement { private Connection realConnection; private java.sql.Statement realStatement; private ConnectionInfo connectInfo; SWStatement(Connection realConnection, java.sql.Statement realStatement, ConnectionInfo connectInfo) { this.realConnection = realConnection; this.realStatement = realStatement; this.connectInfo = connectInfo; } public <T> T unwrap(Class<T> iface) throws SQLException { return realStatement.unwrap(iface); } public boolean isWrapperFor(Class<?> iface) throws SQLException { return realStatement.isWrapperFor(iface); } public ResultSet executeQuery(String sql) throws SQLException { return StatementTracing.execute(realStatement, connectInfo, "executeQuery", sql, new StatementTracing.Executable<ResultSet>() { public ResultSet exe(java.sql.Statement realStatement, String sql) throws SQLException { return realStatement.executeQuery(sql); } }); } public int executeUpdate(String sql) throws SQLException { return StatementTracing.execute(realStatement, connectInfo, "executeUpdate", sql, new StatementTracing.Executable<Integer>() { public Integer exe(java.sql.Statement realStatement, String sql) throws SQLException { return realStatement.executeUpdate(sql); } }); } public void close() throws SQLException { realStatement.close(); } public int getMaxFieldSize() throws SQLException { return realStatement.getMaxFieldSize(); } public void setMaxFieldSize(int max) throws SQLException { realStatement.setMaxFieldSize(max); } public int getMaxRows() throws SQLException { return realStatement.getMaxRows(); } public void setMaxRows(int max) throws SQLException { realStatement.setMaxRows(max); } public void setEscapeProcessing(boolean enable) throws SQLException { realStatement.setEscapeProcessing(enable); } public int getQueryTimeout() throws SQLException { return realStatement.getQueryTimeout(); } public void setQueryTimeout(int seconds) throws SQLException { realStatement.setQueryTimeout(seconds); } public void cancel() throws SQLException { realStatement.cancel(); } public SQLWarning getWarnings() throws SQLException { return realStatement.getWarnings(); } public void clearWarnings() throws SQLException { realStatement.clearWarnings(); } public void setCursorName(String name) throws SQLException { realStatement.setCursorName(name); } public boolean execute(String sql) throws SQLException { return StatementTracing.execute(realStatement, connectInfo, "execute", sql, new StatementTracing.Executable<Boolean>() { public Boolean exe(java.sql.Statement realStatement, String sql) throws SQLException { return realStatement.execute(sql); } }); } public ResultSet getResultSet() throws SQLException { return realStatement.getResultSet(); } public int getUpdateCount() throws SQLException { return realStatement.getUpdateCount(); } public boolean getMoreResults() throws SQLException { return realStatement.getMoreResults(); } public void setFetchDirection(int direction) throws SQLException { realStatement.setFetchDirection(direction); } public int getFetchDirection() throws SQLException { return realStatement.getFetchDirection(); } public void setFetchSize(int rows) throws SQLException { realStatement.setFetchSize(rows); } public int getFetchSize() throws SQLException { return realStatement.getFetchSize(); } public int getResultSetConcurrency() throws SQLException { return realStatement.getResultSetConcurrency(); } public int getResultSetType() throws SQLException { return realStatement.getResultSetType(); } public void addBatch(String sql) throws SQLException { realStatement.addBatch(sql); } public void clearBatch() throws SQLException { realStatement.clearBatch(); } public int[] executeBatch() throws SQLException { return StatementTracing.execute(realStatement, connectInfo, "executeBatch", "", new StatementTracing.Executable<int[]>() { public int[] exe(java.sql.Statement realStatement, String sql) throws SQLException { return realStatement.executeBatch(); } }); } public Connection getConnection() throws SQLException { return this.realConnection; } public boolean getMoreResults(int current) throws SQLException { return realStatement.getMoreResults(current); } public ResultSet getGeneratedKeys() throws SQLException { return realStatement.getGeneratedKeys(); } public int executeUpdate(String sql, final int autoGeneratedKeys) throws SQLException { return StatementTracing.execute(realStatement, connectInfo, "executeUpdate", sql, new StatementTracing.Executable<Integer>() { public Integer exe(java.sql.Statement realStatement, String sql) throws SQLException { return realStatement.executeUpdate(sql, autoGeneratedKeys); } }); } public int executeUpdate(String sql, final int[] columnIndexes) throws SQLException { return StatementTracing.execute(realStatement, connectInfo, "executeUpdate", sql, new StatementTracing.Executable<Integer>() { public Integer exe(java.sql.Statement realStatement, String sql) throws SQLException { return realStatement.executeUpdate(sql, columnIndexes); } }); } public int executeUpdate(String sql, final String[] columnNames) throws SQLException { return StatementTracing.execute(realStatement, connectInfo, "executeUpdate", sql, new StatementTracing.Executable<Integer>() { public Integer exe(java.sql.Statement realStatement, String sql) throws SQLException { return realStatement.executeUpdate(sql, columnNames); } }); } public boolean execute(String sql, final int autoGeneratedKeys) throws SQLException { return StatementTracing.execute(realStatement, connectInfo, "execute", sql, new StatementTracing.Executable<Boolean>() { public Boolean exe(java.sql.Statement realStatement, String sql) throws SQLException { return realStatement.execute(sql, autoGeneratedKeys); } }); } public boolean execute(String sql, final int[] columnIndexes) throws SQLException { return StatementTracing.execute(realStatement, connectInfo, "execute", sql, new StatementTracing.Executable<Boolean>() { public Boolean exe(java.sql.Statement realStatement, String sql) throws SQLException { return realStatement.execute(sql, columnIndexes); } }); } public boolean execute(String sql, final String[] columnNames) throws SQLException { return StatementTracing.execute(realStatement, connectInfo, "execute", sql, new StatementTracing.Executable<Boolean>() { public Boolean exe(java.sql.Statement realStatement, String sql) throws SQLException { return realStatement.execute(sql, columnNames); } }); } public int getResultSetHoldability() throws SQLException { return realStatement.getResultSetHoldability(); } public boolean isClosed() throws SQLException { return realStatement.isClosed(); } public void setPoolable(boolean poolable) throws SQLException { realStatement.setPoolable(poolable); } public boolean isPoolable() throws SQLException { return realStatement.isPoolable(); } public void closeOnCompletion() throws SQLException { realStatement.closeOnCompletion(); } public boolean isCloseOnCompletion() throws SQLException { return realStatement.isCloseOnCompletion(); } }