Class SQLBuffer

java.lang.Object
org.apache.openjpa.jdbc.sql.SQLBuffer
All Implemented Interfaces:
Serializable, Cloneable

public final class SQLBuffer extends Object implements Serializable, Cloneable
Buffer for SQL statements that can be used to create java.sql.PreparedStatements. This buffer holds the SQL statement parameters and their corresponding columns. The parameters introduced by the runtime system are distinguished from the parameters set by the user.
Since:
0.2.4
Author:
Marc Prud'hommeaux, Abe White, Pinaki Poddar
See Also:
  • Constructor Details

    • SQLBuffer

      public SQLBuffer(DBDictionary dict)
      Default constructor.
    • SQLBuffer

      public SQLBuffer(SQLBuffer buf)
      Copy constructor.
  • Method Details

    • clone

      public Object clone()
      Perform a shallow clone of this SQL Buffer.
      Overrides:
      clone in class Object
    • isEmpty

      public boolean isEmpty()
      Return true if the buffer is emtpy.
    • append

      public SQLBuffer append(SQLBuffer buf)
      Append all SQL and parameters of the given buffer.
    • appendParamOnly

      public SQLBuffer appendParamOnly(SQLBuffer buf)
      Append parameters only if the given buffer at the given positions.
    • append

      public SQLBuffer append(DBIdentifier name)
    • append

      public SQLBuffer append(Table table)
    • append

      public SQLBuffer append(Sequence seq)
    • append

      public SQLBuffer append(Column col)
    • append

      public SQLBuffer append(String s)
    • append

      public SQLBuffer append(Select sel, JDBCFetchConfiguration fetch)
      Append a subselect. This delays resolution of the select SQL.
    • appendCount

      public SQLBuffer appendCount(Select sel, JDBCFetchConfiguration fetch)
      Append a subselect count. This delays resolution of the select SQL.
    • replace

      public boolean replace(Select old, Select sel)
      Replace a subselect.
    • appendValue

      public SQLBuffer appendValue(Object o)
      Append a parameter value.
    • appendValue

      public SQLBuffer appendValue(Object o, Column col)
      Append a system inserted parameter value for a specific column.
    • appendValue

      public SQLBuffer appendValue(Object o, Column col, Parameter userParam)
      Append a user parameter value for a specific column. User parameters are marked as opposed to the parameters inserted by the internal runtime system. This helps to reuse the buffer by reparmeterizing it with new set of user parameters while the 'internal' parameters remain unchanged.
      Parameters:
      userParam - if non-null, designates a 'user' parameter.
    • appendValue

      public SQLBuffer appendValue(Object o, Column col, Parameter userParam, boolean useParamToken)
    • getParameters

      public List getParameters()
      Return the list of parameter values.
    • getUserParameters

      public List getUserParameters()
      Get the user parameter positions in the list of parameters. The odd element of the returned list contains an integer index that refers to the position in the getParameters() list. The even element of the returned list refers to the user parameter key. This structure is preferred over a normal map because a user parameter may occur more than one in the parameters.
    • getSQL

      public String getSQL()
      Return the SQL for this buffer.
    • getSQL

      public String getSQL(boolean replaceParams)
      Returns the SQL for this buffer.
      Parameters:
      replaceParams - if true, then replace parameters with the actual parameter values
    • prepareStatement

      public PreparedStatement prepareStatement(Connection conn) throws SQLException
      Create and populate the parameters of a prepared statement using the SQL in this buffer.
      Throws:
      SQLException
    • prepareStatement

      public PreparedStatement prepareStatement(Connection conn, int rsType, int rsConcur) throws SQLException
      Create and populate the parameters of a prepared statement using the SQL in this buffer.
      Throws:
      SQLException
    • prepareStatement

      public PreparedStatement prepareStatement(Connection conn, JDBCFetchConfiguration fetch, int rsType, int rsConcur) throws SQLException
      Create and populate the parameters of a prepred statement using the SQL in this buffer and the given fetch configuration.
      Throws:
      SQLException
    • prepareCall

      public CallableStatement prepareCall(Connection conn) throws SQLException
      Create and populate the parameters of a prepared statement using the SQL in this buffer.
      Throws:
      SQLException
    • prepareCall

      public CallableStatement prepareCall(Connection conn, int rsType, int rsConcur) throws SQLException
      Create and populate the parameters of a prepared statement using the SQL in this buffer.
      Throws:
      SQLException
    • prepareCall

      public CallableStatement prepareCall(Connection conn, JDBCFetchConfiguration fetch, int rsType, int rsConcur) throws SQLException
      Create and populate the parameters of a prepred statement using the SQL in this buffer and the given fetch configuration.
      Throws:
      SQLException
    • setParameters

      public void setParameters(PreparedStatement ps) throws SQLException
      Populate the parameters of an existing PreparedStatement with values from this buffer.
      Throws:
      SQLException
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • sqlEquals

      public boolean sqlEquals(String sql)
      Compare internal SQL without resolving subselects or stringifying parameters.
    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • addCastForParam

      public void addCastForParam(String oper, Val val)
      Replace SQL '?' with CAST string if required by DB platform
      Parameters:
      oper -
      val -
    • replaceSqlString

      public void replaceSqlString(int start, int end, String newString)
      Replace current buffer string with the new string
      Parameters:
      start - replace start position
      end - replace end position
      newString -
    • setParameters

      public void setParameters(List params)
    • getColumns

      public List getColumns()