org.kuali.kfs.fp.dataaccess
Class PolymorphicMultiColumnDiscriminator

java.lang.Object
  extended by org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl
      extended by org.kuali.kfs.fp.dataaccess.PolymorphicMultiColumnDiscriminator
All Implemented Interfaces:
Serializable, org.apache.ojb.broker.accesslayer.RowReader

public abstract class PolymorphicMultiColumnDiscriminator
extends org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl

(Inspired by example posted at http://nagoya.apache.org/eyebrowse/ReadMsg?listName=ojb-user@db.apache.org&msgId=749837) This class enables mapping multiple (presumably similar) classes to a single database table. Subclasses must implement the getDiscriminatorColumns method, returning a String array of columns to consider when determining which class to return, as well as implement the corresponding chooseClass method that acts on received values for those columns. Sample OBJ config: ... ... (where ClassADiscriminator and ClassBDiscriminator extend PolymorphicMultiColumnDiscriminator)

See Also:
Serialized Form

Field Summary
 
Fields inherited from interface org.apache.ojb.broker.accesslayer.RowReader
serialVersionUID
 
Constructor Summary
PolymorphicMultiColumnDiscriminator(org.apache.ojb.broker.metadata.ClassDescriptor cld)
           
 
Method Summary
abstract  Class chooseClass(String[] values)
          Based on the received key values, this method determines the appropriate class.
abstract  String[] getDiscriminatorColumns()
          This method should return the column(s) necessary to determine which class to cast to.
protected  org.apache.ojb.broker.metadata.ClassDescriptor selectClassDescriptor(Map row)
           
 
Methods inherited from class org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl
buildOrRefreshObject, extractOjbConcreteClass, getClassDescriptor, readObjectArrayFrom, readObjectFrom, readPkValuesFrom, readValuesFrom, refreshObject, setClassDescriptor
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PolymorphicMultiColumnDiscriminator

public PolymorphicMultiColumnDiscriminator(org.apache.ojb.broker.metadata.ClassDescriptor cld)
Method Detail

getDiscriminatorColumns

public abstract String[] getDiscriminatorColumns()
This method should return the column(s) necessary to determine which class to cast to.

Returns:
one or more column names

chooseClass

public abstract Class chooseClass(String[] values)
Based on the received key values, this method determines the appropriate class.

Parameters:
values -
Returns:
an appropriately chosen class

selectClassDescriptor

protected org.apache.ojb.broker.metadata.ClassDescriptor selectClassDescriptor(Map row)
                                                                        throws org.apache.ojb.broker.PersistenceBrokerException
Overrides:
selectClassDescriptor in class org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl
Throws:
org.apache.ojb.broker.PersistenceBrokerException


Copyright © 2005-2012 The Kuali Foundation. All Rights Reserved.