org.jasig.services.persondir.support
Class CascadingPersonAttributeDao
java.lang.Object
org.jasig.services.persondir.support.AbstractDefaultAttributePersonAttributeDao
org.jasig.services.persondir.support.AbstractAggregatingDefaultQueryPersonAttributeDao
org.jasig.services.persondir.support.CascadingPersonAttributeDao
- All Implemented Interfaces:
- IPersonAttributeDao
public class CascadingPersonAttributeDao
- extends AbstractAggregatingDefaultQueryPersonAttributeDao
This org.jasig.portal.services.persondir.IPersonAttributeDao
implementation iterates through an ordered List of
org.jasig.portal.services.persondir.IPersonAttributeDao impls
when getting user attributes.
The first DAO is queried using the seed Map passed to this class. The results
of the query are merged into a general result map. After the first DAO this general
result map used as the query seed for each DAO and each DAOs results are merged into it.
This behavior allows a DAO lower on the list to rely on attributes returned by a DAO
higher on the list.
The default merger for the general result set is ReplacingAttributeAdder.
Note that most DAOs expect a Map of String->String. Some of the DAOs return a Map of
String->Object or String->List. This may cause problems in the DAO if the key for an
attribute with a non String value matches a key needed by the DAO for the query it is
running.
It is highly recomended that the first DAO on the list for this class is
the org.jasig.portal.services.persondir.support.EchoPersonAttributeDaoImpl
to ensure the seed gets placed into the general result map.
- Since:
- uPortal 2.5
- Version:
- $Revision: 2871 $ $Date: 2006-12-08 13:41:33 -0600 (Fri, 08 Dec 2006) $
- Author:
- Eric Dalquist edalquist@unicon.net
|
Method Summary |
protected Map |
getAttributesFromDao(Map seed,
boolean isFirstQuery,
IPersonAttributeDao currentlyConsidering,
Map resultAttributes)
If this is the first call, isFirstQuery == true, the query run against the current IPersonAttributeDao is done using
the seed Map. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CascadingPersonAttributeDao
public CascadingPersonAttributeDao()
getAttributesFromDao
protected Map getAttributesFromDao(Map seed,
boolean isFirstQuery,
IPersonAttributeDao currentlyConsidering,
Map resultAttributes)
- If this is the first call, isFirstQuery == true, the query run against the current IPersonAttributeDao is done using
the seed Map. Otherwise the query is run using the resultAttributes Map.
- Specified by:
getAttributesFromDao in class AbstractAggregatingDefaultQueryPersonAttributeDao
- Parameters:
seed - The seed for the original query.isFirstQuery - If this is the first query, this will stay true until a call to this method returns (does not throw an exception).currentlyConsidering - The IPersonAttributeDao to execute the query on.resultAttributes - The Map of results from all previous queries, may be null.
- Returns:
- The results from the call to the DAO, follows the same rules as
IPersonAttributeDao.getUserAttributes(Map). - See Also:
org.jasig.portal.services.persondir.support.AbstractAggregatingDefaultQueryPersonAttributeDao#getAttributesFromDao(java.util.Map, boolean, org.jasig.portal.services.persondir.IPersonAttributeDao, java.util.Map)
Copyright © 1998-2007 Java Architectures Special Interest Group. All Rights Reserved.