001: /* Copyright 2002 The JA-SIG Collaborative. All rights reserved.
002: * See license distributed with this file and
003: * available online at http://www.uportal.org/license.html
004: */
005:
006: package org.jasig.portal.groups;
007:
008: import java.util.Iterator;
009:
010: import javax.naming.Name;
011:
012: import org.jasig.portal.EntityIdentifier;
013:
014: /**
015: * Defines an api for discovering entry points into a composite groups system
016: * consisting of component group services. These entry points are represented
017: * by <code>IGroupMembers</code>. The role of the <code>IGroupMember</code>is
018: * somewhat analogous to that of an <code>InitialContext</code> in JNDI. Once
019: * a client gets an <code>IGroupMember</code>, subsequent requests for navigating
020: * the system or maintaining groups go thru the <code>IGroupMember</code> api
021: * and are serviced by the individual component services.
022: *
023: * @author Dan Ellentuck
024: * @version $Revision: 34758 $
025: */
026: public interface ICompositeGroupService extends IComponentGroupService {
027:
028: /**
029: * Returns the groups that contain the <code>IGroupMember</code>.
030: * @param gm IGroupMember
031: */
032: public Iterator findContainingGroups(IGroupMember gm)
033: throws GroupsException;
034:
035: /**
036: * Returns a pre-existing <code>IEntityGroup</code> or null if it does not
037: * exist.
038: */
039: public IEntityGroup findGroup(String key) throws GroupsException;
040:
041: /**
042: * Returns a pre-existing <code>IEntityGroup</code> or null if it does not
043: * exist.
044: */
045: public ILockableEntityGroup findGroupWithLock(String key,
046: String owner) throws GroupsException;
047:
048: /**
049: * Returns an <code>IEntity</code> representing a portal entity. This does
050: * not guarantee that the entity actually exists.
051: */
052: public IEntity getEntity(String key, Class type)
053: throws GroupsException;
054:
055: /**
056: * Returns an <code>IEntity</code> representing a portal entity. This does
057: * not guarantee that the entity actually exists.
058: */
059: public IEntity getEntity(String key, Class type, String service)
060: throws GroupsException;
061:
062: /**
063: * Returns an <code>IGroupMember</code> representing either a group or a
064: * portal entity. If the parm <code>type</code> is the group type,
065: * the <code>IGroupMember</code> is an <code>IEntityGroup</code>. Otherwise
066: * it is an <code>IEntity</code>.
067: */
068: public IGroupMember getGroupMember(String key, Class type)
069: throws GroupsException;
070:
071: /**
072: * Returns an <code>IGroupMember</code> representing either a group or a
073: * portal entity, based on the <code>EntityIdentifier</code>, which refers
074: * to the UNDERLYING entity for the <code>IGroupMember</code>.
075: */
076: public IGroupMember getGroupMember(
077: EntityIdentifier underlyingEntityIdentifier)
078: throws GroupsException;
079:
080: /**
081: * Returns a new <code>IEntityGroup</code> for the given Class with an unused
082: * key from the named service.
083: */
084: public IEntityGroup newGroup(Class type, Name serviceName)
085: throws GroupsException;
086:
087: /**
088: * Find EntityIdentifiers for entities whose name matches the query string
089: * according to the specified method and is of the specified type
090: */
091: public EntityIdentifier[] searchForEntities(String query,
092: int method, Class type) throws GroupsException;
093:
094: /**
095: * Find EntityIdentifiers for entities whose name matches the query string
096: * according to the specified method, is of the specified type and
097: * descends from the specified group
098: */
099: public EntityIdentifier[] searchForEntities(String query,
100: int method, Class type, IEntityGroup ancestor)
101: throws GroupsException;
102:
103: /**
104: * Find EntityIdentifiers for groups whose name matches the query string
105: * according to the specified method and matches the provided leaf type
106: */
107: public EntityIdentifier[] searchForGroups(String query, int method,
108: Class leaftype) throws GroupsException;
109:
110: /**
111: * Find EntityIdentifiers for groups whose name matches the query string
112: * according to the specified method, has the provided leaf type and
113: * descends from the specified group
114: */
115: public EntityIdentifier[] searchForGroups(String query, int method,
116: Class leaftype, IEntityGroup ancestor)
117: throws GroupsException;
118: }
|