|
2.17.2: 2011-06-17 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object net.sf.basedb.core.BasicItem<D> net.sf.basedb.core.OwnedItem<ProjectData> net.sf.basedb.core.Project
public class Project
This class is used to represent projects. A project is used to collect items of particular interest in one place. Users and groups can also be granted access to projects, allowing everyone easy access to shared items within the project.
While working with BASE it is possible to set one project as the active project. This enables some useful functionality in the core:
Shareable
item the user creates is automatically
shared to the project.
It is also possible to add an item to other
projects, or remove it completely from all projects. Every member of
a project has a special project permission
which gives the highest
permission for accessing items in the project. Normally this permission
is Permission.USE
. One person might be assigned
administrator of the project and given higher permissions.
Items may also be given a permission within the project. The normal
is to give full access, but it may also be set to for example
Permission.READ
. Then, not even the project administrator
will get more than read permissions to the item. This feature can
for example be used when a project needs to access data from
a user that is not a member of the project.
Role
,
Project
,
SessionControl.setActiveProject(Project)
Nested Class Summary | |
---|---|
static class |
Project.Default
|
private static class |
Project.QueryRuntimeFilterImpl
A runtime filter implementation that limits a query to only return projects where the logged in user is a member or owner unless the logged in user has generic read permission. |
Field Summary | |
---|---|
private Map<Project.Default,BasicData> |
defaults
|
private static QueryRuntimeFilter |
RUNTIME_FILTER
This filter will limit a query to only return projects where the logged in user is a member or owner unless the logged in user has generic read permission. |
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 | |
---|---|
Project(ProjectData projectData)
|
Method Summary | |
---|---|
Set<Permission> |
getAutoPermission()
The permissions to use when automatically sharing new items to the project when it is the active project. |
static Project |
getById(DbControl dc,
int id)
Get a Project item when you know the ID. |
(package private) BasicData |
getDefaultData(DbControl dc,
Project.Default defaultType)
Gets the project's default item as a data object. |
BasicItem |
getDefaultItem(DbControl dc,
Project.Default defaultType)
Gets the project's default item of a certain itemType defined in defaultType . |
RawDataType |
getDefaultRawDataType()
Gets the default raw data type for this project. |
static Project.Default |
getDefaultType(Item itemType,
Item attachesToType)
Get the project default entry that is used to attach item of a given itemType to attachesToType . |
String |
getDescription()
Get the description for the item. |
Date |
getEntryDate()
Get the date that the item was registered in the database. |
ItemQuery<Group> |
getGroups()
Get a query that returns the groups that are members of this project. |
ResultList<Shareable> |
getItems(Item itemType,
int firstItem,
int maxItems,
Permission permission)
Deprecated. Use getItems(Item, int, int, Permission, Set) instead |
ResultList<Shareable> |
getItems(Item itemType,
int firstItem,
int maxItems,
Permission permission,
Set<Include> include)
|
ResultList<Shareable> |
getItems(Set<Item> itemTypes,
int firstItem,
int maxItems,
Permission permission,
Set<Include> include)
Deprecated. In 2.15, use getItems(Set, int, int, Permission, Set, Restriction)
instead |
ResultList<Shareable> |
getItems(Set<Item> itemTypes,
int firstItem,
int maxItems,
Permission permission,
Set<Include> include,
Restriction restriction)
Load the items in a project. |
String |
getName()
Get the name of the item. |
static Project |
getNew(DbControl dc)
Create a new Project item. |
Set<Permission> |
getPermissions(Group group)
Get the permissions for a group in this project. |
Set<Permission> |
getPermissions(User user)
Get the permissions for a user in this project. |
PermissionTemplate |
getPermissionTemplate()
Get the permission template that is used to share new items when this project is active. |
(package private) PluginPermission |
getPluginPermissions()
Make sure plug-ins always has at least read access to the active project. |
static ItemQuery<Project> |
getQuery()
Get a query configured to retrieve projects. |
Item |
getType()
Get the type of item represented by the object. |
ItemQuery<User> |
getUsers()
Get a query that returns the users that are members of this project. |
(package private) void |
initPermissions(int granted,
int denied)
If the logged in user is a member of this project, read or use permission is granted. |
boolean |
isRemoved()
Check if the removed flag is set for this item. |
(package private) void |
onBeforeCommit(Transactional.Action action)
Overrides the BasicItem.onBeforeCommit(Transactional.Action)
method. |
void |
setAutoPermission(Set<Permission> permissions)
Set the default permissions to use when automatically sharing new item the project when it is the active project. |
void |
setDefaultItem(DbControl dc,
BasicItem defaultItem,
Project.Default defaultType)
Sets item as default for project. |
void |
setDefaultRawDataType(RawDataType rawDataType)
Sets a raw data type to be used as default for a project. |
void |
setDescription(String description)
Set the description for the item. |
void |
setName(String name)
Set the name of the item. |
void |
setPermissions(Group group,
Set<Permission> permissions)
Grant a group permissions to this project. |
void |
setPermissions(User user,
Set<Permission> permissions)
Grant a user permissions to this project. |
void |
setPermissionTemplate(PermissionTemplate template)
Set the permission template that should be used to share new items when this project is active. |
void |
setRemoved(boolean removed)
Set the removed flag for this item. |
ProjectInfo |
toTransferable(ProjectInfo info)
Transfer the internal state to a transferable object. |
Methods inherited from class net.sf.basedb.core.OwnedItem |
---|
getOwner, isOwner, setOwner, takeOwnership, toTransferable |
Methods inherited from class net.sf.basedb.core.BasicItem |
---|
addUsingItems, addUsingItems, checkPermission, equals, getData, getDbControl, getId, getPermissions, getSessionControl, getUsingItems, getVersion, hashCode, hasPermission, isDetached, isInDatabase, isUsed, onAfterCommit, onAfterInsert, 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 |
---|
public static final Item TYPE
Item.PROJECT
,
getType()
private static final QueryRuntimeFilter RUNTIME_FILTER
private Map<Project.Default,BasicData> defaults
Constructor Detail |
---|
Project(ProjectData projectData)
Method Detail |
---|
public static Project getNew(DbControl dc) throws BaseException
Project
item.
dc
- The DbControl
which will be used for
permission checking and database access.
Project
item
BaseException
- If there is an errorpublic static Project getById(DbControl dc, int id) throws ItemNotFoundException, PermissionDeniedException, BaseException
Project
item when you know the ID.
dc
- The DbControl
which will be used for
permission checking and database access.id
- The ID of the item to load
Project
item
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 errorpublic static ItemQuery<Project> getQuery()
ItemQuery
objectpublic static Project.Default getDefaultType(Item itemType, Item attachesToType)
itemType
to attachesToType
. Eg.
The Project.Default.SAMPLING_PROTOCOL
is attaches a Item.PROTOCOL
to a Item.SAMPLE
.
itemType
- The item type that is attached... (eg PROTOCOL)attachesToType
- ... to this item type (eg. SAMPLE)
public Item getType()
Identifiable
Item
enumeration.
getType
in interface Identifiable
public String getName()
Nameable
getName
in interface Nameable
String
with the name of the itempublic void setName(String name) throws PermissionDeniedException, InvalidDataException
Nameable
Nameable.MAX_NAME_LENGTH
constant.
setName
in interface Nameable
name
- The new name for the item
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
constantpublic String getDescription()
Nameable
getDescription
in interface Nameable
String
with a description of the itempublic void setDescription(String description) throws PermissionDeniedException, InvalidDataException
Nameable
Nameable.MAX_DESCRIPTION_LENGTH
constant.
setDescription
in interface Nameable
description
- The new description for the item
PermissionDeniedException
- If the logged in user doesn't
have write permission
InvalidDataException
- If the description longer
than specified by the Nameable.MAX_DESCRIPTION_LENGTH
constantpublic boolean isRemoved()
Removable
isRemoved
in interface Removable
public void setRemoved(boolean removed) throws PermissionDeniedException
Removable
setRemoved
in interface Removable
removed
- TRUE if the item should be flagged as removed,
FALSE otherwise
PermissionDeniedException
- If the logged in user doesn't
have Permission.DELETE
permission for setting the flag
to TRUE or Permission.WRITE
permission for setting the
flag to FALSEpublic Date getEntryDate()
Registered
getEntryDate
in interface Registered
void onBeforeCommit(Transactional.Action action) throws NotLoggedInException, BaseException
OwnedItem
BasicItem.onBeforeCommit(Transactional.Action)
method. It sets the owner of the new item to the logged in user, unless
it has already been specified.
onBeforeCommit
in class OwnedItem<ProjectData>
NotLoggedInException
- If no user is logged in
BaseException
- If there is another errorTransactional
,
Core API overview - Transaction handling,
Coding rules and guidelines for item classesvoid initPermissions(int granted, int denied) throws BaseException
initPermissions
in class OwnedItem<ProjectData>
granted
- Permissions that have been granted by the subclassdenied
- Permissions that have been denied by the subclass
BaseException
- If the permissions couldn't be initialisedPluginPermission getPluginPermissions()
getPluginPermissions
in class BasicItem<ProjectData>
public Set<Permission> getAutoPermission()
getPermissionTemplate()
).
public void setAutoPermission(Set<Permission> permissions) throws PermissionDeniedException, InvalidDataException
getPermissionTemplate()
).
permissions
- The permissions, must not be null or empty
PermissionDeniedException
- If the logged in user doesn't
have write permission
InvalidDataException
- If the permissions are null or emptypublic PermissionTemplate getPermissionTemplate()
public void setPermissionTemplate(PermissionTemplate template)
template
- A permission template, or null to not use any templatepublic void setPermissions(User user, Set<Permission> permissions) throws PermissionDeniedException, InvalidDataException
Set
or null
to remove all permissions for the user.
user
- The User
permissions
- The permissions to grant, or null to revoke all permissions
PermissionDeniedException
- If the logged in user doesn't have
Permission.WRITE
permission for the project
InvalidDataException
- If the user is nullPermission
public Set<Permission> getPermissions(User user) throws InvalidDataException
user
- The User
for which we want to get the permission
Set
containing the granted permissions, or an
empty set if no permissions have been granted
InvalidDataException
- If the user is nullPermission
public ItemQuery<User> getUsers() throws BaseException
BaseException
- If the query couldn't be created or configured.User.getQuery()
public void setPermissions(Group group, Set<Permission> permissions) throws PermissionDeniedException, InvalidDataException, BaseException
Set
or null
to remove all permissions for the group. To share to the Group.EVERYONE
group Permission.SHARE_TO_EVERYONE
is required.
group
- The Group
permissions
- The permissions to grant, or null to revoke all permissions
PermissionDeniedException
- If the logged in user doesn't have
Permission.WRITE
permission for the project
InvalidDataException
- If the group is null
BaseException
- If there is another errorPermission
public Set<Permission> getPermissions(Group group) throws InvalidDataException
group
- The Group
for which we want to get the permission
EnumSet
containing the granted permissions, or an
empty set if no permissions have been granted
InvalidDataException
- If the group is nullPermission
public ItemQuery<Group> getGroups()
Group.getQuery()
public ResultList<Shareable> getItems(Item itemType, int firstItem, int maxItems, Permission permission)
getItems(Item, int, int, Permission, Set)
instead
public ResultList<Shareable> getItems(Item itemType, int firstItem, int maxItems, Permission permission, Set<Include> include)
getItems(Set, int, int, Permission, Set)
public ResultList<Shareable> getItems(Set<Item> itemTypes, int firstItem, int maxItems, Permission permission, Set<Include> include)
getItems(Set, int, int, Permission, Set, Restriction)
instead
public ResultList<Shareable> getItems(Set<Item> itemTypes, int firstItem, int maxItems, Permission permission, Set<Include> include, Restriction restriction)
itemTypes
- Limit the list to only return items of the specified types,
use null or an empty set to return items of all typesfirstItem
- The index of the first item to return (0-based)maxItems
- The maximum number of items to return, or 0 to return all itemspermission
- The permission the logged in user must have on the iteminclude
- Options for which items that should be included/excluded from the
result, or null to include all non-removed itemsrestriction
- An optional restriction that is applied to the
queries to further reduce the list
SessionControl.setActiveProject(Project)
public void setDefaultItem(DbControl dc, BasicItem defaultItem, Project.Default defaultType)
dc
- The DbControl
which will be used for
permission checking and database access.defaultItem
- The BasicItem
to set as default.
Use null when to remove a default value.defaultType
- The Project.Default
to be set.public BasicItem getDefaultItem(DbControl dc, Project.Default defaultType)
defaultType
.
If no item of the specified type is found this will return Null
dc
- The DbControl
which will be used for
permission checking and database access.defaultType
- The project's Default
to get.
BasicData getDefaultData(DbControl dc, Project.Default defaultType)
public RawDataType getDefaultRawDataType()
RawDataType
objectpublic void setDefaultRawDataType(RawDataType rawDataType)
rawDataType
is Null
rawDataType
- the RawDataType
to use as default.public ProjectInfo toTransferable(ProjectInfo info)
ToTransferable
toTransferable
in interface ToTransferable<ProjectInfo>
info
- The transferable object to use
|
2.17.2: 2011-06-17 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |