org.exolab.castor.jdo.keygen
Class SequenceKeyGenerator

java.lang.Object
  extended by org.exolab.castor.jdo.keygen.SequenceKeyGenerator
All Implemented Interfaces:
KeyGenerator

public final class SequenceKeyGenerator
extends java.lang.Object
implements KeyGenerator

SEQUENCE key generator.

Version:
$Revision: 1.1 $ $Date: 2005/06/01 12:08:16 $
Author:
Oleg Nitz, Bruce Snyder
See Also:
SequenceKeyGeneratorFactory

Field Summary
protected  PersistenceFactory _factory
           
protected  java.lang.String _factoryName
           
protected  java.lang.String _seqName
           
 
Fields inherited from interface org.exolab.castor.persist.spi.KeyGenerator
AFTER_INSERT, BEFORE_INSERT, DURING_INSERT
 
Constructor Summary
SequenceKeyGenerator(PersistenceFactory factory, java.util.Properties params, int sqlType)
          Initialize the SEQUENCE key generator.
 
Method Summary
 java.lang.Object generateKey(java.sql.Connection conn, java.lang.String tableName, java.lang.String primKeyName, java.util.Properties props)
          Generate a new key for the specified table.
 byte getStyle()
          Style of key generator: BEFORE_INSERT, DURING_INSERT or AFTER_INSERT ?
 boolean isInSameConnection()
          Is key generated in the same connection as INSERT?
 java.lang.String patchSQL(java.lang.String insert, java.lang.String primKeyName)
          Gives a possibility to patch the Castor-generated SQL statement for INSERT (makes sense for DURING_INSERT key generators)
 void supportsSqlType(int sqlType)
          Determine if the key generator supports a given sql type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_factory

protected final PersistenceFactory _factory

_factoryName

protected final java.lang.String _factoryName

_seqName

protected final java.lang.String _seqName
Constructor Detail

SequenceKeyGenerator

public SequenceKeyGenerator(PersistenceFactory factory,
                            java.util.Properties params,
                            int sqlType)
                     throws MappingException
Initialize the SEQUENCE key generator.

Throws:
MappingException
Method Detail

supportsSqlType

public void supportsSqlType(int sqlType)
                     throws MappingException
Determine if the key generator supports a given sql type.

Specified by:
supportsSqlType in interface KeyGenerator
Parameters:
sqlType -
Throws:
MappingException

generateKey

public java.lang.Object generateKey(java.sql.Connection conn,
                                    java.lang.String tableName,
                                    java.lang.String primKeyName,
                                    java.util.Properties props)
                             throws PersistenceException
Description copied from interface: KeyGenerator
Generate a new key for the specified table. This method is called when a new object is about to be created. In some environments the name of the owner of the object is known, e.g. the principal in a J2EE server. This method is never called for DURING_INSERT key generators.

Specified by:
generateKey in interface KeyGenerator
Parameters:
conn - An open connection within the given transaction
tableName - The table name
primKeyName - The primary key name
props - A temporary replacement for Principal object
Returns:
A new key
Throws:
PersistenceException - An error occured talking to persistent storage

getStyle

public byte getStyle()
Style of key generator: BEFORE_INSERT, DURING_INSERT or AFTER_INSERT ?

Specified by:
getStyle in interface KeyGenerator

patchSQL

public java.lang.String patchSQL(java.lang.String insert,
                                 java.lang.String primKeyName)
                          throws MappingException
Gives a possibility to patch the Castor-generated SQL statement for INSERT (makes sense for DURING_INSERT key generators)

Specified by:
patchSQL in interface KeyGenerator
Parameters:
insert - Castor-generated INSERT statement
primKeyName - The primary key name
Throws:
MappingException

isInSameConnection

public boolean isInSameConnection()
Is key generated in the same connection as INSERT?

Specified by:
isInSameConnection in interface KeyGenerator


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