Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Business Components
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## oracle.jbo.server
Class BaseSQLBuilderImpl

    java.lang.Object
      |
      +--oracle.jbo.server.BaseSQLBuilderImpl

Direct Known Subclasses:
  OLiteSQLBuilderImpl, OracleSQLBuilderImpl, SQL92SQLBuilderImpl

public abstract class BaseSQLBuilderImpl
extends java.lang.Object
implements SQLBuilder

Internal: Applications should not use this interface.

Note: This interface is subject to change.

This interface is used by View Objects to construct SQL statements that create, retrieve, update and delete table rows based on the state of the cache.

Since:
  JDeveloper 3.0

Fields inherited from interface oracle.jbo.server.SQLBuilder
`BINDING_STYLE_JDBC, BINDING_STYLE_ORACLE, BINDING_STYLE_UNKNOWN, DML_DELETE, DML_INSERT, DML_UPDATE`

Constructor Summary
`BaseSQLBuilderImpl()`

Method Summary
`protected int` | `bindInsertStatement(EntityImpl entityContext, java.sql.CallableStatement stmt, AttributeDefImpl[] cols, AttributeDefImpl[] keyCols, AttributeDefImpl[] retrCols, AttributeDefImpl[] retrKeyCols, java.util.Hashtable retrList, int bindIndex)` DOCTD: Method declaration
`protected int` | `bindUpdateStatement(EntityImpl entityContext, java.sql.CallableStatement stmt, AttributeDefImpl[] cols, AttributeDefImpl[] keyCols, AttributeDefImpl[] retrCols, AttributeDefImpl[] retrKeyCols, java.util.Hashtable retrList, int bindIndex)` DOCTD: Method declaration
`protected int` | `bindWhereClause(EntityImpl entityContext, java.sql.PreparedStatement stmt, AttributeDefImpl[] keyCols, java.lang.Object rowid, int bindIndex)` Bind the Primary key values for the designated Statement.
`protected java.lang.StringBuffer` | `buildDeleteStatement(EntityImpl entityContext, java.lang.String sinkName, java.lang.String sinkAlias, AttributeDefImpl[] keyCols)` Construct a SQL INSERT statement
`protected java.lang.StringBuffer` | `buildInsertStatement(EntityImpl entityContext, java.lang.String sinkName, AttributeDefImpl[] cols, AttributeDefImpl[] keyCols, AttributeDefImpl[] retrCols, AttributeDefImpl[] retrKeyCols)` Construct a SQL INSERT statement
`protected void` | `buildSelectString(java.lang.StringBuffer buffer, java.lang.String sourceName, AttributeDefImpl[] attrs, boolean withIntoClause)` Construct a SQL SELECT statement for the Entity into the designated Buffer.
`protected java.lang.StringBuffer` | `buildUpdateStatement(EntityImpl entityContext, java.lang.String sinkName, AttributeDefImpl[] cols, AttributeDefImpl[] keyCols, AttributeDefImpl[] retrCols, AttributeDefImpl[] retrKeyCols)` DOCTD: Method declaration TODO: KM _ don't like the fact that this requires an entitydef
`protected void` | `buildWhereClause(EntityImpl entityContext, java.lang.StringBuffer buffer, AttributeDefImpl[] keyCols, java.lang.Object rowid)` Construct a SQL WHERE clause for the Entity into the designated Buffer, based upon the Source Columns.
`protected boolean` | `capabilityCanReuseLockStatements()`
`protected java.lang.String[]` | `convertFlags(boolean bTable, boolean bAlias, boolean bView, boolean bSnap)`
`void` | `doEntityDML(EntityImpl entityContext, int operation, TransactionEvent e)` Performs the appropriate SQL Data Manipulation Language (DML) operations on the database to reflect an update, delete or insert operation on an Entity Object.
`void` | `doEntitySelect(EntityImpl entityContext, boolean lock)` Perform the appropriate SQL operations to execute a select operation on an Entity Object.
`java.lang.Object[]` | `doLoadBulkFromResultSet(AttributeDefImpl[] attrDefs, int attrIndex, java.sql.ResultSet rs, int index, DBTransactionImpl trans)` Loads an array of objects from a result set.
`java.lang.Object` | `doLoadFromResultSet(java.lang.Object theTypeFactory, java.lang.Object theElemFactory, java.lang.Class theJavaType, byte attrLoad, java.sql.ResultSet rs, int index, DBTransactionImpl trans)` Loads an object from a result set.
`java.lang.Object` | `doLoadFromStatement(java.lang.Object theTypeFactory, java.lang.Object theElemFactory, java.lang.Class theJavaType, java.sql.PreparedStatement ps, int index, Transaction trans)` Loads an object from a result set.
`void` | `doPreparedStatementDefineColumnType(java.sql.PreparedStatement ps, int colnum, int sqltype)` Performs the equivalent of `defineColumnType()` on a prepared statement.
`void` | `doPreparedStatementDefines(java.sql.PreparedStatement ps, AttributeDefImpl[] attrs)` Performs the equivalent of `clearDefines()` on a prepared statement.
`void` | `doRegisterDefaultDriver()` Registers the JDBC driver associated with this type of JDBC connection.
`void` | `doStatementSetBindingStyle(java.sql.Statement ps, int bindingStyle)` Sets the binding style for the statement.
`void` | `doStatementSetBindingStyleDefault(java.sql.Statement ps)`
`void` | `doStatementSetRowPrefetch(java.sql.Statement ps, int prefetchSize)` Performs the equivalent of `setRowPrefetch()` on a statement.
`protected static void` | `dumpConstraint(java.lang.Object[] constraintEntry)` debug method to be called by all implementors of getConstraints - provides formatted output of the complex constraint struct
`java.lang.Object` | `generatePKBasedRef(EntityImpl entityContext)` Initial (temporay) value for ROWID, so that entity can be added in cache TODO: this is an awkward piece of non-generic JDBC - not sure how to emulate rowids in the generic case
`java.lang.Object[]` | `generateRefAndOID(EntityImpl entityContext)` Generates an object Ref and OID for an Entity Object.
`java.lang.Object` | `generateRowID(EntityImpl entityContext)` Generates a ROWID for an Entity Object.
`java.lang.String` | `getBaseTable(java.sql.Connection conn, java.lang.String schema, java.lang.String name)` unroll any synonyms that may be present, and get the real objectname
`java.util.Vector` | `getConstraints(java.sql.Connection conn, java.lang.String catalog, java.lang.String schema, java.lang.String table)` return vector of with constraint details for this table where each detail is in a String array with this structure: 0 String owner
`abstract java.lang.String` | `getDbType()` returns a string uniquely identifying this type of SQLBuilder.
`int` | `getDefaultBindingStyle()` unless overridden, the binding style is set to JDBC (Oracle versions change this)
`protected abstract java.lang.String` | `getJDBCDriverClassName()` concrete implementations of SQLBuilder must elect a default driver name
`protected java.lang.Object` | `getROWID(EntityImpl entityContext)` Get the ROWID attribute.
`java.util.Vector` | `getSchemaList(java.sql.Connection conn)` return a list of schemas for this database (note that for Oracle this is synonymous with users)
`java.util.Vector` | `getTableList(java.sql.Connection conn, java.lang.String defaultUserName, java.lang.String userName, boolean bTable, boolean bAlias, boolean bView, boolean bSnap)` return a list of tables visible in this connection
`abstract java.lang.String` | `getVersion()` Gets a string describing the version of this implentation of this interface.
`protected java.lang.String` | `getWarningText(java.lang.String message)` for use withinn DebugDiagnostic messages: returns a preamble with the name of the specific implementation in force
`boolean` | `isCharType(int type)` Tests if a type is character
`boolean` | `isNumericType(int type)` Tests if a type is numeric.
`boolean` | `isStreamType(int sqlTypeId)` Provides streaming support.
`void` | `populateJboTypeMapEntries()` Populates the system typemap table with entries appropriate for the JDBC implementation.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### BaseSQLBuilderImpl

    public BaseSQLBuilderImpl()

Method Detail

### getVersion

    public abstract java.lang.String getVersion()

  Description copied from interface: SQLBuilder
  Gets a string describing the version of this implentation of this interface.
  Specified by:
    getVersion in interface SQLBuilder

### getDbType

    public abstract java.lang.String getDbType()

  Description copied from interface: SQLBuilder
  returns a string uniquely identifying this type of SQLBuilder. Examples are: "Oracle" and "OLite"
  Specified by:
    getDbType in interface SQLBuilder

### getDefaultBindingStyle

    public int getDefaultBindingStyle()

  unless overridden, the binding style is set to JDBC (Oracle versions change this)
  Specified by:
    getDefaultBindingStyle in interface SQLBuilder

### doRegisterDefaultDriver

    public void doRegisterDefaultDriver()
                                 throws java.sql.SQLException

  Description copied from interface: SQLBuilder
  Registers the JDBC driver associated with this type of JDBC connection.
  Specified by:
    doRegisterDefaultDriver in interface SQLBuilder
  Tags copied from interface: SQLBuilder
  Throws:
    java.sql.SQLException -

### doEntityDML

    public void doEntityDML(EntityImpl entityContext,
                            int operation,
                            TransactionEvent e)

  Description copied from interface: SQLBuilder
  Performs the appropriate SQL Data Manipulation Language (DML) operations on the database to reflect an update, delete or insert operation on an Entity Object.

  Note: this method is subject to change.

  Specified by:
    doEntityDML in interface SQLBuilder
  Tags copied from interface: SQLBuilder
  Parameters:
    `enrt` - the Entity Object.
    `operation` - one of `DML_INSERT`, `DML_UPDATE`, or `DML_DELETE`.
    `e` - the transaction.

### doEntitySelect

    public void doEntitySelect(EntityImpl entityContext,
                               boolean lock)

  Description copied from interface: SQLBuilder
  Perform the appropriate SQL operations to execute a select operation on an Entity Object.

  Note: this method is subject to change.

  Specified by:
    doEntitySelect in interface SQLBuilder
  Tags copied from interface: SQLBuilder
  Parameters:
    `enrt` - the Entity Object.
    `lock` - if `true`, a "SELECT for UPDATE" statement is used.

### doStatementSetRowPrefetch

    public void doStatementSetRowPrefetch(java.sql.Statement ps,
                                          int prefetchSize)
                                   throws java.sql.SQLException

  Description copied from interface: SQLBuilder
  Performs the equivalent of `setRowPrefetch()` on a statement.
  Specified by:
    doStatementSetRowPrefetch in interface SQLBuilder

### doStatementSetBindingStyle

    public void doStatementSetBindingStyle(java.sql.Statement ps,
                                           int bindingStyle)

  Description copied from interface: SQLBuilder
  Sets the binding style for the statement.
  Specified by:
    doStatementSetBindingStyle in interface SQLBuilder

### doStatementSetBindingStyleDefault

    public void doStatementSetBindingStyleDefault(java.sql.Statement ps)

  Specified by:
    doStatementSetBindingStyleDefault in interface SQLBuilder

### doPreparedStatementDefineColumnType

    public void doPreparedStatementDefineColumnType(java.sql.PreparedStatement ps,
                                                    int colnum,
                                                    int sqltype)
                                             throws java.sql.SQLException

  Description copied from interface: SQLBuilder
  Performs the equivalent of `defineColumnType()` on a prepared statement.
  Specified by:
    doPreparedStatementDefineColumnType in interface SQLBuilder

### doPreparedStatementDefines

    public void doPreparedStatementDefines(java.sql.PreparedStatement ps,
                                           AttributeDefImpl[] attrs)

  Description copied from interface: SQLBuilder
  Performs the equivalent of `clearDefines()` on a prepared statement.
  Specified by:
    doPreparedStatementDefines in interface SQLBuilder

### populateJboTypeMapEntries

    public void populateJboTypeMapEntries()

  Description copied from interface: SQLBuilder
  Populates the system typemap table with entries appropriate for the JDBC implementation.
  Specified by:
    populateJboTypeMapEntries in interface SQLBuilder

### isNumericType

    public boolean isNumericType(int type)

  Description copied from interface: SQLBuilder
  Tests if a type is numeric.
  Specified by:
    isNumericType in interface SQLBuilder

### isCharType

    public boolean isCharType(int type)

  Description copied from interface: SQLBuilder
  Tests if a type is character
  Specified by:
    isCharType in interface SQLBuilder

### doLoadFromResultSet

    public java.lang.Object doLoadFromResultSet(java.lang.Object theTypeFactory,
                                                java.lang.Object theElemFactory,
                                                java.lang.Class theJavaType,
                                                byte attrLoad,
                                                java.sql.ResultSet rs,
                                                int index,
                                                DBTransactionImpl trans)

  Description copied from interface: SQLBuilder
  Loads an object from a result set.

  Note: this method is subject to change.

  Specified by:
    doLoadFromResultSet in interface SQLBuilder
  Tags copied from interface: SQLBuilder
  Parameters:
    `theTypeFactory` - a custom factory to be used for constructing new instances.
    `index` - the index of the object to be loaded.

### doLoadBulkFromResultSet

    public java.lang.Object[] doLoadBulkFromResultSet(AttributeDefImpl[] attrDefs,
                                                      int attrIndex,
                                                      java.sql.ResultSet rs,
                                                      int index,
                                                      DBTransactionImpl trans)

  Description copied from interface: SQLBuilder
  Loads an array of objects from a result set.

  Note: this method is subject to change.

  Specified by:
    doLoadBulkFromResultSet in interface SQLBuilder
  Tags copied from interface: SQLBuilder
  Parameters:
    `index` - the index of the object to be loaded.

### doLoadFromStatement

    public java.lang.Object doLoadFromStatement(java.lang.Object theTypeFactory,
                                                java.lang.Object theElemFactory,
                                                java.lang.Class theJavaType,
                                                java.sql.PreparedStatement ps,
                                                int index,
                                                Transaction trans)

  Description copied from interface: SQLBuilder
  Loads an object from a result set.

  Note: this method is subject to change.

  Specified by:
    doLoadFromStatement in interface SQLBuilder
  Tags copied from interface: SQLBuilder
  Parameters:
    `theTypeFactory` - a custom factory to be used for constructing new instances.
    `index` - the index of the object to be loaded.

### generatePKBasedRef

    public java.lang.Object generatePKBasedRef(EntityImpl entityContext)

  Initial (temporay) value for ROWID, so that entity can be added in cache TODO: this is an awkward piece of non-generic JDBC - not sure how to emulate rowids in the generic case
  Specified by:
    generatePKBasedRef in interface SQLBuilder

### generateRefAndOID

    public java.lang.Object[] generateRefAndOID(EntityImpl entityContext)

  Description copied from interface: SQLBuilder
  Generates an object Ref and OID for an Entity Object. This is used for an object table.
  Specified by:
    generateRefAndOID in interface SQLBuilder

### isStreamType

    public boolean isStreamType(int sqlTypeId)

  Description copied from interface: SQLBuilder
  Provides streaming support.
  Specified by:
    isStreamType in interface SQLBuilder

### generateRowID

    public java.lang.Object generateRowID(EntityImpl entityContext)

  Description copied from interface: SQLBuilder
  Generates a ROWID for an Entity Object.

  Specified by:
    generateRowID in interface SQLBuilder

### getTableList

    public java.util.Vector getTableList(java.sql.Connection conn,
                                         java.lang.String defaultUserName,
                                         java.lang.String userName,
                                         boolean bTable,
                                         boolean bAlias,
                                         boolean bView,
                                         boolean bSnap)
                                  throws java.lang.Exception

  Description copied from interface: SQLBuilder
  return a list of tables visible in this connection
  Specified by:
    getTableList in interface SQLBuilder

### convertFlags

    protected java.lang.String[] convertFlags(boolean bTable,
                                              boolean bAlias,
                                              boolean bView,
                                              boolean bSnap)

### getSchemaList

    public java.util.Vector getSchemaList(java.sql.Connection conn)
                                   throws java.lang.Exception

  return a list of schemas for this database (note that for Oracle this is synonymous with users)
  Specified by:
    getSchemaList in interface SQLBuilder

### getWarningText

    protected java.lang.String getWarningText(java.lang.String message)

  for use withinn DebugDiagnostic messages: returns a preamble with the name of the specific implementation in force

### getJDBCDriverClassName

    protected abstract java.lang.String getJDBCDriverClassName()

  concrete implementations of SQLBuilder must elect a default driver name

### buildUpdateStatement

    protected java.lang.StringBuffer buildUpdateStatement(EntityImpl entityContext,
                                                          java.lang.String sinkName,
                                                          AttributeDefImpl[] cols,
                                                          AttributeDefImpl[] keyCols,
                                                          AttributeDefImpl[] retrCols,
                                                          AttributeDefImpl[] retrKeyCols)

  DOCTD: Method declaration TODO: KM _ don't like the fact that this requires an entitydef
  Parameters:
    `sinkName` -
    `cols` -
    `keyCols` -
    `retrCols` -
    `retrKeyCols` -
  Returns:

### bindInsertStatement

    protected int bindInsertStatement(EntityImpl entityContext,
                                      java.sql.CallableStatement stmt,
                                      AttributeDefImpl[] cols,
                                      AttributeDefImpl[] keyCols,
                                      AttributeDefImpl[] retrCols,
                                      AttributeDefImpl[] retrKeyCols,
                                      java.util.Hashtable retrList,
                                      int bindIndex)
                               throws java.sql.SQLException

  DOCTD: Method declaration
  Parameters:
    `stmt` -
    `cols` -
    `keyCols` -
    `retrCols` -
    `retrKeyCols` -
    `retrList` -
    `bindIndex` -
  Returns:
  Throws:
    java.sql.SQLException -

### bindUpdateStatement

    protected int bindUpdateStatement(EntityImpl entityContext,
                                      java.sql.CallableStatement stmt,
                                      AttributeDefImpl[] cols,
                                      AttributeDefImpl[] keyCols,
                                      AttributeDefImpl[] retrCols,
                                      AttributeDefImpl[] retrKeyCols,
                                      java.util.Hashtable retrList,
                                      int bindIndex)
                               throws java.sql.SQLException

  DOCTD: Method declaration
  Parameters:
    `stmt` -
    `cols` -
    `keyCols` -
    `retrCols` -
    `retrKeyCols` -
    `retrList` -
    `bindIndex` -
  Returns:
  Throws:
    java.sql.SQLException -

### bindWhereClause

    protected int bindWhereClause(EntityImpl entityContext,
                                  java.sql.PreparedStatement stmt,
                                  AttributeDefImpl[] keyCols,
                                  java.lang.Object rowid,
                                  int bindIndex)
                           throws java.sql.SQLException

  Bind the Primary key values for the designated Statement. This routine will perform the bind operation for each of the Primary Key columns.

  For now it's private. We'll only consider it public when we sort out all of the issues with Sources/Sinks.

  The presence or absence of the ROWID value determines whether the ROWID will be used for Row access.

  Parameters:
    `stmt` - the statement to bind the columns to.
    `keyCols` - the Primary key columns.
    `rowid` - the ROWID for the ROW if known.
    `bindIndex` - the baseline idx for performing the bind operations.

### getROWID

    protected java.lang.Object getROWID(EntityImpl entityContext)

  Get the ROWID attribute. The ROWID attribute can be used to gain faster access to the underyling database data. Obtain the value for the ROWID attribute. If this entity doesn't support ROWID attributes, then return NULL. If, for some reason the value of the ROWID attribute isn't present, then return null.
  Returns:
    the value of the ROWID attribute or null if not present or applicable to this entity.

### buildWhereClause

    protected void buildWhereClause(EntityImpl entityContext,
                                    java.lang.StringBuffer buffer,
                                    AttributeDefImpl[] keyCols,
                                    java.lang.Object rowid)

  Construct a SQL WHERE clause for the Entity into the designated Buffer, based upon the Source Columns. This routine will construct a SQL WHERE clause in the StringBuffer passed. It does this by appending the various components of the WHERE Clause (based upon Primary Key columns) into the buffer area.

  For now it's private. We'll only consider it public when we sort out all of the issues with Sources/Sinks.

  The presence or absence of the ROWID value determines whether the ROWID will be used for Row access.

  Parameters:
    `buffer` - the area into which the WHERE Clause will be placed.
    `keyCols` - the Primary key columns.
    `rowid` - the ROWID for the ROW if known.

### buildInsertStatement

    protected java.lang.StringBuffer buildInsertStatement(EntityImpl entityContext,
                                                          java.lang.String sinkName,
                                                          AttributeDefImpl[] cols,
                                                          AttributeDefImpl[] keyCols,
                                                          AttributeDefImpl[] retrCols,
                                                          AttributeDefImpl[] retrKeyCols)

  Construct a SQL INSERT statement
  Parameters:
    `` -

### buildDeleteStatement

    protected java.lang.StringBuffer buildDeleteStatement(EntityImpl entityContext,
                                                          java.lang.String sinkName,
                                                          java.lang.String sinkAlias,
                                                          AttributeDefImpl[] keyCols)

  Construct a SQL INSERT statement
  Parameters:
    `` -

### buildSelectString

    protected void buildSelectString(java.lang.StringBuffer buffer,
                                     java.lang.String sourceName,
                                     AttributeDefImpl[] attrs,
                                     boolean withIntoClause)

  Construct a SQL SELECT statement for the Entity into the designated Buffer. This routine will construct a SQL SELECT statement in the StringBuffer passed. It does this by appending the various components of the SELECT statement into the buffer area.

  Parameters:
    `buffer` - the area into which the SELECT statement will be placed.

### getConstraints

    public java.util.Vector getConstraints(java.sql.Connection conn,
                                           java.lang.String catalog,
                                           java.lang.String schema,
                                           java.lang.String table)
                                    throws java.sql.SQLException

  return vector of with constraint details for this table where each detail is in a String array with this structure: 0 String owner

  1 String constraint_name

  2 String constraint_type

  3 String table_name

  4 String search_condition

  5 Integer delete_rule (cascade)

  6 Integer status (enabled)

  7 Integerdeferrable

  8 Integer deferred

  9 Integer validated

  10 String column_name

  11 Integer position

  Note that JDBC does not support retrieving the details of CHECK constraints - so these will always be missing with this SQL*Flavor

  Specified by:
    getConstraints in interface SQLBuilder

### getBaseTable

    public java.lang.String getBaseTable(java.sql.Connection conn,
                                         java.lang.String schema,
                                         java.lang.String name)
                                  throws java.sql.SQLException

  Description copied from interface: SQLBuilder
  unroll any synonyms that may be present, and get the real objectname
  Specified by:
    getBaseTable in interface SQLBuilder

### dumpConstraint

    protected static void dumpConstraint(java.lang.Object[] constraintEntry)

  debug method to be called by all implementors of getConstraints - provides formatted output of the complex constraint struct

### capabilityCanReuseLockStatements

    protected boolean capabilityCanReuseLockStatements()

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Business Components
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD