Class ReporterCloneTemplate

All Implemented Interfaces:
AccessControlled, Identifiable, Nameable, Ownable, Registered, Removable, Shareable

public class ReporterCloneTemplate
extends CommonItem
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 Details

  • Constructor Details

  • Method Details

    • 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

      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
    • getData

      Description copied from class: BasicItem
      Get the BasicData object that holds all data for this item.
      Overrides:
      getData in class CommonItem
    • 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
      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
    • isUsed

      public boolean isUsed() throws BaseException
      Check if:
      • An experiment/virtualdb is using this template
      Overrides:
      isUsed in class BasicItem
      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:
      • Experiment that is using this template
      Overrides:
      getUsingItems in class BasicItem
      Returns:
      A set containing proxies for the items, or an empty set if no items are using this item
      See Also:
      BasicItem.addUsingItems(Set, Item, org.hibernate.query.Query)
    • 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
    • setEntryDate

      public void setEntryDate​(Date entryDate)
      Description copied from interface: Registered
      Set the date the entry was registered in the database. Implementations should only allow this property to be set before the item is first stored in the database. The intention of this method is to facilitate export/import of data between server.
      Specified by:
      setEntryDate in interface Registered
      Parameters:
      entryDate - A date or null to use today's date
    • 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
      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)