org.apache.openjpa.jdbc.meta
Class DelegatingJoinable

java.lang.Object
  extended by org.apache.openjpa.jdbc.meta.DelegatingJoinable
All Implemented Interfaces:
Joinable

public class DelegatingJoinable
extends Object
implements Joinable

Delegates to another Joinable after doing column translation. Useful for joins that are not managed by any fields on the joined-from side. For example, a vertical class mapping manages foreign key columns linking to the superclass table. It needs to use the joinables of the superclass to actually extract the column values from field values and so forth, but in order for other mappings to join to its foreign key columns it needs joinables of its own. So it creates delegating joinables.

Author:
Abe White

Constructor Summary
DelegatingJoinable(Joinable join, Column[] cols)
          Constructor.
DelegatingJoinable(Joinable join, ForeignKey fk)
          Constructor.
 
Method Summary
 Column[] getColumns()
          The columns managed by this joinable.
 int getFieldIndex()
          Return the field index of this joinable, or -1 if not a field.
 Object getJoinValue(Object val, Column col, JDBCStore store)
          Return the join value of the given column.
 Object getJoinValue(OpenJPAStateManager sm, Column col, JDBCStore store)
          Return the join value of the given column.
 Object getPrimaryKeyValue(Result res, Column[] cols, ForeignKey fk, Joins joins)
          Return the value for this joinable from the given result, using the given columns.
 void setAutoAssignedValue(OpenJPAStateManager sm, JDBCStore store, Column col, Object autogen)
          Use the given auto-assigned value to set this join value's field on the given instance.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DelegatingJoinable

public DelegatingJoinable(Joinable join,
                          ForeignKey fk)
Constructor.

Parameters:
join - the mapping to delegate to
fk - the foreign key to use to translate any given columns to the given delegate's columns

DelegatingJoinable

public DelegatingJoinable(Joinable join,
                          Column[] cols)
Constructor.

Parameters:
join - the mapping to delegate to
cols - translated columns
Method Detail

getFieldIndex

public int getFieldIndex()
Description copied from interface: Joinable
Return the field index of this joinable, or -1 if not a field.

Specified by:
getFieldIndex in interface Joinable

getPrimaryKeyValue

public Object getPrimaryKeyValue(Result res,
                                 Column[] cols,
                                 ForeignKey fk,
                                 Joins joins)
                          throws SQLException
Description copied from interface: Joinable
Return the value for this joinable from the given result, using the given columns. If the given foreign key is non-null, use the foreign key's columns by translating the given columns through ForeignKey.getColumn(org.apache.openjpa.jdbc.schema.Column).

Specified by:
getPrimaryKeyValue in interface Joinable
Throws:
SQLException

getColumns

public Column[] getColumns()
Description copied from interface: Joinable
The columns managed by this joinable.

Specified by:
getColumns in interface Joinable

getJoinValue

public Object getJoinValue(Object val,
                           Column col,
                           JDBCStore store)
Description copied from interface: Joinable
Return the join value of the given column.

Specified by:
getJoinValue in interface Joinable
Parameters:
val - the value of the field for this joinable
col - the column of this joinable whose value to return

getJoinValue

public Object getJoinValue(OpenJPAStateManager sm,
                           Column col,
                           JDBCStore store)
Description copied from interface: Joinable
Return the join value of the given column.

Specified by:
getJoinValue in interface Joinable
Parameters:
sm - the instance from which to get the value
col - the column whose value to return

setAutoAssignedValue

public void setAutoAssignedValue(OpenJPAStateManager sm,
                                 JDBCStore store,
                                 Column col,
                                 Object autogen)
Description copied from interface: Joinable
Use the given auto-assigned value to set this join value's field on the given instance.

Specified by:
setAutoAssignedValue in interface Joinable


Copyright © 2006 Apache Software Foundation. All Rights Reserved.