3.2.1: 2012-12-13

net.sf.basedb.core
Class Protocol

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<D>
                  extended by net.sf.basedb.core.AnnotatedItem<ProtocolData>
                      extended by net.sf.basedb.core.Protocol
All Implemented Interfaces:
AccessControlled, Annotatable, FileAttachable, Identifiable, Nameable, Ownable, Registered, Removable, Shareable, Subtypable

public class Protocol
extends AnnotatedItem<ProtocolData>
implements FileAttachable, Registered, Subtypable

This class is used to represent individual protocol items and information about them.

Version:
2.0
Author:
enell

Field Summary
static String ALIGNMENT
          The ID for the alignment protocol type, for example a protocol used when creating a DerivedBioAssay representing data that has been aligned against a reference genome.
static String CLUSTER_GENERATION
          The ID for the cluster generation (in a flow cell) protocol type, for example a protocol used when creating a PhysicalBioAssay.
static String EXTRACTION
          The ID for the extraction protocol type, for example a protocol used when creating an Extract from a Sample.
static String FEATURE_EXTRACTION
          The ID for the feature extraction protocol type, for example a protocol used for analysing one or more images to create a raw data file.
static String HYBRIDIZATION
          The ID for the hybridization protocol type, for example a protocol used when creating a PhysicalBioAssay from a set of (labeled) Extract:s.
static String LABELING
          The ID for the labeling protocol type, for example a protocol used when creating a labeled extract from an Extract.
static String LIBRARY_PREPARATION
          The ID for the library preparation protocol type, for example a protocol used when creating a library extract from an Extract.
static int MAX_EXTERNAL_ID_LENGTH
          The maximum length of the external id that can be stored in the database.
static String POOLING
          The ID for the pooling protocol type, for example a protocol used when creating a biomaterial item (Sample or Extract) from a set of other biomaterial items.
static String PRINTING
          The ID for the printing protocol type, for example a protocol used when printing a batch of array slides using a print robot.
static String SAMPLING
          The ID for the sampling protocol type, for example a protocol used when creating a Sample from a BioSource.
static String SCANNING
          The ID for the scanning protocol type, for example a protocol used for scanning the microarray slide after an experiment.
static String SEQUENCING
          The ID for the sequencing protocol type, for example a protocol used when creating a DerivedBioAssay from a PhysicalBioAssay
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
Protocol(ProtocolData data)
          Creates a new protocol item.
 
Method Summary
 void addParameter(AnnotationType annotationType)
          Add an annotation type as a parameter to this protocol.
 Set<Annotatable> getAnnotatableParents()
          Get all parents objects which are annotatable and the logged in user has read permission to.
static Protocol getById(DbControl dc, int id)
          Get a Protocol item when you know the ID.
static String getDefaultSystemId(Item itemType)
          Get the system id for the protocol subtype that should be used on an item that doesn't have a subtype.
 Date getEntryDate()
          Get the date that the item was registered in the database.
 String getExternalId()
          Get the external id of the protocol.
 File getFile()
          Get the file that is attached to the item.
 ItemSubtype getItemSubtype()
          Get the subtype of the item.
static Protocol getNew(DbControl dc)
          Create a new Protocol item.
 ItemQuery<AnnotationType> getParameters()
          Get a query that returns all annotation types used as parameters for this protocol.
static ItemQuery<Protocol> getQuery()
          Get a query configured to retrieve protocols.
 Item getType()
          Get the type of item represented by the object.
 Set<ItemProxy> getUsingItems()
          Get all: a BioMaterial:s and PhysicalBioAssay:s using this protocol a Plate:s using this protocol an ArrayBatch:s using this protocol a DerivedBioAssay:s using this protocol a RawBioAssay:s using this protocol
 boolean isParameter(Annotation annotation)
          Check if the annotation is parameter to this protocol.
 boolean isParameter(AnnotationType annotationType)
          Check if the annotation type is a parameter to this protocol.
 boolean isUsed()
          Check if this protocol is used by: a BioMaterialEvent a PlateEvent an ArrayBatch a DerivedBioAssay a RawBioAssay
 void removeParameter(AnnotationType annotationType)
          Remove an annotation type from the parameters for this protocol.
 void setExternalId(String externalId)
          Set the external id of the protocol.
 void setFile(File file)
          Attach a file to the item.
 void setItemSubtype(ItemSubtype subtype)
          Set the subtype on the item.
 
Methods inherited from class net.sf.basedb.core.AnnotatedItem
getAnnotationSet, getProtocol, isAnnotated, removeAnnotations, toTransferable
 
Methods inherited from class net.sf.basedb.core.CommonItem
getDescription, getName, isRemoved, setDescription, setName, setRemoved, toTransferable
 
Methods inherited from class net.sf.basedb.core.SharedItem
getItemKey, getProjectKey, initPermissions, 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, getPluginPermissions, 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.PROTOCOL, getType()

SAMPLING

public static final String SAMPLING
The ID for the sampling protocol type, for example a protocol used when creating a Sample from a BioSource.

Since:
3.0
See Also:
Constant Field Values

EXTRACTION

public static final String EXTRACTION
The ID for the extraction protocol type, for example a protocol used when creating an Extract from a Sample.

Since:
3.0
See Also:
Constant Field Values

LABELING

public static final String LABELING
The ID for the labeling protocol type, for example a protocol used when creating a labeled extract from an Extract.

Since:
3.0
See Also:
Constant Field Values

LIBRARY_PREPARATION

public static final String LIBRARY_PREPARATION
The ID for the library preparation protocol type, for example a protocol used when creating a library extract from an Extract.

Since:
3.0
See Also:
Constant Field Values

POOLING

public static final String POOLING
The ID for the pooling protocol type, for example a protocol used when creating a biomaterial item (Sample or Extract) from a set of other biomaterial items.

Since:
3.0
See Also:
Constant Field Values

HYBRIDIZATION

public static final String HYBRIDIZATION
The ID for the hybridization protocol type, for example a protocol used when creating a PhysicalBioAssay from a set of (labeled) Extract:s.

Since:
3.0
See Also:
Constant Field Values

CLUSTER_GENERATION

public static final String CLUSTER_GENERATION
The ID for the cluster generation (in a flow cell) protocol type, for example a protocol used when creating a PhysicalBioAssay.

Since:
3.0
See Also:
Constant Field Values

SEQUENCING

public static final String SEQUENCING
The ID for the sequencing protocol type, for example a protocol used when creating a DerivedBioAssay from a PhysicalBioAssay

Since:
3.0
See Also:
Constant Field Values

ALIGNMENT

public static final String ALIGNMENT
The ID for the alignment protocol type, for example a protocol used when creating a DerivedBioAssay representing data that has been aligned against a reference genome.

Since:
3.0
See Also:
Constant Field Values

PRINTING

public static final String PRINTING
The ID for the printing protocol type, for example a protocol used when printing a batch of array slides using a print robot.

Since:
3.0
See Also:
Constant Field Values

SCANNING

public static final String SCANNING
The ID for the scanning protocol type, for example a protocol used for scanning the microarray slide after an experiment.

Since:
3.0
See Also:
Constant Field Values

FEATURE_EXTRACTION

public static final String FEATURE_EXTRACTION
The ID for the feature extraction protocol type, for example a protocol used for analysing one or more images to create a raw data file.

Since:
3.0
See Also:
Constant Field Values

MAX_EXTERNAL_ID_LENGTH

public static final int MAX_EXTERNAL_ID_LENGTH
The maximum length of the external id that can be stored in the database.

Since:
2.15
See Also:
setExternalId(String), Constant Field Values
Constructor Detail

Protocol

Protocol(ProtocolData data)
Creates a new protocol item.

Parameters:
data - the data
Method Detail

getDefaultSystemId

public static String getDefaultSystemId(Item itemType)
Get the system id for the protocol subtype that should be used on an item that doesn't have a subtype. This includes Subtypable items with a null ItemSubtype and all other non-subtypable items which can be linked to a protocol.

Parameters:
itemType - The item type
Returns:
The system id of the default protocol or null
Since:
3.0

getNew

public static Protocol getNew(DbControl dc)
                       throws BaseException
Create a new Protocol item.

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

getById

public static Protocol getById(DbControl dc,
                               int id)
                        throws ItemNotFoundException,
                               PermissionDeniedException,
                               BaseException
Get a Protocol 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 Protocol item
Throws:
ItemNotFoundException - This exception is thrown if an item with the specified ID is not found
PermissionDeniedException - This exception is thrown if the logged in user doesn't have READ permission to the item
BaseException - This exception is thrown if there is another error

getQuery

public static ItemQuery<Protocol> getQuery()
Get a query configured to retrieve protocols.

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

getFile

public File getFile()
             throws PermissionDeniedException,
                    BaseException
Description copied from interface: FileAttachable
Get the file that is attached to the item.

Specified by:
getFile in interface FileAttachable
Returns:
A File item, or null if no file is attached
Throws:
PermissionDeniedException - If the logged in user doesn't have read permission for the file
BaseException - If there is another error

setFile

public void setFile(File file)
             throws PermissionDeniedException
Description copied from interface: FileAttachable
Attach a file to the item.

Specified by:
setFile in interface FileAttachable
Parameters:
file - The file to attach to the item
Throws:
PermissionDeniedException - If the logged in user doesn't have use permission for the file or write permission for the item

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

getAnnotatableParents

public Set<Annotatable> getAnnotatableParents()
Description copied from interface: Annotatable
Get all parents objects which are annotatable and the logged in user has read permission to. If the item doesn't have any annotatable parents, it may return null or an empty set. The method should only return the immediate parent(s), not parents to parents, etc. As of BASE 3.1 this method may also return child items if the child item is a Subtypable item that has a subtype with the ItemSubtype.getPushAnnotations() flag set.

Specified by:
getAnnotatableParents in interface Annotatable
Returns:
Always null
Since:
2.12

getItemSubtype

@SubtypableRelatedItems(value=FILE)
public ItemSubtype getItemSubtype()
Description copied from interface: Subtypable
Get the subtype of the item.

Specified by:
getItemSubtype in interface Subtypable
Returns:
A subtype of null if not set
See Also:
SubtypableRelatedItems

setItemSubtype

public void setItemSubtype(ItemSubtype subtype)
Description copied from interface: Subtypable
Set the subtype on the item.

Specified by:
setItemSubtype in interface Subtypable
Parameters:
subtype - A subtype or null
See Also:
ItemSubtype.setOnItem(Subtypable)

isUsed

public boolean isUsed()
               throws BaseException
Check if this protocol is used by:

Overrides:
isUsed in class BasicItem<ProtocolData>
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:

getExternalId

public String getExternalId()
Get the external id of the protocol. This value can be used to link with information in external databases. It is not used by the BASE core and it doesn't have to be unique.

Returns:
The external id for the protocol
Since:
2.15

setExternalId

public void setExternalId(String externalId)
                   throws PermissionDeniedException,
                          InvalidDataException
Set the external id of the protocol. The value may be null but must not be longer than the value specified by the MAX_EXTERNAL_ID_LENGTH constant.

Parameters:
externalId - The new value for the external id
Throws:
PermissionDeniedException - If the logged in user doesn't have write permission
InvalidDataException - If the string is too long
Since:
2.15

addParameter

public void addParameter(AnnotationType annotationType)
                  throws PermissionDeniedException,
                         InvalidDataException
Add an annotation type as a parameter to this protocol.

Parameters:
annotationType - The annotation type to add to this protocol
Throws:
PermissionDeniedException - If the logged in user doesn't have Permission.WRITE permission for the protocol and Permission.USE for the annotation type
InvalidDataException - If the annotationType is null, or the AnnotationType.isProtocolParameter() doesn't return true
Since:
2.2

removeParameter

public void removeParameter(AnnotationType annotationType)
                     throws PermissionDeniedException,
                            InvalidDataException
Remove an annotation type from the parameters for this protocol.

Parameters:
annotationType - The annotation type to remove from this protocol
Throws:
PermissionDeniedException - If the logged in user doesn't have Permission.WRITE permission for the protocol
InvalidDataException - If the annotationType is null
Since:
2.2

isParameter

public boolean isParameter(AnnotationType annotationType)
Check if the annotation type is a parameter to this protocol.

Parameters:
annotationType - The annotation type to check, null always return false
Returns:
TRUE if the annotation type is a parameter, FALSE otherwise
Since:
2.2
See Also:
AnnotationType.isProtocolParameter(Protocol)

isParameter

public boolean isParameter(Annotation annotation)
Check if the annotation is parameter to this protocol. This method is equivalent to isParameter(AnnotationType) but is not affected by possible permission problems with the annotation type.

Parameters:
annotation - The annotation to check, null always return false
Returns:
TRUE if the annotation is a parameter, FALSE otherwise
Since:
2.10

getParameters

public ItemQuery<AnnotationType> getParameters()
Get a query that returns all annotation types used as parameters for this protocol.

Returns:
An ItemQuery object
Since:
2.2

3.2.1: 2012-12-13