Class ProjectKey

All Implemented Interfaces:
AccessControlled, Identifiable

public class ProjectKey extends Key
This class is used to get information about which projects a Shareable item has been shared to.

A project key is immutable and the project/permission combinations cannot be changed once the key has been created. This allows the core to resuse project keys for all items with the same combination of project/permission values without fear that someone else may change the permissions.

Project keys can be used with Shareable items to share them with projects. If the logged in user has set an active project (see SessionControl.setActiveProject(Project)) new items will automatically be shared to that project.

To create a new project key use the ProjectPermissions object and pass the information to the getNewOrExisting(DbControl, ProjectPermissions) method.

Another option is to use the MultiPermissions object which allows you to modifiy the sharing information of a whole bunch of shareable items in one go. The MultiPermissions class takes care of all the cumbersome work of creating new keys and assigning those to the items for you.

Version:
2.0
Author:
Nicklas
See Also:
Last modified
$Date: 2017-05-22 14:35:27 +0200 (må, 22 maj 2017) $
  • Field Details

  • Constructor Details

  • Method Details

    • getNewOrExisting

      public static ProjectKey getNewOrExisting(DbControl dc, ProjectPermissions projectPermissions) throws BaseException
      Create a new or load an existing ProjectKey when you have a combination of project/permission values. If the database contains a project key with the same combination that project key is loaded and returned, otherwise a new project key is created. If no existing key is found, the new key will immediately be saved and committed to the database using another transaction. This ensures that no two keys contains identical permissions.
      Parameters:
      dc - The DbControl which will be used for permission checking and database access
      projectPermissions - A ProjectPermissions object holding the permissions
      Returns:
      The ProjectKey item
      Throws:
      BaseException - If there is an error
    • getById

      Get a ProjectKey item when you know the ID.
      Parameters:
      dc - The DbControl which will be used for permission checking and database access.
      id - The ID of the item to load
      Returns:
      The ProjectKey item
      Throws:
      ItemNotFoundException - If an item with the specified ID is not found
      PermissionDeniedException - If the logged in user doesn't have Permission.READ permission to the item
      BaseException - If there is another error
    • deleteUnusedProjectKeys

      public static int deleteUnusedProjectKeys() throws BaseException
      Delete all keys that are currently not used by any item. This method is intended to be executed at regular intervals by a cleanup application.
      Throws:
      BaseException - If there is some kind of error.
    • getData

      ProjectKeyData getData()
      Description copied from class: BasicItem
      Get the BasicData object that holds all data for this item.
      Specified by:
      getData in class BasicItem
    • getType

      public Item getType()
      Description copied from interface: Identifiable
      Get the type of item represented by the object. The returned value is one of the values defined in the Item enumeration.
      Returns:
      A value indicating the type of item
    • isUsed

      public boolean isUsed() throws BaseException
      Checks if:
      Overrides:
      isUsed in class BasicItem
      Returns:
      TRUE if this item is used, FALSE otherwise
      Throws:
      BaseException - If not able to tell if item is used or not.
      See Also:
    • getUsingItems

      public Set<ItemProxy> getUsingItems()
      Get all:
      Overrides:
      getUsingItems in class BasicItem
      Returns:
      A set containing proxies for the items, or an empty set if no items are using this item
      Since:
      2.2
      See Also:
    • initPermissions

      void initPermissions(int granted, int denied) throws BaseException
      WRITE permission is always denied. USE and CREATE permission is always granted.
      Overrides:
      initPermissions in class BasicItem
      Parameters:
      granted - Permissions that have been granted by the subclass
      denied - Permissions that have been denied by the subclass
      Throws:
      BaseException - If the permissions couldn't be initialised
    • getPluginPermissions

      PluginPermission getPluginPermissions()
      Overrides:
      getPluginPermissions in class BasicItem
    • getPermissions

      public Set<Permission> getPermissions(Project project) throws InvalidDataException
      Get the permissions for a project.
      Parameters:
      project - The Project for which we want to get the permission
      Returns:
      A Set containing the granted permissions, or an empty set if no permissions have been granted
      Throws:
      InvalidDataException - If the project is null
      See Also:
    • getProjectIds

      public Set<Integer> getProjectIds(Permission permission)
      Get the ID:s of all projects that are shared with this project key having the specified permission.
      Parameters:
      permission - The permission the projects must have
      Returns:
      A set with the ID:s of all matching projects, or an empty set if there are no matches
    • getNewOrExistingId

      static int getNewOrExistingId(Session session, Map<ProjectData,Integer> projectPermissions) throws BaseException
      Find the ID of an existing key with exactly the same project/permission combination. If no existing key is found a new one is created.
      Parameters:
      projectPermissions - A Map holding the project/permission combinations
      Returns:
      The ID of the new or existing key
      Throws:
      BaseException