org.jboss.ejb.plugins.cmp.jdbc.bridge
Class JDBCEntityBridge

java.lang.Object
  extended byorg.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge
All Implemented Interfaces:
EntityBridge (src) , JDBCAbstractEntityBridge (src)

public class JDBCEntityBridge
extends java.lang.Object
implements JDBCAbstractEntityBridge (src)

JDBCEntityBridge follows the Bridge pattern [Gamma et. al, 1995]. The main job of this class is to construct the bridge from entity meta data. Life-cycle: Undefined. Should be tied to CMPStoreManager. Multiplicity: One per cmp entity bean type.


Nested Class Summary
 class JDBCEntityBridge.EntityState (src)
           
static interface JDBCEntityBridge.FieldIterator (src)
           
 
Field Summary
static byte ADD_TO_SET_ON_UPDATE
           
static byte ADD_TO_WHERE_ON_UPDATE
           
static byte CHECK_DIRTY
           
static byte DIRTY
           
static JDBCEntityBridge.FieldIterator (src) EMPTY_FIELD_ITERATOR
           
static byte LOAD_REQUIRED
           
static byte LOADED
           
static byte LOCKED
           
 
Constructor Summary
JDBCEntityBridge(JDBCEntityMetaData (src)  metadata, JDBCStoreManager (src)  manager)
           
 
Method Summary
 void cascadeDelete(EntityEnterpriseContext (src)  ctx, java.util.Map oldRelations)
           
 java.lang.Object createPrimaryKeyInstance()
           
static void destroyPersistenceContext(EntityEnterpriseContext (src)  ctx)
           
 java.lang.Object extractPrimaryKeyFromInstance(EntityEnterpriseContext (src)  ctx)
           
 java.lang.String getAbstractSchemaName()
           
 JDBCCMPFieldBridge (src) getCMPFieldByName(java.lang.String name)
           
 JDBCCMRFieldBridge (src) getCMRFieldByName(java.lang.String name)
           
 JDBCAbstractCMRFieldBridge (src) [] getCMRFields()
           
 JDBCCMPFieldBridge (src) getCreatedPrincipalField()
           
 JDBCCMPFieldBridge (src) getCreatedTimeField()
           
 DataSource (src) getDataSource()
          Returns the datasource for this entity.
 JDBCEntityBridge.FieldIterator (src) getDirtyIterator(EntityEnterpriseContext (src)  ctx)
           
 boolean[] getEagerLoadMask()
           
 java.lang.String getEntityName()
           
 int getFetchSize()
           
 FieldBridge (src) getFieldByName(java.lang.String name)
           
 java.util.List getFields()
          This method is called only at deployment time, not called at runtime.
 java.util.Iterator getLazyLoadGroupMasks()
           
 int getListCacheMax()
           
 boolean[] getLoadGroupMask(java.lang.String name)
           
 JDBCEntityBridge.FieldIterator (src) getLoadIterator(JDBCCMPFieldBridge (src)  requiredField, JDBCReadAheadMetaData (src)  readahead, EntityEnterpriseContext (src)  ctx)
           
 java.lang.Class getLocalInterface()
           
 JDBCEntityBridge.FieldIterator (src) getLockedIterator(EntityEnterpriseContext (src)  ctx)
           
 JDBCEntityPersistenceStore (src) getManager()
           
 JDBCEntityMetaData (src) getMetaData()
           
 java.lang.Class getPrimaryKeyClass()
           
 JDBCFieldBridge (src) [] getPrimaryKeyFields()
           
 java.lang.String getQualifiedTableName()
           
 java.lang.Class getRemoteInterface()
           
 java.util.Collection getSelectors()
           
 JDBCFieldBridge (src) [] getTableFields()
           
 java.lang.String getTableName()
           
 JDBCCMPFieldBridge (src) getUpdatedPrincipalField()
           
 JDBCCMPFieldBridge (src) getUpdatedTimeField()
           
 JDBCCMPFieldBridge (src) getVersionField()
           
 boolean hasLockedFields(EntityEnterpriseContext (src)  ctx)
           
 void init()
           
 void initInstance(EntityEnterpriseContext (src)  ctx)
           
 void initPersistenceContext(EntityEnterpriseContext (src)  ctx)
           
 void injectPrimaryKeyIntoInstance(EntityEnterpriseContext (src)  ctx, java.lang.Object pk)
           
static boolean isEjbCreateDone(EntityEnterpriseContext (src)  ctx)
           
 boolean isModified(EntityEnterpriseContext (src)  ctx)
          This method is used to determined whether the instance was modified.
 boolean isRemoved(EntityEnterpriseContext (src)  ctx)
           
 boolean isScheduledForBatchCascadeDelete(EntityEnterpriseContext (src)  ctx)
           
 boolean isScheduledForCascadeDelete(EntityEnterpriseContext (src)  ctx)
           
 boolean isStoreRequired(EntityEnterpriseContext (src)  ctx)
           
 int loadPrimaryKeyResults(java.sql.ResultSet rs, int parameterIndex, java.lang.Object[] pkRef)
           
 boolean removeFromRelations(EntityEnterpriseContext (src)  ctx, java.lang.Object[] oldRelations)
           
 void resetPersistenceContext(EntityEnterpriseContext (src)  ctx)
          This is only called in commit option B
 void resolveRelationships()
           
 void scheduleForBatchCascadeDelete(EntityEnterpriseContext (src)  ctx)
          Marks the instance as scheduled for batch cascade delete (not for cascade delete)
 void scheduleForCascadeDelete(EntityEnterpriseContext (src)  ctx)
          Marks the instance as scheduled for cascade delete (not for batch cascade delete)
static void setCreated(EntityEnterpriseContext (src)  ctx)
           
static void setEjbCreateDone(EntityEnterpriseContext (src)  ctx)
           
 int setPrimaryKeyParameters(java.sql.PreparedStatement ps, int parameterIndex, java.lang.Object primaryKey)
           
 void setRemoved(EntityEnterpriseContext (src)  ctx)
          Marks the context as removed.
 void start()
          The third phase of deployment.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOADED

public static final byte LOADED
See Also:
Constant Field Values (src)

LOAD_REQUIRED

public static final byte LOAD_REQUIRED
See Also:
Constant Field Values (src)

DIRTY

public static final byte DIRTY
See Also:
Constant Field Values (src)

CHECK_DIRTY

public static final byte CHECK_DIRTY
See Also:
Constant Field Values (src)

LOCKED

public static final byte LOCKED
See Also:
Constant Field Values (src)

ADD_TO_SET_ON_UPDATE

public static final byte ADD_TO_SET_ON_UPDATE
See Also:
Constant Field Values (src)

ADD_TO_WHERE_ON_UPDATE

public static final byte ADD_TO_WHERE_ON_UPDATE
See Also:
Constant Field Values (src)

EMPTY_FIELD_ITERATOR

public static final JDBCEntityBridge.FieldIterator (src)  EMPTY_FIELD_ITERATOR
Constructor Detail

JDBCEntityBridge

public JDBCEntityBridge(JDBCEntityMetaData (src)  metadata,
                        JDBCStoreManager (src)  manager)
                 throws DeploymentException (src) 
Method Detail

init

public void init()
          throws DeploymentException (src) 
Throws:
DeploymentException (src)

resolveRelationships

public void resolveRelationships()
                          throws DeploymentException (src) 
Throws:
DeploymentException (src)

start

public void start()
           throws DeploymentException (src) 
The third phase of deployment. The method is called when relationships are already resolved.

Throws:
DeploymentException (src)

removeFromRelations

public boolean removeFromRelations(EntityEnterpriseContext (src)  ctx,
                                   java.lang.Object[] oldRelations)

cascadeDelete

public void cascadeDelete(EntityEnterpriseContext (src)  ctx,
                          java.util.Map oldRelations)
                   throws RemoveException (src) ,
                          java.rmi.RemoteException
Throws:
RemoveException (src)
java.rmi.RemoteException

getEntityName

public java.lang.String getEntityName()
Specified by:
getEntityName in interface EntityBridge (src)

getAbstractSchemaName

public java.lang.String getAbstractSchemaName()
Specified by:
getAbstractSchemaName in interface EntityBridge (src)

getRemoteInterface

public java.lang.Class getRemoteInterface()
Specified by:
getRemoteInterface in interface EntityBridge (src)

getLocalInterface

public java.lang.Class getLocalInterface()
Specified by:
getLocalInterface in interface EntityBridge (src)

getMetaData

public JDBCEntityMetaData (src)  getMetaData()
Specified by:
getMetaData in interface JDBCAbstractEntityBridge (src)

getManager

public JDBCEntityPersistenceStore (src)  getManager()
Specified by:
getManager in interface JDBCAbstractEntityBridge (src)

getDataSource

public DataSource (src)  getDataSource()
Returns the datasource for this entity.

Specified by:
getDataSource in interface JDBCAbstractEntityBridge (src)

getTableName

public java.lang.String getTableName()
Specified by:
getTableName in interface JDBCAbstractEntityBridge (src)

getQualifiedTableName

public java.lang.String getQualifiedTableName()
Specified by:
getQualifiedTableName in interface JDBCAbstractEntityBridge (src)

getPrimaryKeyClass

public java.lang.Class getPrimaryKeyClass()

getListCacheMax

public int getListCacheMax()

getFetchSize

public int getFetchSize()

createPrimaryKeyInstance

public java.lang.Object createPrimaryKeyInstance()

getPrimaryKeyFields

public JDBCFieldBridge (src) [] getPrimaryKeyFields()
Specified by:
getPrimaryKeyFields in interface JDBCAbstractEntityBridge (src)

getFields

public java.util.List getFields()
This method is called only at deployment time, not called at runtime.

Returns:
the list of all the fields.

getFieldByName

public FieldBridge (src)  getFieldByName(java.lang.String name)
Specified by:
getFieldByName in interface EntityBridge (src)

getEagerLoadMask

public boolean[] getEagerLoadMask()

getLazyLoadGroupMasks

public java.util.Iterator getLazyLoadGroupMasks()

getLoadGroupMask

public boolean[] getLoadGroupMask(java.lang.String name)
Specified by:
getLoadGroupMask in interface JDBCAbstractEntityBridge (src)

getLoadIterator

public JDBCEntityBridge.FieldIterator (src)  getLoadIterator(JDBCCMPFieldBridge (src)  requiredField,
                                                      JDBCReadAheadMetaData (src)  readahead,
                                                      EntityEnterpriseContext (src)  ctx)

getCMPFieldByName

public JDBCCMPFieldBridge (src)  getCMPFieldByName(java.lang.String name)
Parameters:
name - CMP field name
Returns:
JDBCCMPFieldBridge instance or null if no field found.

getCMRFields

public JDBCAbstractCMRFieldBridge (src) [] getCMRFields()
Specified by:
getCMRFields in interface JDBCAbstractEntityBridge (src)

getCMRFieldByName

public JDBCCMRFieldBridge (src)  getCMRFieldByName(java.lang.String name)

getVersionField

public JDBCCMPFieldBridge (src)  getVersionField()

getCreatedPrincipalField

public JDBCCMPFieldBridge (src)  getCreatedPrincipalField()

getCreatedTimeField

public JDBCCMPFieldBridge (src)  getCreatedTimeField()

getUpdatedPrincipalField

public JDBCCMPFieldBridge (src)  getUpdatedPrincipalField()

getUpdatedTimeField

public JDBCCMPFieldBridge (src)  getUpdatedTimeField()

getSelectors

public java.util.Collection getSelectors()

initInstance

public void initInstance(EntityEnterpriseContext (src)  ctx)

isEjbCreateDone

public static boolean isEjbCreateDone(EntityEnterpriseContext (src)  ctx)

setCreated

public static void setCreated(EntityEnterpriseContext (src)  ctx)

setEjbCreateDone

public static void setEjbCreateDone(EntityEnterpriseContext (src)  ctx)

isModified

public boolean isModified(EntityEnterpriseContext (src)  ctx)
This method is used to determined whether the instance was modified. NOTE, even if the method returns true the isStoreRequired for this same instance might return false, e.g. a CMR field that doesn't have a foreign key was modified.

Parameters:
ctx -
Returns:

isStoreRequired

public boolean isStoreRequired(EntityEnterpriseContext (src)  ctx)

getDirtyIterator

public JDBCEntityBridge.FieldIterator (src)  getDirtyIterator(EntityEnterpriseContext (src)  ctx)

hasLockedFields

public boolean hasLockedFields(EntityEnterpriseContext (src)  ctx)

getLockedIterator

public JDBCEntityBridge.FieldIterator (src)  getLockedIterator(EntityEnterpriseContext (src)  ctx)

initPersistenceContext

public void initPersistenceContext(EntityEnterpriseContext (src)  ctx)

resetPersistenceContext

public void resetPersistenceContext(EntityEnterpriseContext (src)  ctx)
This is only called in commit option B


destroyPersistenceContext

public static void destroyPersistenceContext(EntityEnterpriseContext (src)  ctx)

setPrimaryKeyParameters

public int setPrimaryKeyParameters(java.sql.PreparedStatement ps,
                                   int parameterIndex,
                                   java.lang.Object primaryKey)

loadPrimaryKeyResults

public int loadPrimaryKeyResults(java.sql.ResultSet rs,
                                 int parameterIndex,
                                 java.lang.Object[] pkRef)

extractPrimaryKeyFromInstance

public java.lang.Object extractPrimaryKeyFromInstance(EntityEnterpriseContext (src)  ctx)

injectPrimaryKeyIntoInstance

public void injectPrimaryKeyIntoInstance(EntityEnterpriseContext (src)  ctx,
                                         java.lang.Object pk)

getTableFields

public JDBCFieldBridge (src) [] getTableFields()
Specified by:
getTableFields in interface JDBCAbstractEntityBridge (src)

setRemoved

public void setRemoved(EntityEnterpriseContext (src)  ctx)
Marks the context as removed.

Parameters:
ctx - instance's context

isRemoved

public boolean isRemoved(EntityEnterpriseContext (src)  ctx)
Parameters:
ctx - instance's context.
Returns:
true if instance was removed.

scheduleForCascadeDelete

public void scheduleForCascadeDelete(EntityEnterpriseContext (src)  ctx)
Marks the instance as scheduled for cascade delete (not for batch cascade delete)

Parameters:
ctx - instance's context.

isScheduledForCascadeDelete

public boolean isScheduledForCascadeDelete(EntityEnterpriseContext (src)  ctx)
Parameters:
ctx - instance's context.
Returns:
true if instance was scheduled for cascade delete (not for batch cascade delete)

scheduleForBatchCascadeDelete

public void scheduleForBatchCascadeDelete(EntityEnterpriseContext (src)  ctx)
Marks the instance as scheduled for batch cascade delete (not for cascade delete)

Parameters:
ctx - instance's context.

isScheduledForBatchCascadeDelete

public boolean isScheduledForBatchCascadeDelete(EntityEnterpriseContext (src)  ctx)
Parameters:
ctx - instance's context.
Returns:
true if instance was scheduled for batch cascade delete (not for cascade delete)