View Javadoc
1 package net.sourceforge.backpedal.p6spy; 2 3 import com.p6spy.engine.spy.P6Connection; 4 import com.p6spy.engine.spy.P6Factory; 5 import com.p6spy.engine.spy.P6PreparedStatement; 6 import net.sourceforge.backpedal.api.core.BackpedalEngine; 7 import net.sourceforge.backpedal.api.core.BackpedalStatementEssentials; 8 import net.sourceforge.backpedal.api.core.BackpedalStatementStack; 9 import net.sourceforge.backpedal.api.core.StatementParser; 10 import net.sourceforge.backpedal.impl.db.BindVariableComparator; 11 import net.sourceforge.backpedal.impl.db.BindVariableSetImpl; 12 import net.sourceforge.backpedal.impl.db.BooleanBindVariable; 13 import net.sourceforge.backpedal.impl.db.DateBindVariable; 14 import net.sourceforge.backpedal.impl.db.IntegerBindVariable; 15 import net.sourceforge.backpedal.impl.db.NullBindVariable; 16 import net.sourceforge.backpedal.impl.db.StringBindVariable; 17 import net.sourceforge.backpedal.impl.db.TimestampBindVariable; 18 import org.picocontainer.PicoContainer; 19 20 import java.sql.Connection; 21 import java.sql.Date; 22 import java.sql.PreparedStatement; 23 import java.sql.SQLException; 24 import java.sql.Timestamp; 25 import java.util.Collection; 26 import java.util.TreeSet; 27 28 public class BackpedalPreparedStatement extends P6PreparedStatement { 29 private final BackpedalEngine backpedalEngine; 30 private final BackpedalStatementStack backpedalStatementQueue; 31 private final StatementParser statementParser; 32 private Collection bindVariables = null; 33 34 public BackpedalPreparedStatement(final PicoContainer container, P6Factory factory, PreparedStatement real, P6Connection conn, String query) throws SQLException { 35 super(factory, real, conn, query); 36 bindVariables = new TreeSet(new BindVariableComparator()); 37 backpedalEngine = (BackpedalEngine) container.getComponent(BackpedalEngine.class); 38 backpedalStatementQueue = (BackpedalStatementStack) container.getComponent(BackpedalStatementStack.class); 39 statementParser = (StatementParser) container.getComponent(StatementParser.class); 40 } 41 42 public void setString(int p0, String p1) throws SQLException { 43 bindVariables.add(new StringBindVariable(p0, p1,null)); 44 super.setString(p0, p1); 45 } 46 47 public void setInt(int p0, int p1) throws SQLException { 48 bindVariables.add(new IntegerBindVariable(p0, p1,null)); 49 super.setInt(p0, p1); 50 } 51 52 public void setBoolean(int p0, boolean p1) throws SQLException { 53 bindVariables.add(new BooleanBindVariable(p0, p1,null)); 54 super.setBoolean(p0, p1); 55 } 56 57 public void setDate(int p0, Date p1) throws SQLException { 58 bindVariables.add(new DateBindVariable(p0, p1,null)); 59 super.setDate(p0, p1); 60 } 61 62 public void setTimestamp(int p0, Timestamp p1) throws SQLException { 63 bindVariables.add(new TimestampBindVariable(p0, p1,null)); 64 super.setTimestamp(p0, p1); 65 } 66 67 public boolean execute() throws SQLException { 68 recordStatement(); 69 return super.execute(); 70 } 71 72 private void recordStatement() throws SQLException { 73 final BindVariableSetImpl bindVariableSet = new BindVariableSetImpl(bindVariables); 74 final Connection realConnection = connection.getJDBC(); 75 BackpedalStatementEssentials backpedalStatementEssentials = null; 76 if (preparedQuery.startsWith(BackpedalStatementEssentials.INSERT)) { 77 backpedalStatementEssentials = backpedalEngine.backpedalPreparedStatementInsert(realConnection, statementParser.parseInsertStatement(preparedQuery), bindVariableSet); 78 } else if (preparedQuery.startsWith(BackpedalStatementEssentials.UPDATE)) { 79 backpedalStatementEssentials = backpedalEngine.backpedalPreparedStatementUpdate(realConnection, statementParser.parseUpdateStatement(preparedQuery), bindVariableSet); 80 } else if (preparedQuery.startsWith(BackpedalStatementEssentials.DELETE)) { 81 backpedalStatementEssentials = backpedalEngine.backpedalPreparedStatementDelete(realConnection, statementParser.parseDeleteStatement(preparedQuery), bindVariableSet); 82 } 83 if (backpedalStatementEssentials != null) { 84 backpedalStatementQueue.add(backpedalStatementEssentials); 85 } 86 } 87 88 public int executeUpdate() throws SQLException { 89 recordStatement(); 90 return super.executeUpdate(); 91 } 92 93 public void clearParameters() throws SQLException { 94 bindVariables.clear(); 95 super.clearParameters(); 96 } 97 98 protected void initValues() { 99 super.initValues(); 100 } 101 102 public void setNull(int p0, int p1, String p2) throws SQLException { 103 super.setNull(p0, p1, p2); 104 } 105 106 public void setNull(int p0, int p1) throws SQLException { 107 bindVariables.add(new NullBindVariable(p0, p1,null)); 108 super.setNull(p0, p1); 109 } 110 }

This page was automatically generated by Maven