2.17.2: 2011-06-17

net.sf.basedb.core
Class RoleKey

java.lang.Object
  extended by net.sf.basedb.core.BasicItem<D>
      extended by net.sf.basedb.core.Key<RoleKeyData>
          extended by net.sf.basedb.core.RoleKey
All Implemented Interfaces:
AccessControlled, Identifiable, Nameable

public class RoleKey
extends Key<RoleKeyData>
implements Nameable

This class is used to represent a role key. A role key is, as the name suggests, a key that can be given to roles.

A BASE installation comes with a default set of role keys, one for every type of item. The keys cannot be deleted and no new ones can be created. The id of a role key for an item can be found by calling SystemItems.getRoleKeyId(Item).

The permission given to a role is applied to all items of the type that the role key is valid for. The following example code will give all users the permission to create samples.

Role r = Role.getById(dbControl, Role.USER);
RoleKey rk = RoleKey.getById(dbControl, SystemItems.getRoleKeyId(Item.SAMPLE));
rk.setPermission(r, Permission.CREATE);
dbControl.commit();

Version:
2.0
Author:
Nicklas
Last modified
$Date: 2009-04-06 14:52:39 +0200 (Mon, 06 Apr 2009) $

Field Summary
private static QueryRuntimeFilter RUNTIME_FILTER
          This filter will only return items if the logged in user has generic read permission to roles.
static Item TYPE
          The type of item represented by this class.
 
Fields inherited from interface net.sf.basedb.core.Nameable
MAX_DESCRIPTION_LENGTH, MAX_NAME_LENGTH
 
Constructor Summary
RoleKey(RoleKeyData roleKeyData)
           
 
Method Summary
static RoleKey getById(DbControl dc, int id)
          Get a RoleKey item when you know the ID.
static RoleKey getByItemType(DbControl dc, Item itemType)
          Get a RoleKey item when you know the Item type.
 String getDescription()
          Get the description for the item.
 Item getItemType()
          Get the Item type for the type of items this role key applies to.
 String getName()
          Get the name of the item.
 Set<Permission> getPermissions(Role role)
          Get the permissions for a role.
(package private)  PluginPermission getPluginPermissions()
           
static ItemQuery<RoleKey> getQuery()
          Get a query object configured to retrieve role keys.
 Item getType()
          Get the type of item represented by the object.
(package private)  void initPermissions(int granted, int denied)
          CREATE and DELETE permissions are always denied.
 boolean isUsed()
          Always return TRUE.
 void setDescription(String description)
          Set the description for the item.
 void setName(String name)
          Set the name of the item.
 void setPermissions(Role role, Set<Permission> permissions)
          Grant permissions to a role.
 
Methods inherited from class net.sf.basedb.core.BasicItem
addUsingItems, addUsingItems, checkPermission, equals, getData, getDbControl, getId, getPermissions, getSessionControl, getUsingItems, getVersion, hashCode, hasPermission, isDetached, isInDatabase, onAfterCommit, onAfterInsert, onBeforeCommit, onRollback, setDbControl, setProjectDefaults, toString, toTransferable, validate
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.sf.basedb.core.Identifiable
getId, getVersion
 
Methods inherited from interface net.sf.basedb.core.AccessControlled
checkPermission, getPermissions, hasPermission
 

Field Detail

TYPE

public static final Item TYPE
The type of item represented by this class.

See Also:
Item.ROLEKEY, getType()

RUNTIME_FILTER

private static final QueryRuntimeFilter RUNTIME_FILTER
This filter will only return items if the logged in user has generic read permission to roles.

Constructor Detail

RoleKey

RoleKey(RoleKeyData roleKeyData)
Method Detail

getById

public static RoleKey getById(DbControl dc,
                              int id)
                       throws ItemNotFoundException,
                              PermissionDeniedException,
                              BaseException
Get a RoleKey item when you know the ID. The ID of a role key can be found by calling SystemItems.getRoleKeyId(Item).

Parameters:
dc - The DbControl which will be used for permission checking and database access.
id - The ID of the item to load
Returns:
The RoleKey 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

getByItemType

public static RoleKey getByItemType(DbControl dc,
                                    Item itemType)
                             throws ItemNotFoundException,
                                    PermissionDeniedException,
                                    BaseException
Get a RoleKey item when you know the Item type.

Parameters:
dc - The DbControl which will be used for permission checking and database access.
itemType - The item type of the role key to load
Returns:
The RoleKey item
Throws:
ItemNotFoundException - If a role key for the specified item type is not found
PermissionDeniedException - If the logged in user doesn't have Permission.READ permission to the item
BaseException - If there is another error

getQuery

public static ItemQuery<RoleKey> getQuery()
Get a query object configured to retrieve role keys. If the logged in user doesn't have generic permission to roles, no role keys are returned.

Returns:
An ItemQuery object

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.

Specified by:
getType in interface Identifiable
Returns:
A value indicating the type of item

getName

public String getName()
Description copied from interface: Nameable
Get the name of the item.

Specified by:
getName in interface Nameable
Returns:
A String with the name of the item

setName

public void setName(String name)
             throws PermissionDeniedException,
                    InvalidDataException
Description copied from interface: Nameable
Set the name of the item. The name cannot be null and mustn't be longer than the value specified by the Nameable.MAX_NAME_LENGTH constant.

Specified by:
setName in interface Nameable
Parameters:
name - The new name for the item
Throws:
PermissionDeniedException - If the logged in user doesn't have write permission
InvalidDataException - If the name is null or longer than specified by the Nameable.MAX_NAME_LENGTH constant

getDescription

public String getDescription()
Description copied from interface: Nameable
Get the description for the item.

Specified by:
getDescription in interface Nameable
Returns:
A String with a description of the item

setDescription

public void setDescription(String description)
                    throws PermissionDeniedException,
                           InvalidDataException
Description copied from interface: Nameable
Set the description for the item. The description can be null but mustn't be longer than the value specified by the Nameable.MAX_DESCRIPTION_LENGTH constant.

Specified by:
setDescription in interface Nameable
Parameters:
description - The new description for the item
Throws:
PermissionDeniedException - If the logged in user doesn't have write permission
InvalidDataException - If the description longer than specified by the Nameable.MAX_DESCRIPTION_LENGTH constant

isUsed

public boolean isUsed()
               throws BaseException
Always return TRUE. All role keys are system items and cannot be deleted.

Overrides:
isUsed in class BasicItem<RoleKeyData>
Returns:
TRUE if this item is used, FALSE otherwise
Throws:
BaseException - If not able to tell if item is used or not.
See Also:
BasicItem.getUsingItems()

initPermissions

void initPermissions(int granted,
                     int denied)
               throws BaseException
CREATE and DELETE permissions are always denied. READ permission is always granted. Other permissions are inherited from the Role.

Overrides:
initPermissions in class BasicItem<RoleKeyData>
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<RoleKeyData>

getItemType

public Item getItemType()
Get the Item type for the type of items this role key applies to.

Returns:
An Item object

setPermissions

public void setPermissions(Role role,
                           Set<Permission> permissions)
                    throws PermissionDeniedException,
                           InvalidDataException
Grant permissions to a role. If Permission.DENIED is set it will override permissions gained from other keys. Ie. if a user has a role key with Permission.DENIED it takes precedence over all other permissions. Use an empty Set or null to remove all permissions for the role.

Parameters:
role - The Role
permissions - The permissions to grant
Throws:
PermissionDeniedException - If the logged in user doesn't have Permission.WRITE permission for the role key
InvalidDataException - If the role is null
See Also:
Permission

getPermissions

public Set<Permission> getPermissions(Role role)
                               throws InvalidDataException
Get the permissions for a role.

Parameters:
role - The Role for which we want to get the permission
Returns:
An EnumSet containing the granted permissions, or an empty set if no permissions have been granted
Throws:
InvalidDataException - If the role is null
See Also:
Permission

2.17.2: 2011-06-17