org.castor.cpa.persistence.sql.driver
Class SapDbFactory

java.lang.Object
  extended by org.castor.cpa.persistence.sql.driver.BaseFactory
      extended by org.castor.cpa.persistence.sql.driver.GenericFactory
          extended by org.castor.cpa.persistence.sql.driver.SapDbFactory
All Implemented Interfaces:
PersistenceFactory

public final class SapDbFactory
extends GenericFactory

PersistenceFactory for SAP DB.

Version:
$Revision: 8994 $ $Date: 2011-08-02 01:40:59 +0200 (Di, 02 Aug 2011) $
Author:
Oleg Nitz, Bruce Snyder

Field Summary
static java.lang.String FACTORY_NAME
           
 
Constructor Summary
SapDbFactory()
           
 
Method Summary
 java.lang.Class<?> adjustSqlType(java.lang.Class<?> sqlType)
          For INTEGER type ResultSet.getObject() returns BigDecimal: dependent objects with integer identity cause type conversion error (need to fix SimpleQueryExecutor).
 Visitor createQueryVisitor()
          Method to create an instance of database specific visitor to be used to construct statement.
 PersistenceQuery getCallQuery(java.lang.String call, java.lang.Class<?>[] paramTypes, java.lang.Class<?> javaClass, java.lang.String[] fields, int[] sqlTypes)
          Needed to process OQL queries of "CALL" type (using stored procedure call).
 java.lang.String getFactoryName()
          Returns the name of this factory.
 java.lang.String getIdentitySelectString(java.lang.String tableName, java.lang.String columnName)
          Returns the database specific query string for retrieving last identity value.
 QueryExpression getQueryExpression()
          Returns a new empty query expression suitable for the underlying SQL engine.
 java.lang.String getSequenceBeforeSelectString(java.lang.String seqName, java.lang.String tableName, int increment)
          Returns the database specific SELECT query string for fetching identity before the next INSERT statement gets executed.
 boolean isKeyGeneratorIdentitySupported()
          Does persistence factory support generation of unique keys with identity key generator?
 boolean isKeyGeneratorIdentityTypeSupported(int type)
          Does identity key generator support generation of unique keys for the given SQL type?
 boolean isKeyGeneratorSequenceSupported(boolean returning, boolean trigger)
          Does persistence factory support generation of new key at the time of new object creation with sequence key generator?
 boolean isKeyGeneratorSequenceTypeSupported(int type)
          Does Sequence key generator support generation of key for the given SQL type?
 java.lang.String quoteName(java.lang.String name)
          Returns the quoted identifier suitable for preventing conflicts between database identifiers and reserved keywords.
 
Methods inherited from class org.castor.cpa.persistence.sql.driver.GenericFactory
doubleQuoteName, getSequenceAfterSelectString
 
Methods inherited from class org.castor.cpa.persistence.sql.driver.BaseFactory
getKeyGenerator, getPersistence
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FACTORY_NAME

public static final java.lang.String FACTORY_NAME
See Also:
Constant Field Values
Constructor Detail

SapDbFactory

public SapDbFactory()
Method Detail

getFactoryName

public java.lang.String getFactoryName()
Description copied from interface: PersistenceFactory
Returns the name of this factory. A descriptive name that indicates the type of supported database server or SQL syntax.

Specified by:
getFactoryName in interface PersistenceFactory
Overrides:
getFactoryName in class GenericFactory
Returns:
The name of this factory

createQueryVisitor

public Visitor createQueryVisitor()
Description copied from interface: PersistenceFactory
Method to create an instance of database specific visitor to be used to construct statement.

Specified by:
createQueryVisitor in interface PersistenceFactory
Overrides:
createQueryVisitor in class GenericFactory
Returns:
Database specific visitor instance to be used.

getQueryExpression

public QueryExpression getQueryExpression()
Description copied from interface: PersistenceFactory
Returns a new empty query expression suitable for the underlying SQL engine. The implementation will construct SQL query statements in the preferred syntax.

Specified by:
getQueryExpression in interface PersistenceFactory
Overrides:
getQueryExpression in class GenericFactory
Returns:
New empty query expression

quoteName

public java.lang.String quoteName(java.lang.String name)
Description copied from interface: PersistenceFactory
Returns the quoted identifier suitable for preventing conflicts between database identifiers and reserved keywords.

Specified by:
quoteName in interface PersistenceFactory
Overrides:
quoteName in class GenericFactory
Parameters:
name - The identifier (table, column, etc)
Returns:
The quoted identifier

getCallQuery

public PersistenceQuery getCallQuery(java.lang.String call,
                                     java.lang.Class<?>[] paramTypes,
                                     java.lang.Class<?> javaClass,
                                     java.lang.String[] fields,
                                     int[] sqlTypes)
Needed to process OQL queries of "CALL" type (using stored procedure call). This feature is specific for JDO.

Specified by:
getCallQuery in interface PersistenceFactory
Overrides:
getCallQuery in class BaseFactory
Parameters:
call - Stored procedure call (without "{call")
paramTypes - The types of the query parameters
javaClass - The Java class of the query results
fields - The field names
sqlTypes - The field SQL types
Returns:
null if this feature is not supported.

adjustSqlType

public java.lang.Class<?> adjustSqlType(java.lang.Class<?> sqlType)
For INTEGER type ResultSet.getObject() returns BigDecimal: dependent objects with integer identity cause type conversion error (need to fix SimpleQueryExecutor).

Specified by:
adjustSqlType in interface PersistenceFactory
Overrides:
adjustSqlType in class BaseFactory
Parameters:
sqlType - The correspondent Java class for the SQL type in mapping.xml
Returns:
The correspondent Java class for the SQL type that should be used instead.

isKeyGeneratorIdentitySupported

public boolean isKeyGeneratorIdentitySupported()
Description copied from class: GenericFactory
Does persistence factory support generation of unique keys with identity key generator?

Specified by:
isKeyGeneratorIdentitySupported in interface PersistenceFactory
Overrides:
isKeyGeneratorIdentitySupported in class GenericFactory
Returns:
true if persistence factory is able to generate unique keys with identity key generator, false otherwise.

isKeyGeneratorIdentityTypeSupported

public boolean isKeyGeneratorIdentityTypeSupported(int type)
Description copied from class: GenericFactory
Does identity key generator support generation of unique keys for the given SQL type?

Specified by:
isKeyGeneratorIdentityTypeSupported in interface PersistenceFactory
Overrides:
isKeyGeneratorIdentityTypeSupported in class GenericFactory
Parameters:
type - SQL type to check for support by identity key generator.
Returns:
true if persistence factory is able to generate unique keys of given SQL type with identity key generator, false otherwise.

getIdentitySelectString

public java.lang.String getIdentitySelectString(java.lang.String tableName,
                                                java.lang.String columnName)
Description copied from class: GenericFactory
Returns the database specific query string for retrieving last identity value.

Specified by:
getIdentitySelectString in interface PersistenceFactory
Overrides:
getIdentitySelectString in class GenericFactory
Parameters:
tableName - Name of the table from which identity needs to be fetched.
columnName - Name of the column from which identity needs to be fetched.
Returns:
SQL Query string for fetching the identity value.

isKeyGeneratorSequenceSupported

public boolean isKeyGeneratorSequenceSupported(boolean returning,
                                               boolean trigger)
Description copied from class: GenericFactory
Does persistence factory support generation of new key at the time of new object creation with sequence key generator?

Specified by:
isKeyGeneratorSequenceSupported in interface PersistenceFactory
Overrides:
isKeyGeneratorSequenceSupported in class GenericFactory
Parameters:
returning - Return generated key value with insert statement?
trigger - Use a database trigger to generate key?
Returns:
true if persistence factory is able to generate key with sequence key generator, false otherwise.

isKeyGeneratorSequenceTypeSupported

public boolean isKeyGeneratorSequenceTypeSupported(int type)
Does Sequence key generator support generation of key for the given SQL type?

Specified by:
isKeyGeneratorSequenceTypeSupported in interface PersistenceFactory
Overrides:
isKeyGeneratorSequenceTypeSupported in class GenericFactory
Parameters:
type - SQL type to check for support by sequence key generator.
Returns:
true if persistence factory is able to generate key of given SQL type with sequence key generator, false otherwise.

getSequenceBeforeSelectString

public java.lang.String getSequenceBeforeSelectString(java.lang.String seqName,
                                                      java.lang.String tableName,
                                                      int increment)
Description copied from class: GenericFactory
Returns the database specific SELECT query string for fetching identity before the next INSERT statement gets executed.

Specified by:
getSequenceBeforeSelectString in interface PersistenceFactory
Overrides:
getSequenceBeforeSelectString in class GenericFactory
Parameters:
seqName - Name of sequence.
tableName - Name of the table from which identity will be fetched.
increment - Increment value used in Interbase database engine.
Returns:
SELECT sql string


Intalio Inc. (C) 1999-2008. All rights reserved http://www.intalio.com