Class MultiPermissions


  • public class MultiPermissions
    extends Object
    This is a helper class that is very useful when you have a collection of Shareable items and want to modify some permissions on all of them without affecting the rest of the permissions.

    For example it is possible to add write permission for a new user while preserving the permissions already given to other user, groups and projects. This works even if the logged in user doesn't have read permission to all other user, groups and projects the items have been shared to.

    It is a four-step procedure:

    Version:
    2.0
    Author:
    Nicklas
    Last modified
    $Date: 2016-10-19 14:16:14 +0200 (on, 19 okt 2016) $
    • Method Detail

      • allSame

        public static boolean allSame​(Collection<Set<Permission>> permissions)
        Check if a collection of Set:s all contain the same permissions.
        Parameters:
        permissions - The collection of sets to check
        Returns:
        TRUE If all sets in the collection contains the same permissions
        See Also:
        Permission
      • hasAnnotatableItem

        public boolean hasAnnotatableItem()
        Is any of the items to share an annotatable item?
        Since:
        3.10
      • setPermissions

        public void setPermissions​(User user,
                                   Set<Permission> permissions)
                            throws InvalidDataException
        Grant permissions to a user. Use an empty Set or null to remove all permissions for the user.
        Parameters:
        user - The User
        permissions - The permissions to grant
        Throws:
        InvalidDataException - If the user is null
        See Also:
        Permission
      • getPermissions

        public Map<ItemKey,​Set<Permission>> getPermissions​(User user)
                                                          throws InvalidDataException
        Get the permissions for a user. The returned map contains one entry for each unique ItemKey found among the items passed to the constructor, including the null item key if present. The value of each entry is a Set containing the granted permissions.
        Parameters:
        user - The User for which we want to get the permission
        Returns:
        A Map containing a Set of the granted permissions for each ItemKey
        Throws:
        InvalidDataException - If the user is null
        See Also:
        Permission
      • setPermissions

        public void setPermissions​(Group group,
                                   Set<Permission> permissions)
                            throws InvalidDataException
        Grant permissions to a group. Use an empty Set or null to remove all permissions for the group.
        Parameters:
        group - The Group
        permissions - The permissions to grant
        Throws:
        InvalidDataException - If the group is null
        See Also:
        Permission
      • getPermissions

        public Map<ItemKey,​Set<Permission>> getPermissions​(Group group)
                                                          throws InvalidDataException
        Get the permissions for a group. The returned map contains one entry for each unique ItemKey found among the items passed to the constructor, including the null item key if present. The value of each entry is a Set containing the granted permissions.
        Parameters:
        group - The Group for which we want to get the permission
        Returns:
        A Map containing a Set of the granted permissions for each ItemKey
        Throws:
        InvalidDataException - If the group is null
        See Also:
        Permission
      • getPermissions

        public Map<ProjectKey,​Set<Permission>> getPermissions​(Project project)
                                                             throws InvalidDataException
        Get the permissions for a project. The returned map contains one entry for each unique ProjectKey found among the items passed to the constructor, including the null project key if present. The value of each entry is a Set containing the granted permissions.
        Parameters:
        project - The Project for which we want to get the permission
        Returns:
        A Map containing a Set of the granted permissions for each ProjectKey
        Throws:
        InvalidDataException - If the project is null
        See Also:
        Permission
      • merge

        public void merge​(ProjectKey projectKey)
        Merge the permissions from the given project key keeping those that has already been set.
        Parameters:
        projectKey - An project key (if null, this method simply returns)
        Since:
        2.16
        See Also:
        ProjectPermissions.merge(ProjectKey)
      • getUsers

        public ItemQuery<User> getUsers()
        Get a query that returns all users appearing in at least one of the item keys. The query will not return users that the logged in user doesn't have permission to read.
      • getGroups

        public ItemQuery<Group> getGroups()
        Get a query that returns all groups appearing in at least one of the item keys. The query will not return groups that the logged in user doesn't have permission to read.
      • getProjects

        public ItemQuery<Project> getProjects()
        Get a query that returns all projects appearing in at least one of the project keys. The query will not return projects that the logged in user doesn't have permission to read.
      • getItems

        public Set<SharedItem> getItems()
        Returns the items that are handled within this class.
      • getItems

        public Set<SharedItem> getItems​(Item type)
        Get all items of a specific item type. The returned set is never null, but may be empty if no items of the specified type was found.
        Parameters:
        type - The item type to search for
        Returns:
        A set with the items
        Since:
        2.8
      • getItems

        public Set<SharedItem> getItems​(Collection<Item> types)
        Get all items of specific item types. The returned set is never null, but may be empty if no items of the specified types was found.
        Parameters:
        types - A collection with the item types to search for
        Returns:
        A set with the items
        Since:
        2.8