|
3.0.1: 2011-11-10 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.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 | |
---|---|
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 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 | |
---|---|
void |
addDefaultItem(BasicItem defaultItem)
Add an item as a default project item. |
(package private) List<BasicData> |
findAllDefaultData(Item itemType,
ItemSubtypeData subtype,
boolean strict)
Find all default items in this project of the given item type (required) and subtype (optional). |
(package private) BasicData |
findDefaultData(DbControl dc,
String subtypeId,
boolean strict)
|
(package private) BasicData |
findDefaultData(Item itemType,
ItemSubtypeData subtype,
boolean strict)
Find a default item in this project of the given item type (required) and subtype (optional). |
List<? extends BasicItem> |
findDefaultItems(DbControl dc,
Item itemType,
boolean strict)
Find the default items of the given item type. |
List<? extends BasicItem> |
findDefaultItems(DbControl dc,
ItemSubtype subtype,
boolean strict)
Find the default (subtypable) items that has the given subtype. |
List<? extends BasicItem> |
findDefaultItemsOfRelatedSubtype(DbControl dc,
ItemSubtype subtype,
Item relatedType)
Utility method for finding default items of the given relatedType. |
(package private) BasicData |
findDefaultRelatedData(DbControl dc,
Subtypable item,
Item relatedItemType,
boolean strict)
|
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. |
List<BasicItem> |
getDefaultItems(DbControl dc)
Get a list with all default items added to this project. |
List<BasicItem> |
getDefaultItems(DbControl dc,
Item itemType)
Get a list with all default items of a given item type added to this project. |
RawDataType |
getDefaultRawDataType()
Gets the default raw data type for this project. |
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,
Set<Include> include)
|
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. |
boolean |
hasDefaultForItem(BasicItem item)
Check if the project has a default item that has the same class and subtype as the given item. |
boolean |
hasDefaultOfType(Item itemType,
ItemSubtype subtype)
Check if the project has a default item of the given item type and (optional) subtype. |
(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 |
isDefaultItem(BasicItem item)
Check if the given item is a default item in this project. |
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 |
removeDefaultItem(BasicItem defaultItem)
Remove an item from the list of default items for this project. |
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 |
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
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 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
,
Developer documentation: Transactions,
Developer documentation: 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, Set<Include> include)
getItems(Set, int, int, Permission, Set, Restriction)
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 addDefaultItem(BasicItem defaultItem)
defaultItem
- The item to make defaultpublic void removeDefaultItem(BasicItem defaultItem)
defaultItem
- The item to removepublic List<? extends BasicItem> findDefaultItems(DbControl dc, Item itemType, boolean strict)
dc
- A DbControl for database accessitemType
- The type of item to find
public List<? extends BasicItem> findDefaultItems(DbControl dc, ItemSubtype subtype, boolean strict)
dc
- A DbControl for database accesssubtype
- The requested subtypestrict
- TRUE to strictly match the subtype, FALSE to also
search for items without subtype
public List<? extends BasicItem> findDefaultItemsOfRelatedSubtype(DbControl dc, ItemSubtype subtype, Item relatedType)
findDefaultItems(DbControl, Item, boolean)
was called with strict=true (eg. it will only find items that doesn't have a subtype).
If a related subtype is found this method behaves as if
findDefaultItems(DbControl, ItemSubtype, boolean)
was called with the related subtype and strict=false.
dc
- A DbControl for database accesssubtype
- The main subtyperelatedType
- The related item type that we are interested in
public List<BasicItem> getDefaultItems(DbControl dc)
dc
- A DbControl for database access
public List<BasicItem> getDefaultItems(DbControl dc, Item itemType)
dc
- A DbControl for database accessitemType
- The type of the default item or null to return all default items
public boolean isDefaultItem(BasicItem item)
item
- The item to check
public boolean hasDefaultOfType(Item itemType, ItemSubtype subtype)
itemType
- The item type to look forsubtype
- The subtype to look for, or null to ignore subtypes
public boolean hasDefaultForItem(BasicItem item)
item
- The item to check
BasicData findDefaultRelatedData(DbControl dc, Subtypable item, Item relatedItemType, boolean strict)
BasicData findDefaultData(DbControl dc, String subtypeId, boolean strict)
BasicData findDefaultData(Item itemType, ItemSubtypeData subtype, boolean strict)
If more than one item matches the critera, the first one found is returned.
itemType
- The main item type of the item we are looking forsubtype
- The subtype of the item we are looking for (optional)strict
- TRUE if the subtype must matchList<BasicData> findAllDefaultData(Item itemType, ItemSubtypeData subtype, boolean strict)
itemType
- The main item type of the item we are looking forsubtype
- The subtype of the item we are looking for (optional)strict
- TRUE if the subtype must matchpublic 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
|
3.0.1: 2011-11-10 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |