Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.openjpa.jdbc.meta.strats
Class MapTableFieldStrategy

    java.lang.Object
      org.apache.openjpa.jdbc.meta.strats.AbstractStrategy
          org.apache.openjpa.jdbc.meta.strats.AbstractFieldStrategy
              org.apache.openjpa.jdbc.meta.strats.ContainerFieldStrategy
                  org.apache.openjpa.jdbc.meta.strats.MapTableFieldStrategy

All Implemented Interfaces:
  FieldStrategy, Strategy, LRSMapFieldStrategy

    public abstract class MapTableFieldStrategy

extends ContainerFieldStrategy
implements LRSMapFieldStrategy

Base class for map mappings. Handles managing the secondary table used to hold map keys and values and loading. Subclasses must implement abstract methods and insert/update behavior as well as overriding `FieldStrategy.toDataStoreValue(java.lang.Object, org.apache.openjpa.jdbc.kernel.JDBCStore)`, `FieldStrategy.toKeyDataStoreValue(java.lang.Object, org.apache.openjpa.jdbc.kernel.JDBCStore)`, `FieldStrategy.joinRelation(org.apache.openjpa.jdbc.sql.Joins, boolean, boolean)`, and `FieldStrategy.joinKeyRelation(org.apache.openjpa.jdbc.sql.Joins, boolean, boolean)` if necessary.

Author:
  Abe White

Field Summary

Fields inherited from class org.apache.openjpa.jdbc.meta.strats.AbstractFieldStrategy
`field`

Constructor Summary
`MapTableFieldStrategy()`

Method Summary
`void` | `delete(OpenJPAStateManager sm, JDBCStore store, RowManager rm)` Set the where values appropriately to delete the proper instance, and set all relations on non-secondary tables as updates.
`Object` | `deriveKey(JDBCStore store, Object value)` Some mapping derive keys from map values.
`Object` | `deriveValue(JDBCStore store, Object key)` Some mapping derive values from map keys.
`FieldMapping` | `getFieldMapping()` The owning field mapping.
`protected ClassMapping[]` | `getIndependentElementMappings(boolean traverse)` Return all independent mappings to which this strategy must join in order to access collection elements, or empty array if none.
`ClassMapping[]` | `getIndependentKeyMappings(boolean traverse)` Return all independent mappings to which this strategy must join in order to access map keys, or empty array if none.
`ClassMapping[]` | `getIndependentValueMappings(boolean traverse)` Return all independent mappings to which this strategy must join in order to access map values, or empty array if none.
`protected ForeignKey` | `getJoinForeignKey()`
`ForeignKey` | `getJoinForeignKey(ClassMapping cls)` Return the foreign key used to join to the owning field for the given mapping from either `LRSMapFieldStrategy.getIndependentKeyMappings(boolean)` or `LRSMapFieldStrategy.getIndependentValueMappings(boolean)` (or null).
`Joins` | `join(Joins joins, boolean forceOuter)` Join this value to the class table.
`Joins` | `joinKey(Joins joins, boolean forceOuter)` Join the key value to the class table.
`Joins` | `joinKeyRelation(Joins joins, ClassMapping key)` Invokes `FieldStrategy.joinKeyRelation(org.apache.openjpa.jdbc.sql.Joins, boolean, boolean)` by default.
`Joins` | `joinValueRelation(Joins joins, ClassMapping val)` Invokes `FieldStrategy.joinRelation(org.apache.openjpa.jdbc.sql.Joins, boolean, boolean)` by default.
`void` | `load(OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch)` Load secondary data using a connection from the store manager.
`Object` | `loadKeyProjection(JDBCStore store, JDBCFetchConfiguration fetch, Result res, Joins joins)` Load this field's key value using the given result.
`Object` | `loadProjection(JDBCStore store, JDBCFetchConfiguration fetch, Result res, Joins joins)` Load this field value using the given result.
`void` | `map(boolean adapt)` Map the owning mapping using this strategy.
`int` | `supportsSelect(Select sel, int type, OpenJPAStateManager sm, JDBCStore store, JDBCFetchConfiguration fetch)` Return whether this mapping can perform the given select type.

Methods inherited from class org.apache.openjpa.jdbc.meta.strats.ContainerFieldStrategy
`appendIsEmpty, appendIsNotEmpty, appendIsNotNull, appendIsNull, appendJoinCount, appendSize, appendUnaliasedJoin`

Methods inherited from class org.apache.openjpa.jdbc.meta.strats.AbstractFieldStrategy
`assertNotMappedBy, isEagerSelectToMany, isVersionable, joinKeyRelation, joinRelation, load, loadEagerJoin, loadEagerParallel, select, selectEagerJoin, selectEagerParallel, setFieldMapping, toDataStoreValue, toKeyDataStoreValue, where`

Methods inherited from class org.apache.openjpa.jdbc.meta.strats.AbstractStrategy
`customDelete, customInsert, customUpdate, getAlias, initialize, insert, isCustomDelete, isCustomInsert, isCustomUpdate, update`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.apache.openjpa.jdbc.meta.strats.LRSMapFieldStrategy
`getKeyColumns, getResults, getValueColumns, loadKey, loadValue, selectKey, selectValue`

Methods inherited from interface org.apache.openjpa.jdbc.meta.FieldStrategy
`appendIsEmpty, appendIsNotEmpty, appendIsNotNull, appendIsNull, appendSize, isEagerSelectToMany, isVersionable, joinKeyRelation, joinRelation, load, loadEagerJoin, loadEagerParallel, select, selectEagerJoin, selectEagerParallel, setFieldMapping, toDataStoreValue, toKeyDataStoreValue, where`

Methods inherited from interface org.apache.openjpa.jdbc.meta.Strategy
`customDelete, customInsert, customUpdate, getAlias, initialize, insert, isCustomDelete, isCustomInsert, isCustomUpdate, update`

Constructor Detail

### MapTableFieldStrategy

    public MapTableFieldStrategy()

Method Detail

### getFieldMapping

    public FieldMapping getFieldMapping()

  Description copied from interface: `LRSMapFieldStrategy`
  The owning field mapping.

  Specified by:
    `getFieldMapping` in interface `LRSMapFieldStrategy`

### getIndependentKeyMappings

    public ClassMapping[] getIndependentKeyMappings(boolean traverse)

  Description copied from interface: `LRSMapFieldStrategy`
  Return all independent mappings to which this strategy must join in order to access map keys, or empty array if none.

  Specified by:
    `getIndependentKeyMappings` in interface `LRSMapFieldStrategy`
  See Also:
    `ValueMapping.getIndependentTypeMappings()`, `ClassMapping.EMPTY_MAPPINGS`

### getIndependentValueMappings

    public ClassMapping[] getIndependentValueMappings(boolean traverse)

  Description copied from interface: `LRSMapFieldStrategy`
  Return all independent mappings to which this strategy must join in order to access map values, or empty array if none.

  Specified by:
    `getIndependentValueMappings` in interface `LRSMapFieldStrategy`
  See Also:
    `ValueMapping.getIndependentTypeMappings()`, `ClassMapping.EMPTY_MAPPINGS`

### getJoinForeignKey

    public ForeignKey getJoinForeignKey(ClassMapping cls)

  Description copied from interface: `LRSMapFieldStrategy`
  Return the foreign key used to join to the owning field for the given mapping from either `LRSMapFieldStrategy.getIndependentKeyMappings(boolean)` or `LRSMapFieldStrategy.getIndependentValueMappings(boolean)` (or null).

  Specified by:
    `getJoinForeignKey` in interface `LRSMapFieldStrategy`

### deriveKey

    public Object deriveKey(JDBCStore store,
                            Object value)

  Description copied from interface: `LRSMapFieldStrategy`
  Some mapping derive keys from map values. Other mappings may return null.

  Specified by:
    `deriveKey` in interface `LRSMapFieldStrategy`

### deriveValue

    public Object deriveValue(JDBCStore store,
                              Object key)

  Description copied from interface: `LRSMapFieldStrategy`
  Some mapping derive values from map keys. Other mappings may return null.

  Specified by:
    `deriveValue` in interface `LRSMapFieldStrategy`

### joinKeyRelation

    public Joins joinKeyRelation(Joins joins,
                                 ClassMapping key)

  Invokes `FieldStrategy.joinKeyRelation(org.apache.openjpa.jdbc.sql.Joins, boolean, boolean)` by default.

  Specified by:
    `joinKeyRelation` in interface `LRSMapFieldStrategy`

### joinValueRelation

    public Joins joinValueRelation(Joins joins,
                                   ClassMapping val)

  Invokes `FieldStrategy.joinRelation(org.apache.openjpa.jdbc.sql.Joins, boolean, boolean)` by default.

  Specified by:
    `joinValueRelation` in interface `LRSMapFieldStrategy`

### map

    public void map(boolean adapt)

  Description copied from interface: `Strategy`
  Map the owning mapping using this strategy.

  Specified by:
    `map` in interface `Strategy`
  Overrides:
    `map` in class `AbstractStrategy`
  Parameters:
    `adapt` - if true, use the owning mapping's raw mapping info to set its ORM data; if false, ORM data will already be set

### delete

    public void delete(OpenJPAStateManager sm,
                       JDBCStore store,
                       RowManager rm)
                throws SQLException

  Description copied from interface: `Strategy`
  Set the where values appropriately to delete the proper instance, and set all relations on non-secondary tables as updates. This allows foreign key analysis.

  Specified by:
    `delete` in interface `Strategy`
  Overrides:
    `delete` in class `AbstractStrategy`
  Throws:
    `SQLException`
  See Also:
    `Strategy.insert(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.jdbc.kernel.JDBCStore, org.apache.openjpa.jdbc.sql.RowManager)`

### supportsSelect

    public int supportsSelect(Select sel,
                              int type,
                              OpenJPAStateManager sm,
                              JDBCStore store,
                              JDBCFetchConfiguration fetch)

  Description copied from interface: `FieldStrategy`
  Return whether this mapping can perform the given select type. Return 0 if the given type is not supported. If the given type is an eager parallel type, return the number of UNIONed selects necessary to fetch the data. Otherwise, return any positive number if the type is supported. The given state manager may be null if selecting multiple instances.

  Specified by:
    `supportsSelect` in interface `FieldStrategy`
  Overrides:
    `supportsSelect` in class `AbstractFieldStrategy`
  See Also:
    `Select`

### load

    public void load(OpenJPAStateManager sm,
                     JDBCStore store,
                     JDBCFetchConfiguration fetch)
              throws SQLException

  Description copied from interface: `FieldStrategy`
  Load secondary data using a connection from the store manager.

  Specified by:
    `load` in interface `FieldStrategy`
  Overrides:
    `load` in class `AbstractFieldStrategy`
  Throws:
    `SQLException`

### loadKeyProjection

    public Object loadKeyProjection(JDBCStore store,
                                    JDBCFetchConfiguration fetch,
                                    Result res,
                                    Joins joins)
                             throws SQLException

  Description copied from interface: `FieldStrategy`
  Load this field's key value using the given result. The result will contain the columns from `ValueMapping.getColumns()`.

  Specified by:
    `loadKeyProjection` in interface `FieldStrategy`
  Overrides:
    `loadKeyProjection` in class `AbstractFieldStrategy`
  Throws:
    `SQLException`

### loadProjection

    public Object loadProjection(JDBCStore store,
                                 JDBCFetchConfiguration fetch,
                                 Result res,
                                 Joins joins)
                          throws SQLException

  Description copied from interface: `FieldStrategy`
  Load this field value using the given result. The result will contain the columns from `ValueMapping.getColumns()`.

  Specified by:
    `loadProjection` in interface `FieldStrategy`
  Overrides:
    `loadProjection` in class `AbstractFieldStrategy`
  Throws:
    `SQLException`

### join

    public Joins join(Joins joins,
                      boolean forceOuter)

  Description copied from interface: `FieldStrategy`
  Join this value to the class table. Does nothing by default.

  Specified by:
    `join` in interface `FieldStrategy`
  Overrides:
    `join` in class `AbstractFieldStrategy`

### joinKey

    public Joins joinKey(Joins joins,
                         boolean forceOuter)

  Description copied from interface: `FieldStrategy`
  Join the key value to the class table. Does nothing by default.

  Specified by:
    `joinKey` in interface `FieldStrategy`
  Overrides:
    `joinKey` in class `AbstractFieldStrategy`

### getJoinForeignKey

    protected ForeignKey getJoinForeignKey()

  Specified by:
    `getJoinForeignKey` in class `ContainerFieldStrategy`

### getIndependentElementMappings

    protected ClassMapping[] getIndependentElementMappings(boolean traverse)

  Description copied from class: `ContainerFieldStrategy`
  Return all independent mappings to which this strategy must join in order to access collection elements, or empty array if none.

  Specified by:
    `getIndependentElementMappings` in class `ContainerFieldStrategy`
  Parameters:
    `traverse` - whether we're traversing through to the related type
  See Also:
    `ValueMapping.getIndependentTypeMappings()`, `ClassMapping.EMPTY_MAPPINGS`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2006 Apache Software Foundation. All Rights Reserved.