org.sakaiproject.entitybroker.providers
Class MembershipEntityProvider

java.lang.Object
  extended by org.sakaiproject.entitybroker.util.AbstractEntityProvider
      extended by org.sakaiproject.entitybroker.providers.MembershipEntityProvider
All Implemented Interfaces:
ActionsExecutable, CollectionResolvable, Createable, CRUDable, Deleteable, Describeable, Inputable, Outputable, Redirectable, Resolvable, RESTful, Sampleable, Saveable, Updateable, CoreEntityProvider, EntityProvider, Formats, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean

public class MembershipEntityProvider
extends AbstractEntityProvider
implements CoreEntityProvider, RESTful, ActionsExecutable

This provides access to memberships as entities

Author:
Aaron Zeckoski (azeckoski @ gmail.com)

Nested Class Summary
static class MembershipEntityProvider.SiteGroup
          This contains the site and optionally group for a given reference
 
Field Summary
static String PREFIX
           
 
Fields inherited from class org.sakaiproject.entitybroker.util.AbstractEntityProvider
developerHelperService
 
Fields inherited from interface org.sakaiproject.entitybroker.entityprovider.capabilities.CollectionResolvable
SEARCH_LOCATION_REFERENCE, SEARCH_TAGS, SEARCH_USER_REFERENCE
 
Fields inherited from interface org.sakaiproject.entitybroker.entityprovider.extension.Formats
ALL_KNOWN_FORMATS, ATOM, ATOM_EXTENSIONS, ATOM_MIME_TYPE, FORM, FORM_EXTENSIONS, FORM_MIME_TYPE, HTML, HTML_EXTENSIONS, HTML_MIME_TYPE, JSON, JSON_EXTENSIONS, JSON_MIME_TYPE, JSONP, JSONP_EXTENSIONS, JSONP_MIME_TYPE, RSS, RSS_EXTENSIONS, RSS_MIME_TYPE, TXT, TXT_EXTENSIONS, TXT_MIME_TYPE, UTF_8, XML, XML_EXTENSIONS, XML_MIME_TYPE
 
Fields inherited from interface org.sakaiproject.entitybroker.entityprovider.capabilities.ActionsExecutable
ACTION_METHOD_SUFFIX
 
Constructor Summary
MembershipEntityProvider()
           
 
Method Summary
protected  void addUsersToGroup(org.sakaiproject.site.api.Site site, org.sakaiproject.site.api.Group group, List<String> userIds)
          This adds the users to the group provided in the site provided
protected  String[] checkForBatch(Map<String,Object> params, String userId)
          Look for a batch membership operation
 Map<String,String> createBatchMemberships(EntityView view, Map<String,Object> params, String locationReference)
          Add members to a site.
 String createEntity(EntityReference ref, Object entity, Map<String,Object> params)
           
 void deleteEntity(EntityReference ref, Map<String,Object> params)
           
 boolean entityExists(String id)
           
 MembershipEntityProvider.SiteGroup findLocationByReference(String locationReference)
          Find a site (and optionally group) by reference
 List<EntityData> getEntities(EntityReference ref, Search search)
          Gets the list of all memberships for the current user if no params provided, otherwise gets memberships in a specified location or for a specified user
 Object getEntity(EntityReference ref)
           
 String getEntityPrefix()
           
 List<EntityData> getGroupMemberships(EntityView view, Map<String,Object> params)
           
 String[] getHandledInputFormats()
           
 String[] getHandledOutputFormats()
           
protected  List<String> getListFromValue(Object paramValue)
           
 EntityMember getMember(String userId, String locationReference)
           
 List<EntityMember> getMembers(String locationReference)
           
 Object getSampleEntity()
           
protected  org.sakaiproject.site.api.Site getSiteById(String siteId)
           
 ActionReturn handleSiteMemberships(EntityView view, Map<String,Object> params)
          Handle the special needs of UX site membership settings, either getting the current list of site memberships via a GET request, or creating a new batch of site memberships via a POST request.
 void init()
           
protected  boolean isAllowedAccessMembers(org.sakaiproject.site.api.Site site)
           
 boolean joinCurrentUserToSite(EntityView view, Map<String,Object> params)
          join/site/siteId or join/siteId Handle the special case of joining a site, using normal create will not work
protected  String makeRoleId(String currentRoleId, org.sakaiproject.site.api.Site site)
           
protected  void saveGroupMembership(org.sakaiproject.site.api.Site site, org.sakaiproject.site.api.Group group)
           
protected  void saveSiteMembership(org.sakaiproject.site.api.Site site)
           
 void setEmailService(org.sakaiproject.email.api.EmailService emailService)
           
 void setSiteService(org.sakaiproject.site.api.SiteService siteService)
           
 void setUserEntityProvider(UserEntityProvider userEntityProvider)
           
 boolean unjoinCurrentUserFromSite(EntityView view, Map<String,Object> params)
          unjoin/site/siteId or unjoin/siteId Handle the special case of un-joining a site, using normal delete will not work
 void updateEntity(EntityReference ref, Object entity, Map<String,Object> params)
           
 
Methods inherited from class org.sakaiproject.entitybroker.util.AbstractEntityProvider
afterPropertiesSet, destroy, setDeveloperHelperService, setEntityProviderManager
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PREFIX

public static String PREFIX
Constructor Detail

MembershipEntityProvider

public MembershipEntityProvider()
Method Detail

setSiteService

public void setSiteService(org.sakaiproject.site.api.SiteService siteService)

setUserEntityProvider

public void setUserEntityProvider(UserEntityProvider userEntityProvider)

setEmailService

public void setEmailService(org.sakaiproject.email.api.EmailService emailService)

getEntityPrefix

public String getEntityPrefix()
Specified by:
getEntityPrefix in interface EntityProvider

init

public void init()

joinCurrentUserToSite

public boolean joinCurrentUserToSite(EntityView view,
                                     Map<String,Object> params)
join/site/siteId or join/siteId Handle the special case of joining a site, using normal create will not work


unjoinCurrentUserFromSite

public boolean unjoinCurrentUserFromSite(EntityView view,
                                         Map<String,Object> params)
unjoin/site/siteId or unjoin/siteId Handle the special case of un-joining a site, using normal delete will not work


handleSiteMemberships

public ActionReturn handleSiteMemberships(EntityView view,
                                          Map<String,Object> params)
Handle the special needs of UX site membership settings, either getting the current list of site memberships via a GET request, or creating a new batch of site memberships via a POST request. In the case of a POST, special HTTP response headers will be used to communicate success or warning conditions to the client.


createBatchMemberships

public Map<String,String> createBatchMemberships(EntityView view,
                                                 Map<String,Object> params,
                                                 String locationReference)
Add members to a site.

Parameters:
view -
params - request parameters including a list of userSearchValues
locationReference -
Returns:
headers containing success or warning messages for the client

getGroupMemberships

public List<EntityData> getGroupMemberships(EntityView view,
                                            Map<String,Object> params)

entityExists

public boolean entityExists(String id)
Specified by:
entityExists in interface CoreEntityProvider

getEntity

public Object getEntity(EntityReference ref)
Specified by:
getEntity in interface Resolvable

getEntities

public List<EntityData> getEntities(EntityReference ref,
                                    Search search)
Gets the list of all memberships for the current user if no params provided, otherwise gets memberships in a specified location or for a specified user

Specified by:
getEntities in interface CollectionResolvable

createEntity

public String createEntity(EntityReference ref,
                           Object entity,
                           Map<String,Object> params)
Specified by:
createEntity in interface Createable

getSampleEntity

public Object getSampleEntity()
Specified by:
getSampleEntity in interface Sampleable

updateEntity

public void updateEntity(EntityReference ref,
                         Object entity,
                         Map<String,Object> params)
Specified by:
updateEntity in interface Updateable

deleteEntity

public void deleteEntity(EntityReference ref,
                         Map<String,Object> params)
Specified by:
deleteEntity in interface Deleteable

getHandledOutputFormats

public String[] getHandledOutputFormats()
Specified by:
getHandledOutputFormats in interface Outputable

getHandledInputFormats

public String[] getHandledInputFormats()
Specified by:
getHandledInputFormats in interface Inputable

getMember

public EntityMember getMember(String userId,
                              String locationReference)

getMembers

public List<EntityMember> getMembers(String locationReference)
Parameters:
locationReference - a site ref with an optional group ref (can look like this: /site/siteid/group/groupId)
Returns:
the list of memberships for the given location and role

findLocationByReference

public MembershipEntityProvider.SiteGroup findLocationByReference(String locationReference)
Find a site (and optionally group) by reference

Parameters:
locationReference -
Returns:
a Site and optional group
Throws:
IllegalArgumentException - if they cannot be found for this ref

checkForBatch

protected String[] checkForBatch(Map<String,Object> params,
                                 String userId)
Look for a batch membership operation

Parameters:
params -
userId -
Returns:

getListFromValue

protected List<String> getListFromValue(Object paramValue)

makeRoleId

protected String makeRoleId(String currentRoleId,
                            org.sakaiproject.site.api.Site site)

saveGroupMembership

protected void saveGroupMembership(org.sakaiproject.site.api.Site site,
                                   org.sakaiproject.site.api.Group group)
Parameters:
site -
group -

saveSiteMembership

protected void saveSiteMembership(org.sakaiproject.site.api.Site site)
Parameters:
site -

getSiteById

protected org.sakaiproject.site.api.Site getSiteById(String siteId)

isAllowedAccessMembers

protected boolean isAllowedAccessMembers(org.sakaiproject.site.api.Site site)
Parameters:
site - the site to check perms in
Returns:
true if the current user can view this site
Throws:
SecurityException - if not allowed

addUsersToGroup

protected void addUsersToGroup(org.sakaiproject.site.api.Site site,
                               org.sakaiproject.site.api.Group group,
                               List<String> userIds)
This adds the users to the group provided in the site provided

Parameters:
site - The site which the group belongs
group - The group to add the users to
userIds - The list of Uuids to use NOTE: not used?


Copyright © 2007-2012 Sakai Project. All Rights Reserved.