org.apache.openjpa.jdbc.meta.strats
Class InValueDiscriminatorStrategy

java.lang.Object
  extended by org.apache.openjpa.jdbc.meta.strats.AbstractStrategy
      extended by org.apache.openjpa.jdbc.meta.strats.AbstractDiscriminatorStrategy
          extended by org.apache.openjpa.jdbc.meta.strats.InValueDiscriminatorStrategy
All Implemented Interfaces:
Serializable, DiscriminatorStrategy, Strategy
Direct Known Subclasses:
ClassNameDiscriminatorStrategy, ValueMapDiscriminatorStrategy

public abstract class InValueDiscriminatorStrategy
extends AbstractDiscriminatorStrategy

Base discriminator strategy that determines the class of database records using a column holding a value mapped to a class, and limits SELECTs using an IN (...) statement.

Author:
Abe White
See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.apache.openjpa.jdbc.meta.strats.AbstractDiscriminatorStrategy
disc, isFinal
 
Constructor Summary
InValueDiscriminatorStrategy()
           
 
Method Summary
 Class getClass(JDBCStore store, ClassMapping base, Result res)
          Return the class for the current result row.
protected abstract  Class getClass(Object val, JDBCStore store)
          Convert the given discriminator value to the corresponding class.
 SQLBuffer getClassConditions(Select sel, Joins joins, ClassMapping base, boolean subclasses)
          Return SQL to limit the classes selected as much as possible to the given base class, and optionally its subclasses.
protected abstract  Object getDiscriminatorValue(ClassMapping cls)
          Return the discriminator value for the given type.
protected abstract  int getJavaType()
          Return the Java type code from JavaTypes for the discriminator values.
 boolean hasClassConditions(ClassMapping base, boolean subclasses)
          Whether any class conditions are necessary.
 void insert(OpenJPAStateManager sm, JDBCStore store, RowManager rm)
          Set values for the mapping into the proper rows.
 void map(boolean adapt)
          Map the owning mapping using this strategy.
 boolean select(Select sel, ClassMapping mapping)
          Select the data for this Discriminator.
 
Methods inherited from class org.apache.openjpa.jdbc.meta.strats.AbstractDiscriminatorStrategy
loadSubclasses, setDiscriminator
 
Methods inherited from class org.apache.openjpa.jdbc.meta.strats.AbstractStrategy
customDelete, customInsert, customUpdate, delete, getAlias, initialize, 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.Strategy
customDelete, customInsert, customUpdate, delete, getAlias, initialize, isCustomDelete, isCustomInsert, isCustomUpdate, update
 

Constructor Detail

InValueDiscriminatorStrategy

public InValueDiscriminatorStrategy()
Method Detail

getJavaType

protected abstract int getJavaType()
Return the Java type code from JavaTypes for the discriminator values. This method is only used during mapping installation.


getDiscriminatorValue

protected abstract Object getDiscriminatorValue(ClassMapping cls)
Return the discriminator value for the given type.


getClass

protected abstract Class getClass(Object val,
                                  JDBCStore store)
                           throws ClassNotFoundException
Convert the given discriminator value to the corresponding class.

Throws:
ClassNotFoundException

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

insert

public void insert(OpenJPAStateManager sm,
                   JDBCStore store,
                   RowManager rm)
            throws SQLException
Description copied from interface: Strategy
Set values for the mapping into the proper rows. For class mappings, this method will be called only after the corresponding method has been called for all fields of this mapping.

Specified by:
insert in interface Strategy
Overrides:
insert in class AbstractStrategy
Throws:
SQLException

select

public boolean select(Select sel,
                      ClassMapping mapping)
Description copied from interface: DiscriminatorStrategy
Select the data for this Discriminator.

Specified by:
select in interface DiscriminatorStrategy
Overrides:
select in class AbstractDiscriminatorStrategy
mapping - the known base class being selected; this may not be the base class in the inheritance hierarchy
Returns:
true if anything was selected; false otherwise

getClass

public Class getClass(JDBCStore store,
                      ClassMapping base,
                      Result res)
               throws SQLException,
                      ClassNotFoundException
Description copied from interface: DiscriminatorStrategy
Return the class for the current result row.

Specified by:
getClass in interface DiscriminatorStrategy
Overrides:
getClass in class AbstractDiscriminatorStrategy
Throws:
SQLException
ClassNotFoundException

hasClassConditions

public boolean hasClassConditions(ClassMapping base,
                                  boolean subclasses)
Description copied from interface: DiscriminatorStrategy
Whether any class conditions are necessary.

Specified by:
hasClassConditions in interface DiscriminatorStrategy
Overrides:
hasClassConditions in class AbstractDiscriminatorStrategy
See Also:
DiscriminatorStrategy.getClassConditions(org.apache.openjpa.jdbc.sql.Select, org.apache.openjpa.jdbc.sql.Joins, org.apache.openjpa.jdbc.meta.ClassMapping, boolean)

getClassConditions

public SQLBuffer getClassConditions(Select sel,
                                    Joins joins,
                                    ClassMapping base,
                                    boolean subclasses)
Description copied from interface: DiscriminatorStrategy
Return SQL to limit the classes selected as much as possible to the given base class, and optionally its subclasses. The select and joins instances are supplied in order to get column aliases.

Specified by:
getClassConditions in interface DiscriminatorStrategy
Overrides:
getClassConditions in class AbstractDiscriminatorStrategy


Copyright © 2006-2011 Apache Software Foundation. All Rights Reserved.