|
3.0.2: 2012-01-25 | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectnet.sf.basedb.core.BasicItem<D>
public abstract class BasicItem<D extends BasicData>
This is the root superclass of all item classes. All items must inherit from this class. This class provides access to the id, type and version of the item as well as permission checking methods.
| Field Summary | |
|---|---|
private D |
data
The data class from the net.sf.basedb.core.data layer that holds the data for this item. |
private WeakReference<DbControl> |
dc
A reference to the current DbControl object. |
private int |
permissions
The logged in user's permission to this item. |
| Constructor Summary | |
|---|---|
BasicItem(D data)
Create a new instance. |
|
| Method Summary | |
|---|---|
protected void |
addUsingItems(Set<ItemProxy> using,
Item itemType,
Query query)
Add items to the set of items using this one. |
protected void |
addUsingItems(Set<ItemProxy> using,
Query query)
Add items to the set of items using this one. |
void |
checkPermission(Permission permission)
Checks if the logged in user has the specified permission on this item. |
boolean |
equals(Object o)
Check if this item is equal to another item. |
(package private) D |
getData()
Get the BasicData object that holds all data for this item. |
DbControl |
getDbControl()
Get the DbControl object that currently manages this item. |
int |
getId()
Get the id for the item. |
Set<Permission> |
getPermissions()
Get the logged in user's permissions on the item. |
(package private) PluginPermission |
getPluginPermissions()
|
SessionControl |
getSessionControl()
Get the SessionControl object that manages this item. |
Set<ItemProxy> |
getUsingItems()
Get all items that are using this item. |
int |
getVersion()
Get the version number of the item. |
int |
hashCode()
The hash code is calculated at object construction and remains the same during the objects lifetime. |
boolean |
hasPermission(Permission permission)
Checks if the logged in user has the specified permission on this item. |
(package private) void |
initPermissions(int granted,
int denied)
Initialise the logged in user's permissions for this item. |
boolean |
isDetached()
Check if this item is attached to a DbControl object or not. |
boolean |
isInDatabase()
Checks if the item has been saved to the database or not. |
boolean |
isUsed()
Check if this item is used by some other item. |
(package private) void |
onAfterCommit(Transactional.Action action)
This method is called on each Transactional object
after a successful commit to the database. |
(package private) void |
onAfterInsert()
This method is called on all items directly after Hibernate has inserted it into the database. |
(package private) void |
onBeforeCommit(Transactional.Action action)
This method is called on each Transactional item and on
all items if the action is Transactional.Action.CREATE
or Transactional.Action.DELETE before a commit is issued to the database. |
(package private) void |
onRollback(Transactional.Action action)
This method is called on each Transactional object
after an unsuccessful commit to the database. |
(package private) void |
setDbControl(DbControl dbControl)
Set the DbControl object that should manage this item. |
(package private) void |
setProjectDefaults(Project activeProject)
This method is called before inserting new items into the database to allow items to propagate default values from the active project. |
String |
toString()
|
(package private) BasicItemInfo |
toTransferable(BasicItemInfo info)
|
(package private) void |
validate()
This method is called on each Validatable item
before is saved to the database. |
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface net.sf.basedb.core.Identifiable |
|---|
getType |
| Field Detail |
|---|
private final D extends BasicData data
private WeakReference<DbControl> dc
private int permissions
initPermissions(int, int) method.
| Constructor Detail |
|---|
BasicItem(D data)
DbControl.newItem(Class, Object[]) or
DbControl.getItem(Class, BasicData, Object[])
methods instead.
| Method Detail |
|---|
public final boolean hasPermission(Permission permission)
Subclasses that needs to check other keys, such as the
SharedItem should override the initPermissions(int,int) method instead.
hasPermission in interface AccessControlledpermission - A value from the Permission class
TRUE if the user has the permission,
FALSE otherwise
public final void checkPermission(Permission permission)
throws PermissionDeniedException
PermissionDeniedException is thrown.
checkPermission in interface AccessControlledpermission - A value from the Permission class
PermissionDeniedException - If the logged in user doesn't
have the requested permissionpublic final Set<Permission> getPermissions()
AccessControlled
getPermissions in interface AccessControlledpublic final int getId()
Identifiable
getId in interface Identifiablepublic final int getVersion()
Identifiable
getVersion in interface Identifiablepublic String toString()
toString in class Objectpublic final boolean equals(Object o)
equals in class ObjectBasicData.equals(Object)public final int hashCode()
hashCode in class ObjectBasicData.hashCode()BasicItemInfo toTransferable(BasicItemInfo info)
public final boolean isInDatabase()
public final boolean isDetached()
DbControl object or not.
An item is detached if there is no DbControl, if it is closed,
or if is not managed by the DbControl.
DbControl.detachItem(BasicItem),
DbControl.reattachItem(BasicItem, boolean),
DbControl.saveItem(BasicItem)
public boolean isUsed()
throws BaseException
super.isUsed(), unless it has decided
that the item is used by some other means.
BaseException - If not able to tell if item is used or not.getUsingItems()
public Set<ItemProxy> getUsingItems()
throws BaseException
isUsed() method. Ie.
a subclass must override both or none of these methods. The method must
return a set with proxies for all items (even if the logged in user doesn't
have read permission for all of them). With the proxy it is possible to
get the ID and type of the item. To get full access to the item the logged
in user must of course have read permission to it.
BaseException - If there is an error loading the itemsaddUsingItems(Set, Item, org.hibernate.Query)
protected void addUsingItems(Set<ItemProxy> using,
Item itemType,
Query query)
using - The set to add toitemType - The type of items to addquery - A Hibernate query that returns the ID of items that are using
this one
protected void addUsingItems(Set<ItemProxy> using,
Query query)
using - The set to add toquery - A Hibernate query that returns BasicData objectsfinal D getData()
BasicData object that holds all data for this item.
public final DbControl getDbControl()
throws ConnectionClosedException
DbControl object that currently manages this item.
ConnectionClosedException - If the item is connected to a closed
DbControl object, or not connected at allfinal void setDbControl(DbControl dbControl)
DbControl object that should manage this item.
A null value detaches the item
public final SessionControl getSessionControl()
throws ConnectionClosedException
SessionControl object that manages this item.
ConnectionClosedException - If the item is not connected to a
DbControl object
void initPermissions(int granted,
int denied)
throws BaseException
Subclasses that needs to check other keys or properties, such
as the OwnedItem and SharedItem should override
this method. The subclass should calculate additional permissions
to be granted or denied, and combine those with whatever was passed
as parameters. Use the binary OR operator ( | ) to combine
the permissions. Finally the subclass must call
super.initPermissions(granted, denied).
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()
void validate()
throws InvalidDataException,
BaseException
Validatable item
before is saved to the database. If the subclass
overrides this method it should also propagate the call
to the superclass, ie. super.validate().
BaseException - If there is an error
InvalidDataExceptionValidatable,
Developer documentation: Data validation,
Developer documentation: Coding rules and guidelines for item classes
void onBeforeCommit(Transactional.Action action)
throws BaseException
Transactional item and on
all items if the action is Transactional.Action.CREATE
or Transactional.Action.DELETE before a commit is issued to the database.
If the subclass overrides this method it must also propagate the call
to the superclass, ie. super.onBeforeCommit(action).
BaseException - If there is an errorTransactional,
Developer documentation: Transactions,
Developer documentation: Coding rules and guidelines for item classes
void setProjectDefaults(Project activeProject)
throws BaseException
Implementation note! Subclasses should only set default values for properties that hasn't been set explicitly by client code, also accounting for setAbc(null) calls.
activeProject - The currently active project
BaseException
void onAfterInsert()
throws BaseException
onBeforeCommit(Transactional.Action) in case the id is needed. The id
has not been generated when the onBeforeCommit is called.
BaseException - If there is an errorTransactional,
Developer documentation: Transactions,
Developer documentation: Coding rules and guidelines for item classesvoid onAfterCommit(Transactional.Action action)
Transactional object
after a successful commit to the database. If the subclass
overrides this method it should also propagate the call
to the superclass, ie. super.onAfterCommit(action). It is forbidden
to access the DbControl object from this method and
it must not throw any exceptions. All exceptions should be logged
using the Application.getLogger() object.
Transactional,
Developer documentation: Transactions,
Developer documentation: Coding rules and guidelines for item classesvoid onRollback(Transactional.Action action)
Transactional object
after an unsuccessful commit to the database. If the subclass
overrides this method it should also propagate the call
to the superclass, ie. super.onRollback(action). It is forbidden
to access the DbControl object from this method and
it must not throw any exceptions. All exceptions should be logged
using the Application.getLogger() object.
Transactional,
Developer documentation: Transactions,
Developer documentation: Coding rules and guidelines for item classes
|
3.0.2: 2012-01-25 | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||