org.jpox.store.rdbms.adapter
Class OracleAdapter

java.lang.Object
  extended by org.jpox.store.mapped.AbstractDatastoreAdapter
      extended by org.jpox.store.rdbms.adapter.DatabaseAdapter
          extended by org.jpox.store.rdbms.adapter.OracleAdapter
All Implemented Interfaces:
org.jpox.store.mapped.DatastoreAdapter, org.jpox.store.mapped.expression.ExpressionConversionAdapter, org.jpox.store.mapped.expression.ExpressionLogicSetAdapter, org.jpox.store.mapped.expression.ExpressionMethodAdapter, org.jpox.store.mapped.expression.ExpressionOperatorAdapter, org.jpox.store.mapped.expression.ExpressionPatternAdapter, org.jpox.store.mapped.expression.ExpressionSupportedFeaturesAdapter, RDBMSAdapter

public class OracleAdapter
extends DatabaseAdapter

Provides methods for adapting SQL language elements to the Oracle database.

Version:
$Revision: 1.51 $
See Also:
DatabaseAdapter

Nested Class Summary
 
Nested classes/interfaces inherited from class org.jpox.store.rdbms.adapter.DatabaseAdapter
DatabaseAdapter.JDBCTypeInfo
 
Field Summary
static java.lang.String ORACLE_10_RESERVED_WORDS
          A string containing the list of Oracle keywords This list is normally obtained dynamically from the driver using DatabaseMetaData.getSQLKeywords() Based on database Oracle10g
static java.lang.String ORACLE_8_RESERVED_WORDS
          A string containing the list of Oracle keywords This list is normally obtained dynamically from the driver using DatabaseMetaData.getSQLKeywords() Based on database Oracle8
static java.lang.String ORACLE_9_RESERVED_WORDS
          A string containing the list of Oracle keywords This list is normally obtained dynamically from the driver using DatabaseMetaData.getSQLKeywords() Based on database Oracle9i
 
Fields inherited from class org.jpox.store.rdbms.adapter.DatabaseAdapter
catalogSeparator, driverMajorVersion, driverMinorVersion, driverName, driverVersion, LOCALISER, maxColumnNameLength, maxConstraintNameLength, maxIndexNameLength, maxTableNameLength, storesLowerCaseIdentifiers, storesLowerCaseQuotedIdentifiers, storesMixedCaseIdentifiers, storesMixedCaseQuotedIdentifiers, storesMixedCaseQuotedSensitiveIdentifiers, storesMixedCaseSensitiveIdentifiers, storesUpperCaseIdentifiers, storesUpperCaseQuotedIdentifiers, supportsCatalogsInTableDefinitions, supportsSchemasInTableDefinitions, supportsStatementBatching, typesByTypeNumber
 
Fields inherited from class org.jpox.store.mapped.AbstractDatastoreAdapter
datastoreMajorVersion, datastoreMinorVersion, datastoreProductName, datastoreProductVersion, datastoreRevisionVersion, identifierQuoteString, LOCALISER_BASE, mappingManager, reservedKeywords
 
Constructor Summary
OracleAdapter(java.sql.DatabaseMetaData metadata)
          Constructs an Oracle adapter based on the given JDBC metadata.
 
Method Summary
 java.lang.String getCatalogName(java.sql.Connection conn)
          Accessor for the Catalog Name for this datastore.
 java.sql.ResultSet getColumns(java.sql.Connection conn, java.lang.String catalog, java.lang.String schema, java.lang.String table)
          Accessor for table and column information for a catalog/schema in this datastore.
 java.lang.String getDatastoreDateStatement()
          Accessor for a statement that will return the statement to use to get the datastore date.
 org.jpox.store.mapped.expression.NumericExpression getDayMethod(org.jpox.store.mapped.expression.SqlTemporalExpression date)
          Returns the appropriate SQL expression for the JDOQL Date.getDay() method.
 java.lang.String getDropTableStatement(org.jpox.store.mapped.DatastoreContainerObject table)
          Method to return the drop table statement for Oracle.
 java.sql.ResultSet getExistingIndexes(java.sql.Connection conn, java.sql.DatabaseMetaData dmd, java.lang.String catalog, java.lang.String schema, java.lang.String table)
          Provide the existing indexes in the database for the table
 org.jpox.store.mapped.expression.NumericExpression getHourMethod(org.jpox.store.mapped.expression.SqlTemporalExpression time)
          Returns the appropriate SQL expression for the JDOQL Time.getHour() method.
 org.jpox.store.mapped.expression.NumericExpression getMinuteMethod(org.jpox.store.mapped.expression.SqlTemporalExpression time)
          Returns the appropriate SQL expression for the JDOQL Time.getMinute() method.
 org.jpox.store.mapped.expression.NumericExpression getMonthMethod(org.jpox.store.mapped.expression.SqlTemporalExpression date)
          Returns the appropriate SQL expression for the JDOQL Date.getMonth() method.
 org.jpox.store.mapped.mapping.MappingManager getNewMappingManager()
          Acessor for a new MappingManager
 java.lang.String getNonAnsiInnerJoinWhereClause(java.lang.String col1, java.lang.String col2)
          Accessor for the WHERE clause to add to provide an INNER JOIN using non-ANSI syntax.
 java.lang.String getNonAnsiLeftOuterJoinWhereClause(java.lang.String col1, java.lang.String col2)
          Accessor for the WHERE clause to add to provide a LEFT OUTER JOIN using non-ANSI syntax.
 java.lang.String getNonAnsiRightOuterJoinWhereClause(java.lang.String col1, java.lang.String col2)
          Accessor for the WHERE clause to add to provide a LEFT OUTER JOIN using non-ANSI syntax.
 java.lang.String getSchemaName(java.sql.Connection conn)
          Accessor for the Schema Name for this datastore.
 org.jpox.store.mapped.expression.NumericExpression getSecondMethod(org.jpox.store.mapped.expression.SqlTemporalExpression time)
          Returns the appropriate SQL expression for the JDOQL Time.getSecond() method.
 java.lang.String getSequenceCreateStmt(java.lang.String sequence_name, java.lang.String min, java.lang.String max, java.lang.String start, java.lang.String increment, java.lang.String cache_size)
          Accessor for the sequence statement to create the sequence.
 java.lang.String getSequenceNextStmt(java.lang.String sequence_name)
          Accessor for the statement for getting the next id from the sequence for this datastore.
 java.lang.String getSurrogateForEmptyStrings()
          Some databases, Oracle, treats an empty string (0 length) equals null
 int getTransactionIsolationForSchemaCreation()
          Accessor for the transaction isolation level to use during schema creation.
 java.lang.String getVendorID()
          Accessor for the vendor id
 org.jpox.store.mapped.expression.NumericExpression getYearMethod(org.jpox.store.mapped.expression.SqlTemporalExpression date)
          Returns the appropriate SQL expression for the JDOQL Date.getYear() method.
 org.jpox.store.mapped.expression.NumericExpression indexOfMethod(org.jpox.store.mapped.expression.ScalarExpression source, org.jpox.store.mapped.expression.ScalarExpression str, org.jpox.store.mapped.expression.NumericExpression from)
          Returns the appropriate SQL expression for the JDOQL String.indexOf() method.
 boolean isNullEqualsEmptyStrings()
          Some databases, Oracle, treats an empty string (0 length) equals null
 org.jpox.store.mapped.expression.NumericExpression lengthMethod(org.jpox.store.mapped.expression.StringExpression str)
          Returns the appropriate SQL expression for the JDOQL String.length() method.
 org.jpox.store.mapped.expression.NumericExpression modOperator(org.jpox.store.mapped.expression.ScalarExpression operand1, org.jpox.store.mapped.expression.ScalarExpression operand2)
          Method to generate a modulus expression.
 ColumnInfo newColumnInfo(java.sql.ResultSet rs)
          Accessor for ColumnInfo
 org.jpox.store.mapped.expression.QueryExpression newQueryStatement(org.jpox.store.mapped.DatastoreContainerObject table, org.jpox.ClassLoaderResolver clr)
          Accessor for a new query statement.
 org.jpox.store.mapped.expression.QueryExpression newQueryStatement(org.jpox.store.mapped.DatastoreContainerObject table, org.jpox.store.mapped.DatastoreIdentifier rangeVar, org.jpox.ClassLoaderResolver clr)
          Accessor for a new query statement.
 org.jpox.store.mapped.expression.LogicSetExpression newTableExpression(org.jpox.store.mapped.expression.QueryExpression qs, org.jpox.store.mapped.DatastoreContainerObject table, org.jpox.store.mapped.DatastoreIdentifier rangeVar)
          Returns a new TableExpression object appropriate for this DBMS.
 boolean requiresColumnDefaultsInitialising()
          Whether to initialise the column default values for this datastore.
 org.jpox.store.mapped.expression.StringExpression substringMethod(org.jpox.store.mapped.expression.StringExpression str, org.jpox.store.mapped.expression.NumericExpression begin)
          Returns the appropriate SQL expression for the JDOQL String.substring(str,begin) method.
 org.jpox.store.mapped.expression.StringExpression substringMethod(org.jpox.store.mapped.expression.StringExpression str, org.jpox.store.mapped.expression.NumericExpression begin, org.jpox.store.mapped.expression.NumericExpression end)
          Returns the appropriate SQL expression for the JDOQL String.substring(str,begin,end) method.
 boolean supportsAnsiJoinSyntax()
          Accessor for whether the RDBMS supports ANSI join syntax.
 boolean supportsBooleanComparison()
          Whether we support Boolean comparisons.
 boolean supportsForeignKeyDeleteAction(ForeignKey.FKAction action)
          Whether this datastore supports the specified foreign key delete action
 boolean supportsForeignKeyUpdateAction(ForeignKey.FKAction action)
          Whether this datastore supports the specified foreign key update action
 boolean supportsLockWithSelectForUpdate()
          Whether this datastore supports locking using SELECT ...
 boolean supportsSequences()
          Whether we support sequences.
 
Methods inherited from class org.jpox.store.rdbms.adapter.DatabaseAdapter
absMethod, acosMethod, addTypeInfo, asinMethod, atanMethod, cartersianProduct, ceilMethod, closeConnection, concatOperator, cosMethod, createIndexesBeforeForeignKeys, endsWithMethod, expMethod, floorMethod, getAddCandidateKeyStatement, getAddColumnStatement, getAddForeignKeyStatement, getAddPrimaryKeyStatement, getAutoIncrementKeyword, getAutoIncrementStmt, getCatalogSeparator, getCharColumnsPaddedWithSpaces, getCheckConstraintForValues, getColumns, getConnection, getContinuationString, getCreateIndexStatement, getCreateTableStatement, getCurrentDateMethod, getCurrentTimeMethod, getCurrentTimestampMethod, getDriverMajorVersion, getDriverMinorVersion, getDropViewStatement, getEscapeCharacter, getEscapedPatternExpression, getEscapePatternExpression, getInsertStatementForNoColumns, getMaxColumnNameLength, getMaxConstraintNameLength, getMaxForeignKeys, getMaxIndexes, getMaxIndexNameLength, getMaxTableNameLength, getNewUUIDFunction, getOperatorConcat, getPatternExpressionAnyCharacter, getPatternExpressionZeroMoreCharacters, getPlaceWithOptionAfterFromClause, getPlaceWithOptionWithinJoinClauses, getRangeByLimitSelectClause, getRangeByLimitWhereClause, getRangeByRowNumberColumn, getRequiredTransactionIsolationLevel, getSelectNewUUIDStmt, getSelectWithLockOption, getSupportsPersistOfUnassignedChar, getTables, getTypeInfo, getUnlimitedLengthPrecisionValue, includeOrderByColumnsInSelect, initialiseDatastore, isIdentityFieldDataType, isSQLKeyword, isStoresLowerCaseIdentifiers, isStoresLowerCaseQuotedIdentifiers, isStoresMixedCaseIdentifiers, isStoresMixedCaseQuotedIdentifiers, isStoresUpperCaseIdentifiers, isStoresUpperCaseQuotedIdentifiers, isValidPrimaryKeyType, iteratorReservedWords, iteratorTypeInfo, loadDatastoreMapping, logConfiguration, logMethod, matchesMethod, newExportedKeyInfo, newForeignKeyInfo, newTypeInfo, parseKeywordList, setDefaultTypeInfoForJDBCType, sinMethod, sqrtMethod, startsWithMethod, supportsAlterTableDropConstraint, supportsAlterTableDropForeignKeyConstraint, supportsAnalysisMethods, supportsAutoIncrementColumnTypeSpecification, supportsAutoIncrementKeysNullSpecification, supportsCatalogsInTableDefinitions, supportsCheckConstraintsInEndCreateStatements, supportsCheckInCreateStatements, supportsDefaultBeforeNullInColumnOptions, supportsDefaultKeywordInColumnOptions, supportsDefaultKeywordWithNotNullInColumnOptions, supportsDeferredConstraints, supportsDistinctWithSelectForUpdate, supportsEscapeExpressionInLikePredicate, supportsExistsSyntax, supportsNullsInCandidateKeys, supportsNullsKeywordInColumnOptions, supportsPrimaryKeyInCreateStatements, supportsProjectionInTableReferenceJoins, supportsSchemasInTableDefinitions, supportsSettingBlobUsingSetString, supportsSettingClobUsingSetString, supportsStatementBatching, supportsStatementGetGeneratedKeys, supportsTransactionIsolationLevel, supportsUnionSyntax, supportsUniqueConstraintsInEndCreateStatements, tanMethod, toNumericExpression, toString, toStringExpression, toStringExpression, translateMethod, trimMethod, useUnionAll
 
Methods inherited from class org.jpox.store.mapped.AbstractDatastoreAdapter
getAdapterTime, getDatastoreMajorVersion, getDatastoreMinorVersion, getIdentifierQuoteString, getMapping, getMapping, getMapping, getMapping, getMapping, getMappingManager, getMiliseconds, getTime, isBitReallyBoolean, isReservedKeyword, supportsIdentityFields, supportsQueryFetchSize
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.jpox.store.rdbms.adapter.RDBMSAdapter
getIdentifierQuoteString
 
Methods inherited from interface org.jpox.store.mapped.DatastoreAdapter
getAdapterTime, getDatastoreMajorVersion, getDatastoreMinorVersion, getMapping, getMapping, getMapping, getMapping, getMappingManager, isBitReallyBoolean, isReservedKeyword, supportsIdentityFields, supportsQueryFetchSize
 

Field Detail

ORACLE_8_RESERVED_WORDS

public static final java.lang.String ORACLE_8_RESERVED_WORDS
A string containing the list of Oracle keywords This list is normally obtained dynamically from the driver using DatabaseMetaData.getSQLKeywords() Based on database Oracle8

See Also:
Constant Field Values

ORACLE_9_RESERVED_WORDS

public static final java.lang.String ORACLE_9_RESERVED_WORDS
A string containing the list of Oracle keywords This list is normally obtained dynamically from the driver using DatabaseMetaData.getSQLKeywords() Based on database Oracle9i

See Also:
Constant Field Values

ORACLE_10_RESERVED_WORDS

public static final java.lang.String ORACLE_10_RESERVED_WORDS
A string containing the list of Oracle keywords This list is normally obtained dynamically from the driver using DatabaseMetaData.getSQLKeywords() Based on database Oracle10g

See Also:
Constant Field Values
Constructor Detail

OracleAdapter

public OracleAdapter(java.sql.DatabaseMetaData metadata)
Constructs an Oracle adapter based on the given JDBC metadata.

Parameters:
metadata - the database metadata.
Method Detail

getVendorID

public java.lang.String getVendorID()
Accessor for the vendor id

Specified by:
getVendorID in interface org.jpox.store.mapped.DatastoreAdapter
Overrides:
getVendorID in class org.jpox.store.mapped.AbstractDatastoreAdapter
Returns:
The Oracle vendor id

isNullEqualsEmptyStrings

public boolean isNullEqualsEmptyStrings()
Some databases, Oracle, treats an empty string (0 length) equals null

Specified by:
isNullEqualsEmptyStrings in interface RDBMSAdapter
Overrides:
isNullEqualsEmptyStrings in class DatabaseAdapter
Returns:
whether the database treats an empty string as null

getSurrogateForEmptyStrings

public java.lang.String getSurrogateForEmptyStrings()
Some databases, Oracle, treats an empty string (0 length) equals null

Specified by:
getSurrogateForEmptyStrings in interface RDBMSAdapter
Overrides:
getSurrogateForEmptyStrings in class DatabaseAdapter
Returns:
returns a surrogate to replace the empty string in the database otherwise it would be treated as null

getCatalogName

public java.lang.String getCatalogName(java.sql.Connection conn)
                                throws java.sql.SQLException
Description copied from class: DatabaseAdapter
Accessor for the Catalog Name for this datastore.

Specified by:
getCatalogName in interface RDBMSAdapter
Overrides:
getCatalogName in class DatabaseAdapter
Parameters:
conn - Connection to the datastore
Returns:
null, because oracle does not have catalogs
Throws:
java.sql.SQLException - Thrown if error occurs in determining the catalog name.

getSchemaName

public java.lang.String getSchemaName(java.sql.Connection conn)
                               throws java.sql.SQLException
Description copied from class: DatabaseAdapter
Accessor for the Schema Name for this datastore.

Specified by:
getSchemaName in interface RDBMSAdapter
Overrides:
getSchemaName in class DatabaseAdapter
Parameters:
conn - Connection to the datastore
Returns:
The schema name
Throws:
java.sql.SQLException - Thrown if error occurs in determining the schema name.

supportsLockWithSelectForUpdate

public boolean supportsLockWithSelectForUpdate()
Whether this datastore supports locking using SELECT ... FOR UPDATE.

Specified by:
supportsLockWithSelectForUpdate in interface RDBMSAdapter
Overrides:
supportsLockWithSelectForUpdate in class DatabaseAdapter
Returns:
whether we support locking using SELECT ... FOR UPDATE.

supportsForeignKeyDeleteAction

public boolean supportsForeignKeyDeleteAction(ForeignKey.FKAction action)
Whether this datastore supports the specified foreign key delete action

Specified by:
supportsForeignKeyDeleteAction in interface RDBMSAdapter
Overrides:
supportsForeignKeyDeleteAction in class DatabaseAdapter
Parameters:
action - The delete action
Returns:
Whether it is supported

supportsForeignKeyUpdateAction

public boolean supportsForeignKeyUpdateAction(ForeignKey.FKAction action)
Whether this datastore supports the specified foreign key update action

Specified by:
supportsForeignKeyUpdateAction in interface RDBMSAdapter
Overrides:
supportsForeignKeyUpdateAction in class DatabaseAdapter
Parameters:
action - The update action
Returns:
Whether it is supported

supportsBooleanComparison

public boolean supportsBooleanComparison()
Description copied from class: DatabaseAdapter
Whether we support Boolean comparisons.

Specified by:
supportsBooleanComparison in interface org.jpox.store.mapped.expression.ExpressionSupportedFeaturesAdapter
Overrides:
supportsBooleanComparison in class DatabaseAdapter
Returns:
whether we support Boolean comparisons.

supportsAnsiJoinSyntax

public boolean supportsAnsiJoinSyntax()
Accessor for whether the RDBMS supports ANSI join syntax.

Specified by:
supportsAnsiJoinSyntax in interface RDBMSAdapter
Overrides:
supportsAnsiJoinSyntax in class DatabaseAdapter
Returns:
Whether the RDBMS supports ANSI join syntax

getNonAnsiInnerJoinWhereClause

public java.lang.String getNonAnsiInnerJoinWhereClause(java.lang.String col1,
                                                       java.lang.String col2)
Accessor for the WHERE clause to add to provide an INNER JOIN using non-ANSI syntax.

Specified by:
getNonAnsiInnerJoinWhereClause in interface RDBMSAdapter
Overrides:
getNonAnsiInnerJoinWhereClause in class DatabaseAdapter
Parameters:
col1 - The main datastore column
col2 - The secondary column to join to
Returns:
The Inner Join WHERE clause.

getNonAnsiLeftOuterJoinWhereClause

public java.lang.String getNonAnsiLeftOuterJoinWhereClause(java.lang.String col1,
                                                           java.lang.String col2)
Accessor for the WHERE clause to add to provide a LEFT OUTER JOIN using non-ANSI syntax.

Specified by:
getNonAnsiLeftOuterJoinWhereClause in interface RDBMSAdapter
Overrides:
getNonAnsiLeftOuterJoinWhereClause in class DatabaseAdapter
Parameters:
col1 - The main datastore column
col2 - The secondary column to join to
Returns:
The Left Outer Join WHERE clause.

getNonAnsiRightOuterJoinWhereClause

public java.lang.String getNonAnsiRightOuterJoinWhereClause(java.lang.String col1,
                                                            java.lang.String col2)
Accessor for the WHERE clause to add to provide a LEFT OUTER JOIN using non-ANSI syntax.

Overrides:
getNonAnsiRightOuterJoinWhereClause in class DatabaseAdapter
Parameters:
col1 - The main datastore column
col2 - The secondary column to join to
Returns:
The Left Outer Join WHERE clause.

getExistingIndexes

public java.sql.ResultSet getExistingIndexes(java.sql.Connection conn,
                                             java.sql.DatabaseMetaData dmd,
                                             java.lang.String catalog,
                                             java.lang.String schema,
                                             java.lang.String table)
                                      throws java.sql.SQLException
Provide the existing indexes in the database for the table

Specified by:
getExistingIndexes in interface RDBMSAdapter
Overrides:
getExistingIndexes in class DatabaseAdapter
Parameters:
conn - the JDBC connection
dmd - the DatabaseMetaData
catalog - the catalog name
schema - the schema name
table - the table name
Returns:
a ResultSet with the format @see DatabaseMetaData#getIndexInfo(java.lang.String, java.lang.String, java.lang.String, boolean, boolean)
Throws:
java.sql.SQLException

newQueryStatement

public org.jpox.store.mapped.expression.QueryExpression newQueryStatement(org.jpox.store.mapped.DatastoreContainerObject table,
                                                                          org.jpox.ClassLoaderResolver clr)
Accessor for a new query statement.

Specified by:
newQueryStatement in interface org.jpox.store.mapped.DatastoreAdapter
Overrides:
newQueryStatement in class DatabaseAdapter
Parameters:
table - The table to query
clr - The ClassLoaderResolver
Returns:
The Query Statement

newQueryStatement

public org.jpox.store.mapped.expression.QueryExpression newQueryStatement(org.jpox.store.mapped.DatastoreContainerObject table,
                                                                          org.jpox.store.mapped.DatastoreIdentifier rangeVar,
                                                                          org.jpox.ClassLoaderResolver clr)
Accessor for a new query statement.

Specified by:
newQueryStatement in interface org.jpox.store.mapped.DatastoreAdapter
Overrides:
newQueryStatement in class DatabaseAdapter
Parameters:
table - The table to query
rangeVar - A range variable for the query
clr - The ClassLoaderResolver
Returns:
The Query Statement

newTableExpression

public org.jpox.store.mapped.expression.LogicSetExpression newTableExpression(org.jpox.store.mapped.expression.QueryExpression qs,
                                                                              org.jpox.store.mapped.DatastoreContainerObject table,
                                                                              org.jpox.store.mapped.DatastoreIdentifier rangeVar)
Description copied from class: DatabaseAdapter
Returns a new TableExpression object appropriate for this DBMS. This should be an instance of one of the three built-in styles of table expression: TableExprAsSubjoins is the default, which arguably produces the most readable SQL but doesn't work on all DBMS's. TableExprAsSubjoins should work anywhere, but may be less efficient.

Specified by:
newTableExpression in interface RDBMSAdapter
Overrides:
newTableExpression in class DatabaseAdapter
Parameters:
qs - The query statement in which the table expression will be included.
table - The main table in the expression.
rangeVar - The SQL alias, or "range variable", to assign to the expression or to the main table.
Returns:
The expression

getDropTableStatement

public java.lang.String getDropTableStatement(org.jpox.store.mapped.DatastoreContainerObject table)
Method to return the drop table statement for Oracle.

Specified by:
getDropTableStatement in interface RDBMSAdapter
Overrides:
getDropTableStatement in class DatabaseAdapter
Parameters:
table - The table
Returns:
The statement text

lengthMethod

public org.jpox.store.mapped.expression.NumericExpression lengthMethod(org.jpox.store.mapped.expression.StringExpression str)
Description copied from class: DatabaseAdapter
Returns the appropriate SQL expression for the JDOQL String.length() method. It should return something like:

 CHAR_LENGTH(str)
 

Specified by:
lengthMethod in interface org.jpox.store.mapped.expression.ExpressionMethodAdapter
Overrides:
lengthMethod in class DatabaseAdapter
Parameters:
str - The argument to the length() method.
Returns:
The text of the SQL expression.

substringMethod

public org.jpox.store.mapped.expression.StringExpression substringMethod(org.jpox.store.mapped.expression.StringExpression str,
                                                                         org.jpox.store.mapped.expression.NumericExpression begin)
Description copied from class: DatabaseAdapter
Returns the appropriate SQL expression for the JDOQL String.substring(str,begin) method. It should return something like:

 SUBSTRING(str FROM begin)
 
Note that the value of begin is base 0(Java-style), while most SQL string functions use base 1.

Specified by:
substringMethod in interface org.jpox.store.mapped.expression.ExpressionMethodAdapter
Overrides:
substringMethod in class DatabaseAdapter
Parameters:
str - The first argument to the substring() method.
begin - The second argument to the substring() method.
Returns:
The text of the SQL expression.

substringMethod

public org.jpox.store.mapped.expression.StringExpression substringMethod(org.jpox.store.mapped.expression.StringExpression str,
                                                                         org.jpox.store.mapped.expression.NumericExpression begin,
                                                                         org.jpox.store.mapped.expression.NumericExpression end)
Description copied from class: DatabaseAdapter
Returns the appropriate SQL expression for the JDOQL String.substring(str,begin,end) method. It should return something like:

 SUBSTRING(str FROM begin FOR len)
 
Note that the value of begin is base 0 (Java-style), while most SQL string functions use base 1. Note also that an end position is given, while most SQL substring functions take a length.

Specified by:
substringMethod in interface org.jpox.store.mapped.expression.ExpressionMethodAdapter
Overrides:
substringMethod in class DatabaseAdapter
Parameters:
str - The first argument to the substring() method.
begin - The second argument to the substring() method.
end - The third argument to the substring() method.
Returns:
The text of the SQL expression.

modOperator

public org.jpox.store.mapped.expression.NumericExpression modOperator(org.jpox.store.mapped.expression.ScalarExpression operand1,
                                                                      org.jpox.store.mapped.expression.ScalarExpression operand2)
Method to generate a modulus expression. The binary % operator is said to yield the remainder of its operands from an implied division; the left-hand operand is the dividend and the right-hand operand is the divisor. This returns MOD(expr1, expr2).

Specified by:
modOperator in interface org.jpox.store.mapped.DatastoreAdapter
Specified by:
modOperator in interface org.jpox.store.mapped.expression.ExpressionOperatorAdapter
Overrides:
modOperator in class org.jpox.store.mapped.AbstractDatastoreAdapter
Parameters:
operand1 - the left expression
operand2 - the right expression
Returns:
The Expression for modulus

getDayMethod

public org.jpox.store.mapped.expression.NumericExpression getDayMethod(org.jpox.store.mapped.expression.SqlTemporalExpression date)
Returns the appropriate SQL expression for the JDOQL Date.getDay() method. It should return something like:
TO_NUMBER(TO_CHAR(date,'DD'))

Specified by:
getDayMethod in interface org.jpox.store.mapped.expression.ExpressionMethodAdapter
Overrides:
getDayMethod in class DatabaseAdapter
Parameters:
date - The date for the getDay() method.
Returns:
The text of the SQL expression.

getMonthMethod

public org.jpox.store.mapped.expression.NumericExpression getMonthMethod(org.jpox.store.mapped.expression.SqlTemporalExpression date)
Returns the appropriate SQL expression for the JDOQL Date.getMonth() method. It should return something like:
TO_NUMBER(TO_CHAR(date,'MM'))

Specified by:
getMonthMethod in interface org.jpox.store.mapped.expression.ExpressionMethodAdapter
Overrides:
getMonthMethod in class DatabaseAdapter
Parameters:
date - The date for the getMonth() method.
Returns:
The text of the SQL expression.

getYearMethod

public org.jpox.store.mapped.expression.NumericExpression getYearMethod(org.jpox.store.mapped.expression.SqlTemporalExpression date)
Returns the appropriate SQL expression for the JDOQL Date.getYear() method. It should return something like:
TO_NUMBER(TO_CHAR(date,'YYYY'))

Specified by:
getYearMethod in interface org.jpox.store.mapped.expression.ExpressionMethodAdapter
Overrides:
getYearMethod in class DatabaseAdapter
Parameters:
date - The date for the getYear() method.
Returns:
The text of the SQL expression.

getHourMethod

public org.jpox.store.mapped.expression.NumericExpression getHourMethod(org.jpox.store.mapped.expression.SqlTemporalExpression time)
Returns the appropriate SQL expression for the JDOQL Time.getHour() method. It should return something like:
TO_NUMBER(TO_CHAR(time,'HH24'))

Specified by:
getHourMethod in interface org.jpox.store.mapped.expression.ExpressionMethodAdapter
Overrides:
getHourMethod in class DatabaseAdapter
Parameters:
time - The time for the getHour() method.
Returns:
The text of the SQL expression.

getMinuteMethod

public org.jpox.store.mapped.expression.NumericExpression getMinuteMethod(org.jpox.store.mapped.expression.SqlTemporalExpression time)
Returns the appropriate SQL expression for the JDOQL Time.getMinute() method. It should return something like:
TO_NUMBER(TO_CHAR(time,'MI'))

Specified by:
getMinuteMethod in interface org.jpox.store.mapped.expression.ExpressionMethodAdapter
Overrides:
getMinuteMethod in class DatabaseAdapter
Parameters:
time - The time for the getMinute() method.
Returns:
The text of the SQL expression.

getSecondMethod

public org.jpox.store.mapped.expression.NumericExpression getSecondMethod(org.jpox.store.mapped.expression.SqlTemporalExpression time)
Returns the appropriate SQL expression for the JDOQL Time.getSecond() method. It should return something like:
TO_NUMBER(TO_CHAR(time,'SS'))

Specified by:
getSecondMethod in interface org.jpox.store.mapped.expression.ExpressionMethodAdapter
Overrides:
getSecondMethod in class DatabaseAdapter
Parameters:
time - The time for the getSecond() method.
Returns:
The text of the SQL expression.

indexOfMethod

public org.jpox.store.mapped.expression.NumericExpression indexOfMethod(org.jpox.store.mapped.expression.ScalarExpression source,
                                                                        org.jpox.store.mapped.expression.ScalarExpression str,
                                                                        org.jpox.store.mapped.expression.NumericExpression from)
Returns the appropriate SQL expression for the JDOQL String.indexOf() method. It should return something like:

 INSTR(str, substr [,pos])-1
 
since INSTR returns the first character as position 1. Similarly the "pos" is based on the first position being 1.

Specified by:
indexOfMethod in interface org.jpox.store.mapped.expression.ExpressionMethodAdapter
Overrides:
indexOfMethod in class DatabaseAdapter
Parameters:
source - The expression we want to search.
str - The argument to the indexOf() method.
from - The from position
Returns:
The text of the SQL expression.

supportsSequences

public boolean supportsSequences()
Whether we support sequences.

Specified by:
supportsSequences in interface org.jpox.store.mapped.DatastoreAdapter
Specified by:
supportsSequences in interface RDBMSAdapter
Overrides:
supportsSequences in class org.jpox.store.mapped.AbstractDatastoreAdapter
Returns:
whether we support sequences.

getSequenceCreateStmt

public java.lang.String getSequenceCreateStmt(java.lang.String sequence_name,
                                              java.lang.String min,
                                              java.lang.String max,
                                              java.lang.String start,
                                              java.lang.String increment,
                                              java.lang.String cache_size)
Accessor for the sequence statement to create the sequence.

Specified by:
getSequenceCreateStmt in interface RDBMSAdapter
Overrides:
getSequenceCreateStmt in class DatabaseAdapter
Parameters:
sequence_name - Name of the sequence
min - Minimum value for the sequence
max - Maximum value for the sequence
start - Start value for the sequence
increment - Increment value for the sequence
cache_size - Cache size for the sequence
Returns:
The statement for getting the next id from the sequence

getSequenceNextStmt

public java.lang.String getSequenceNextStmt(java.lang.String sequence_name)
Accessor for the statement for getting the next id from the sequence for this datastore.

Specified by:
getSequenceNextStmt in interface RDBMSAdapter
Overrides:
getSequenceNextStmt in class DatabaseAdapter
Parameters:
sequence_name - Name of the sequence
Returns:
The statement for getting the next id for the sequence

newColumnInfo

public ColumnInfo newColumnInfo(java.sql.ResultSet rs)
Accessor for ColumnInfo

Specified by:
newColumnInfo in interface RDBMSAdapter
Overrides:
newColumnInfo in class DatabaseAdapter
Parameters:
rs - The result set returned from DatabaseMetaData.getColumns().
Returns:
The column info
See Also:
DatabaseAdapter.newColumnInfo(java.sql.ResultSet)

getTransactionIsolationForSchemaCreation

public int getTransactionIsolationForSchemaCreation()
Accessor for the transaction isolation level to use during schema creation.

Specified by:
getTransactionIsolationForSchemaCreation in interface RDBMSAdapter
Overrides:
getTransactionIsolationForSchemaCreation in class DatabaseAdapter
Returns:
The transaction isolation level for schema generation process

requiresColumnDefaultsInitialising

public boolean requiresColumnDefaultsInitialising()
Whether to initialise the column default values for this datastore. With Oracle we cant get the default values without impacting performance so we just ignore the default settings.

Specified by:
requiresColumnDefaultsInitialising in interface RDBMSAdapter
Overrides:
requiresColumnDefaultsInitialising in class DatabaseAdapter
Returns:
Whether we should initialise the column defaults

getColumns

public java.sql.ResultSet getColumns(java.sql.Connection conn,
                                     java.lang.String catalog,
                                     java.lang.String schema,
                                     java.lang.String table)
                              throws java.sql.SQLException
Accessor for table and column information for a catalog/schema in this datastore. An override for the DatabaseMetaData.getColumns() method call as referenced in superclass. The default Oracle-provided getColumns() method is VERY slow for large schemas, particularly due to REMARKS and COLUMN_DEF (column defaults) columns (outer-joins in data dictionary views) Note: This method DOES NOT return default column value (meta-data ResultSet column COLUMN_DEF) as this column causes MAJOR slowdown in meta-data retrieval performance.

Specified by:
getColumns in interface RDBMSAdapter
Overrides:
getColumns in class DatabaseAdapter
Parameters:
conn - Connection to use
catalog - The catalog (null if none)
schema - The schema (null if none)
table - The table (null if all)
Returns:
ResultSet containing the table/column information
Throws:
java.sql.SQLException - Thrown if an error occurs

getNewMappingManager

public org.jpox.store.mapped.mapping.MappingManager getNewMappingManager()
Acessor for a new MappingManager

Overrides:
getNewMappingManager in class DatabaseAdapter
Returns:
the new MappingManager

getDatastoreDateStatement

public java.lang.String getDatastoreDateStatement()
Accessor for a statement that will return the statement to use to get the datastore date.

Specified by:
getDatastoreDateStatement in interface RDBMSAdapter
Overrides:
getDatastoreDateStatement in class DatabaseAdapter
Returns:
SQL statement to get the datastore date


Copyright © -2008 . All Rights Reserved.