org.jasig.portal.groups.pags
Class PersonAttributesGroupStore

java.lang.Object
  extended by org.jasig.portal.groups.pags.PersonAttributesGroupStore
All Implemented Interfaces:
IEntityGroupStore, IEntitySearcher, IEntityStore, IGroupConstants

public class PersonAttributesGroupStore
extends java.lang.Object
implements IEntityGroupStore, IEntityStore, IEntitySearcher

The Person Attributes Group Store uses attributes stored in the IPerson object to determine group membership. It can use attributes from any data source supported by the PersonDirectory service.

Version:
$Revision: 1.17.2.1 $
Author:
Al Wold

Nested Class Summary
static class PersonAttributesGroupStore.GroupDefinition
           
static class PersonAttributesGroupStore.TestGroup
           
 
Field Summary
private  java.util.Map containingGroups
           
private  java.util.Map groupDefinitions
           
private  java.util.Map groups
           
private static org.apache.commons.logging.Log log
           
private  java.util.Properties props
           
 
Fields inherited from interface org.jasig.portal.groups.IGroupConstants
CHANNEL_CATEGORIES, CONTAINS, ENDS_WITH, EVERYONE, IS, NODE_SEPARATOR, PORTAL_ADMINISTRATORS, STARTS_WITH
 
Constructor Summary
PersonAttributesGroupStore()
           
 
Method Summary
private  void cacheContainingGroupsForGroups()
           
private  IEntityGroup cacheGet(java.lang.String key)
           
private  void cachePut(IEntityGroup group)
           
 boolean contains(IEntityGroup group, IGroupMember member)
          Answers if group contains member.
 void delete(IEntityGroup group)
          Delete this IEntityGroup from the data store.
 IEntityGroup find(java.lang.String key)
          Returns an instance of the IEntityGroup from the data store.
 java.util.Iterator findContainingGroups(IGroupMember member)
          Returns an Iterator over the Collection of IEntityGroups that the IGroupMember belongs to.
private  java.util.Iterator findContainingGroupsForEntity(IEntity member)
           
private  java.util.Iterator findContainingGroupsForGroup(IEntityGroup group)
           
 java.util.Iterator findEntitiesForGroup(IEntityGroup group)
          Returns an Iterator over the Collection of IEntities that are members of this IEntityGroup.
 ILockableEntityGroup findLockable(java.lang.String key)
          Returns an instance of the ILockableEntityGroup from the data store.
 java.lang.String[] findMemberGroupKeys(IEntityGroup group)
          Returns a String[] containing the keys of IEntityGroups that are members of this IEntityGroup.
 java.util.Iterator findMemberGroups(IEntityGroup group)
          Returns an Iterator over the Collection of IEntityGroups that are members of this IEntityGroup.
private  IPersonAttributesConfiguration getConfig(java.lang.String className)
           
private  void initGroups()
          Iterates over the groupDefinitions Collection and creates the corresponding groups.
private  IPersonTester initializeTester(java.lang.String tester, java.lang.String attribute, java.lang.String value)
           
 IEntityGroup newInstance(java.lang.Class entityType)
           
 IEntity newInstance(java.lang.String key)
           
 IEntity newInstance(java.lang.String key, java.lang.Class type)
           
private  java.util.Set primGetAllContainingGroups(IEntityGroup group, java.util.Set s)
           
 EntityIdentifier[] searchForEntities(java.lang.String query, int method, java.lang.Class type)
          Find EntityIdentifiers for entities whose name matches the query string according to the specified method and is of the specified type
 EntityIdentifier[] searchForGroups(java.lang.String query, int method, java.lang.Class leaftype)
          Find EntityIdentifiers for groups whose name matches the query string according to the specified method and matches the provided leaf type
private  boolean testRecursively(PersonAttributesGroupStore.GroupDefinition groupDef, IPerson person)
           
 void update(IEntityGroup group)
          Adds or updates the IEntityGroup AND ITS MEMBERSHIPS to the data store, as appropriate.
 void updateMembers(IEntityGroup group)
          Commits the group memberships of the IEntityGroup to the data store.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

private static final org.apache.commons.logging.Log log

props

private java.util.Properties props

groupDefinitions

private java.util.Map groupDefinitions

groups

private java.util.Map groups

containingGroups

private java.util.Map containingGroups
Constructor Detail

PersonAttributesGroupStore

public PersonAttributesGroupStore()
Method Detail

getConfig

private IPersonAttributesConfiguration getConfig(java.lang.String className)
                                          throws java.lang.ClassNotFoundException,
                                                 java.lang.InstantiationException,
                                                 java.lang.IllegalAccessException
Throws:
java.lang.ClassNotFoundException
java.lang.InstantiationException
java.lang.IllegalAccessException

initGroups

private void initGroups()
                 throws GroupsException
Iterates over the groupDefinitions Collection and creates the corresponding groups. Then, caches parents for each child group.

Throws:
GroupsException

initializeTester

private IPersonTester initializeTester(java.lang.String tester,
                                       java.lang.String attribute,
                                       java.lang.String value)

cacheGet

private IEntityGroup cacheGet(java.lang.String key)

cachePut

private void cachePut(IEntityGroup group)

contains

public boolean contains(IEntityGroup group,
                        IGroupMember member)
                 throws GroupsException
Description copied from interface: IEntityGroupStore
Answers if group contains member.

Specified by:
contains in interface IEntityGroupStore
Parameters:
group - org.jasig.portal.groups.IEntityGroup
member - org.jasig.portal.groups.IGroupMember
Returns:
boolean
Throws:
GroupsException

delete

public void delete(IEntityGroup group)
            throws GroupsException
Description copied from interface: IEntityGroupStore
Delete this IEntityGroup from the data store.

Specified by:
delete in interface IEntityGroupStore
Parameters:
group - org.jasig.portal.groups.IEntityGroup
Throws:
GroupsException

find

public IEntityGroup find(java.lang.String key)
                  throws GroupsException
Description copied from interface: IEntityGroupStore
Returns an instance of the IEntityGroup from the data store.

Specified by:
find in interface IEntityGroupStore
Parameters:
key - java.lang.String
Returns:
org.jasig.portal.groups.IEntityGroup
Throws:
GroupsException

cacheContainingGroupsForGroups

private void cacheContainingGroupsForGroups()
                                     throws GroupsException
Throws:
GroupsException

testRecursively

private boolean testRecursively(PersonAttributesGroupStore.GroupDefinition groupDef,
                                IPerson person)
                         throws GroupsException
Throws:
GroupsException

primGetAllContainingGroups

private java.util.Set primGetAllContainingGroups(IEntityGroup group,
                                                 java.util.Set s)
                                          throws GroupsException
Throws:
GroupsException

findContainingGroups

public java.util.Iterator findContainingGroups(IGroupMember member)
                                        throws GroupsException
Description copied from interface: IEntityGroupStore
Returns an Iterator over the Collection of IEntityGroups that the IGroupMember belongs to.

Specified by:
findContainingGroups in interface IEntityGroupStore
Parameters:
member - org.jasig.portal.groups.IEntityGroup
Returns:
java.util.Iterator
Throws:
GroupsException

findContainingGroupsForGroup

private java.util.Iterator findContainingGroupsForGroup(IEntityGroup group)

findContainingGroupsForEntity

private java.util.Iterator findContainingGroupsForEntity(IEntity member)
                                                  throws GroupsException
Throws:
GroupsException

findEntitiesForGroup

public java.util.Iterator findEntitiesForGroup(IEntityGroup group)
                                        throws GroupsException
Description copied from interface: IEntityGroupStore
Returns an Iterator over the Collection of IEntities that are members of this IEntityGroup.

Specified by:
findEntitiesForGroup in interface IEntityGroupStore
Parameters:
group - org.jasig.portal.groups.IEntityGroup
Returns:
java.util.Iterator
Throws:
GroupsException

findLockable

public ILockableEntityGroup findLockable(java.lang.String key)
                                  throws GroupsException
Description copied from interface: IEntityGroupStore
Returns an instance of the ILockableEntityGroup from the data store.

Specified by:
findLockable in interface IEntityGroupStore
Parameters:
key - java.lang.String
Returns:
org.jasig.portal.groups.IEntityGroup
Throws:
GroupsException

findMemberGroupKeys

public java.lang.String[] findMemberGroupKeys(IEntityGroup group)
                                       throws GroupsException
Description copied from interface: IEntityGroupStore
Returns a String[] containing the keys of IEntityGroups that are members of this IEntityGroup. In a composite group system, a group may contain a member group from a different service. This is called a foreign membership, and is only possible in an internally-managed service. A group store in such a service can return the key of a foreign member group, but not the group itself, which can only be returned by its local store.

Specified by:
findMemberGroupKeys in interface IEntityGroupStore
Parameters:
group - org.jasig.portal.groups.IEntityGroup
Returns:
String[]
Throws:
GroupsException

findMemberGroups

public java.util.Iterator findMemberGroups(IEntityGroup group)
                                    throws GroupsException
Description copied from interface: IEntityGroupStore
Returns an Iterator over the Collection of IEntityGroups that are members of this IEntityGroup.

Specified by:
findMemberGroups in interface IEntityGroupStore
Parameters:
group - org.jasig.portal.groups.IEntityGroup
Returns:
java.util.Iterator
Throws:
GroupsException

newInstance

public IEntityGroup newInstance(java.lang.Class entityType)
                         throws GroupsException
Specified by:
newInstance in interface IEntityGroupStore
Returns:
org.jasig.portal.groups.IEntityGroup
Throws:
GroupsException

searchForGroups

public EntityIdentifier[] searchForGroups(java.lang.String query,
                                          int method,
                                          java.lang.Class leaftype)
                                   throws GroupsException
Description copied from interface: IEntityGroupStore
Find EntityIdentifiers for groups whose name matches the query string according to the specified method and matches the provided leaf type

Specified by:
searchForGroups in interface IEntityGroupStore
Throws:
GroupsException

update

public void update(IEntityGroup group)
            throws GroupsException
Description copied from interface: IEntityGroupStore
Adds or updates the IEntityGroup AND ITS MEMBERSHIPS to the data store, as appropriate.

Specified by:
update in interface IEntityGroupStore
Parameters:
group - org.jasig.portal.groups.IEntityGroup
Throws:
GroupsException

updateMembers

public void updateMembers(IEntityGroup group)
                   throws GroupsException
Description copied from interface: IEntityGroupStore
Commits the group memberships of the IEntityGroup to the data store.

Specified by:
updateMembers in interface IEntityGroupStore
Parameters:
group - org.jasig.portal.groups.IEntityGroup
Throws:
GroupsException

newInstance

public IEntity newInstance(java.lang.String key,
                           java.lang.Class type)
                    throws GroupsException
Specified by:
newInstance in interface IEntityStore
Parameters:
key - java.lang.String - the entity's key
type - java.lang.Class - the entity's Type
Returns:
org.jasig.portal.groups.IEntity
Throws:
GroupsException

newInstance

public IEntity newInstance(java.lang.String key)
                    throws GroupsException
Specified by:
newInstance in interface IEntityStore
Parameters:
key - java.lang.String
Returns:
org.jasig.portal.groups.IEntity
Throws:
GroupsException

searchForEntities

public EntityIdentifier[] searchForEntities(java.lang.String query,
                                            int method,
                                            java.lang.Class type)
                                     throws GroupsException
Description copied from interface: IEntitySearcher
Find EntityIdentifiers for entities whose name matches the query string according to the specified method and is of the specified type

Specified by:
searchForEntities in interface IEntitySearcher
Throws:
GroupsException