3.2.4: 2013-12-06

net.sf.basedb.core
Class ReporterCloneTemplate

java.lang.Object
  extended by net.sf.basedb.core.BasicItem<D>
      extended by net.sf.basedb.core.OwnedItem<D>
          extended by net.sf.basedb.core.SharedItem<D>
              extended by net.sf.basedb.core.CommonItem<ReporterCloneTemplateData>
                  extended by net.sf.basedb.core.ReporterCloneTemplate
All Implemented Interfaces:
AccessControlled, Identifiable, Nameable, Ownable, Registered, Removable, Shareable

public class ReporterCloneTemplate
extends CommonItem<ReporterCloneTemplateData>
implements Registered

A reporter clone template is a definition of which reporter properties/annotations that should be cloned to a per-experiment table in the dynamic database. The cloning operation is initiated with Experiment.getReporterCloneBatcher(DbControl). The reporter internal and external id are always cloned and should not be part of the template. The cloning operation also creates a locked copy of the template, so that it is possible to make modifications to the original template without affecting the cloned data.

Since:
3.1
Author:
Nicklas
Last modified
$Date $

Field Summary
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
ReporterCloneTemplate(ReporterCloneTemplateData data)
           
 
Method Summary
(package private)  void addBytes(long bytes)
           
 void addClonableProperty(ClonableProperty property)
          Add a clonable property to this template.
(package private) static ReporterCloneTemplateData createAllCopy(String name)
           
(package private)  ReporterCloneTemplateData createLockedCopy()
          Create a deep clone of this template.
static ReporterCloneTemplate getById(DbControl dc, int id)
          Get a reporter clone template item when you know the id.
 long getBytes()
          Get the number of bytes the cloned reporter information use in the database.
 List<ClonableProperty> getClonableProperties()
          Get a list with all clonable properties in this template.
(package private) static List<ClonableProperty> getClonableProperties(ReporterCloneTemplateData template)
           
 ClonableProperty getClonableProperty(String propertyName)
          Get information about a clonable property that is included in this template.
 Date getEntryDate()
          Get the date that the item was registered in the database.
static ReporterCloneTemplate getNew(DbControl dc)
          Create a new reporter clone template item.
(package private)  PluginPermission getPluginPermissions()
           
static ItemQuery<ReporterCloneTemplate> getQuery()
          Get a query that returns reporter clone templates.
 Item getType()
          Get the type of item represented by the object.
 Set<ItemProxy> getUsingItems()
          Get all: Experiment that is using this template
 boolean hasClonableProperty(String propertyName)
          Check if this template contains a clonable property with the given name.
(package private)  void initPermissions(int granted, int denied)
          Locked templates are READ-able by all, and everything else is denied.
 boolean isLocked()
          If the template is locked it means that it is used by an experiment and can't be modified or deleted.
 boolean isUsed()
          Check if: An experiment/virtualdb is using this template
 void removeClonableProperty(String propertyName)
          Remove the property with the given name from this template
 void setDescription(String description)
          Allow the description to be changed with RESTRICTED_WRITE permission.
 
Methods inherited from class net.sf.basedb.core.CommonItem
getDescription, getName, isRemoved, setName, setRemoved, toTransferable
 
Methods inherited from class net.sf.basedb.core.SharedItem
getItemKey, getProjectKey, isShared, onBeforeCommit, setItemKey, setProjectKey, toTransferable
 
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, getVersion, hashCode, hasPermission, isDetached, isInDatabase, 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
 
Methods inherited from interface net.sf.basedb.core.Ownable
getOwner, isOwner, setOwner, takeOwnership
 

Field Detail

TYPE

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

See Also:
Item.REPORTERCLONETEMPLATE, getType()
Constructor Detail

ReporterCloneTemplate

ReporterCloneTemplate(ReporterCloneTemplateData data)
Method Detail

getNew

public static ReporterCloneTemplate getNew(DbControl dc)
                                    throws BaseException
Create a new reporter clone template item.

Parameters:
dc - The DbControl which will be used for permission checking and database access
Returns:
The new ReporterCloneTemplate item
Throws:
BaseException - If there is an error

getById

public static ReporterCloneTemplate getById(DbControl dc,
                                            int id)
                                     throws ItemNotFoundException,
                                            PermissionDeniedException,
                                            BaseException
Get a reporter clone template 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 ReporterCloneTemplate 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

getQuery

public static ItemQuery<ReporterCloneTemplate> getQuery()
Get a query that returns reporter clone templates. It will always only return unlocked templates.

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

initPermissions

void initPermissions(int granted,
                     int denied)
               throws BaseException
Locked templates are READ-able by all, and everything else is denied. Unlocked templates use the regular permissions.

Overrides:
initPermissions in class SharedItem<ReporterCloneTemplateData>
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<ReporterCloneTemplateData>

isUsed

public boolean isUsed()
               throws BaseException
Check if:

Overrides:
isUsed in class BasicItem<ReporterCloneTemplateData>
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()

getUsingItems

public Set<ItemProxy> getUsingItems()
Get all:

getEntryDate

public Date getEntryDate()
Description copied from interface: Registered
Get the date that the item was registered in the database.

Specified by:
getEntryDate in interface Registered
Returns:
A date or null if this is not known

setDescription

public void setDescription(String description)
                    throws PermissionDeniedException,
                           InvalidDataException
Allow the description to be changed with RESTRICTED_WRITE permission.

Specified by:
setDescription in interface Nameable
Overrides:
setDescription in class CommonItem<ReporterCloneTemplateData>
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

isLocked

public boolean isLocked()
If the template is locked it means that it is used by an experiment and can't be modified or deleted. Locked templates are managed automatically by the BASE core.


getBytes

public long getBytes()
Get the number of bytes the cloned reporter information use in the database.


addBytes

void addBytes(long bytes)

addClonableProperty

public void addClonableProperty(ClonableProperty property)
Add a clonable property to this template.

Parameters:
property - Information about the property to include in the template (null is not allowed)

removeClonableProperty

public void removeClonableProperty(String propertyName)
Remove the property with the given name from this template

Parameters:
propertyName - The name of a property (null is not allowed)

getClonableProperty

public ClonableProperty getClonableProperty(String propertyName)
Get information about a clonable property that is included in this template.

Parameters:
propertyName - The name of a property
Returns:
Cloned property information, or null if the named property is not part of this template

hasClonableProperty

public boolean hasClonableProperty(String propertyName)
Check if this template contains a clonable property with the given name.

Parameters:
propertyName - The property name to check
Returns:
TRUE if the template contains the given property, FALSE if not

getClonableProperties

public List<ClonableProperty> getClonableProperties()
Get a list with all clonable properties in this template. The returned list is a copy of the information in this template and modifications to the list do not affect this template.

Returns:
A list with cloned properties

createLockedCopy

ReporterCloneTemplateData createLockedCopy()
Create a deep clone of this template. Modifications made to the template after this call do not affect the copy. The returned copy is locked and cannot be modifed. Properties that are part of the original template, but no longer exists are not copied.


createAllCopy

static ReporterCloneTemplateData createAllCopy(String name)

getClonableProperties

static List<ClonableProperty> getClonableProperties(ReporterCloneTemplateData template)

3.2.4: 2013-12-06