2.17.2: 2011-06-17

net.sf.basedb.core
Class Plate

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<PlateData>
                      extended by net.sf.basedb.core.Plate
All Implemented Interfaces:
AccessControlled, Annotatable, Identifiable, Nameable, Ownable, Registered, Removable, Shareable

public class Plate
extends AnnotatedItem<PlateData>
implements Registered

This class is represents physical plates. A plate must have a PlateType, which defines the geometry and possible events for the plate.

A plate consists of Well:s which are created at the same time the plate is created. The wells are organised into rows and columns as specified by the plate geometry.

A plate is either created directly or as the result of a PlateMapping operation from other plates. In the first case the wells must be linked to reporters before the plate is saved. In the latter case the linking is done automatically from the source plates.

Version:
2.0
Author:
Nicklas
Last modified
$Date: 2010-04-20 10:02:16 +0200 (Tue, 20 Apr 2010) $

Field Summary
static int MAX_BARCODE_LENGTH
          The maximum length of the barcode that can be stored in the database.
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
Plate(PlateData plateData)
           
 
Method Summary
 Set<Annotatable> getAnnotatableParents()
          Get the parent plates, if any.
 String getBarcode()
          Get the barcode of this plate.
static Plate getById(DbControl dc, int id)
          Get a Plate item when you know the id.
 ItemQuery<Plate> getChildPlates()
          Get a query returning the child plates of this plate.
 int getDestinationIndex()
          If the plate was created by a plate mapping, this is the index of this plate in the list of created plates.
 Date getEntryDate()
          Get the date that the item was registered in the database.
 PlateEvent getEvent(PlateEventType eventType)
          Get the event for the specified event type.
 ItemQuery<PlateEvent> getEvents()
          Get a query that returns all event types for this plate type.
static Plate getNew(DbControl dc, PlateType plateType)
          Create a new Plate item.
 ItemQuery<Plate> getParentPlates()
          Get a query returning the parent plates of this plate.
 PlateMapping getPlateMapping()
          Get the PlateMapping used to create this plate.
 PlateType getPlateType()
          Get the PlateType of this plate.
static ItemQuery<Plate> getQuery()
          Get a query that returns plates.
 DataQuery<ReporterData> getReporters()
          Get a query that returns the reporters on this plate.
 int getSourceIndex(Plate parent)
          If this plate was created by a PlateMapping and the specified plate is a parent, get the index of the parent plate in the list of source plates used by the plate mapping.
 Item getType()
          Get the type of item represented by the object.
 Set<ItemProxy> getUsingItems()
          Get all: Child plates ArrayDesign:s using this plate
 Well getWell(int row, int column)
          Get the well on the specified plate coordinate.
 ItemQuery<Well> getWells()
          Get a query returning all wells for this plate.
 boolean hasEvent(PlateEventType eventType)
          Check if an event for the specified event type has been created for this plate.
 boolean isDestroyed()
          Check if the plate has been destroyed.
 boolean isUsed()
          Check if: another Plate has been created from this one (via a PlateMapping) any ArrayDesign:s are using this plate Wells are deleted automatically.
 void setBarcode(String barcode)
          Set the barcode for the plate.
 void setDestroyed(boolean destroyed)
          Set the destroyed flag.
private  void setPlateType(PlateType plateType)
          Set the plate type of this plate.
 
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.PLATE, getType()

MAX_BARCODE_LENGTH

public static final int MAX_BARCODE_LENGTH
The maximum length of the barcode that can be stored in the database. Check the length against this value before calling the setBarcode(String) method to avoid exceptions.

See Also:
Constant Field Values
Constructor Detail

Plate

Plate(PlateData plateData)
Method Detail

getNew

public static Plate getNew(DbControl dc,
                           PlateType plateType)
                    throws BaseException
Create a new Plate item.

Parameters:
dc - The DbControl which will be used for permission checking and database access
plateType - The type of the new plate
Returns:
The new Plate item
Throws:
PermissionDeniedException - If the loggged in user doesn't have use permission for the plate type
InvalidDataException - If the plate type is null
BaseException - If there is another error

getById

public static Plate getById(DbControl dc,
                            int id)
                     throws ItemNotFoundException,
                            PermissionDeniedException,
                            BaseException
Get a Plate 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 Plate 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<Plate> getQuery()
Get a query that returns plates.

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

getAnnotatableParents

public Set<Annotatable> getAnnotatableParents()
                                       throws BaseException
Get the parent plates, if any.

Specified by:
getAnnotatableParents in interface Annotatable
Returns:
A set containing annotatable items, or null
Throws:
BaseException - If there is an error

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

isUsed

public boolean isUsed()
               throws BaseException
Check if: Wells are deleted automatically.

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

getPlateType

public PlateType getPlateType()
                       throws PermissionDeniedException,
                              BaseException
Get the PlateType of this plate.

Returns:
The PlateType item
Throws:
PermissionDeniedException - If the logged in user doesn't have Permission.READ permission for the plate type
BaseException - If there is another error

setPlateType

private void setPlateType(PlateType plateType)
                   throws PermissionDeniedException,
                          InvalidDataException
Set the plate type of this plate.

Throws:
PermissionDeniedException - If the logged in user doesn't have use permission for the plate type
InvalidDataException - If the plate type is null

getPlateMapping

public PlateMapping getPlateMapping()
                             throws PermissionDeniedException,
                                    BaseException
Get the PlateMapping used to create this plate.

Returns:
The PlateMapping item, or null if this plate was not created using a mapping
Throws:
PermissionDeniedException - If the logged in user doesn't have read permission to the plate mapping
BaseException - If there is another error

getDestinationIndex

public int getDestinationIndex()
If the plate was created by a plate mapping, this is the index of this plate in the list of created plates. First plate have index 0.


getBarcode

public String getBarcode()
Get the barcode of this plate. The barcode is not used by the core and it is not required that it is unique.


setBarcode

public void setBarcode(String barcode)
                throws PermissionDeniedException,
                       InvalidDataException
Set the barcode for the plate. Null is allowed but the value can't be longer than the value specified by the MAX_BARCODE_LENGTH constant. Normally, this should be a unique value among all plates, but the core does not check this.

Parameters:
barcode - The new barcode for the plate
Throws:
PermissionDeniedException - If the logged in user doesn't have write permission
InvalidDataException - If the value is too long

isDestroyed

public boolean isDestroyed()
Check if the plate has been destroyed. A destroyed plate can't be used by a PlateMapping to create new plates or to create ArrayDesign:s.


setDestroyed

public void setDestroyed(boolean destroyed)
                  throws PermissionDeniedException
Set the destroyed flag. A destroyed plate can't be used by a PlateMapping to create new plates or to create ArrayDesign:s.

Parameters:
destroyed - TRUE if the plate is destroyed, FALSE otherwise.
Throws:
PermissionDeniedException - If the logged in user doesn't have write permission on the item.

getParentPlates

public ItemQuery<Plate> getParentPlates()
Get a query returning the parent plates of this plate. A plate has parents if it was created by a PlateMapping.

Returns:
An ItemQuery object

getSourceIndex

public int getSourceIndex(Plate parent)
                   throws InvalidDataException
If this plate was created by a PlateMapping and the specified plate is a parent, get the index of the parent plate in the list of source plates used by the plate mapping. If the plate is not a parent, -1 is returned.

Parameters:
parent - The plate to get source index of, if it's a parent. Null is not allowed.
Returns:
The source index or -1 if the plate is not a parent plate
Throws:
InvalidDataException - If the parent is null

getChildPlates

public ItemQuery<Plate> getChildPlates()
Get a query returning the child plates of this plate.

Returns:
An ItemQuery object

getEvent

public PlateEvent getEvent(PlateEventType eventType)
                    throws PermissionDeniedException,
                           InvalidDataException,
                           BaseException
Get the event for the specified event type. If no event for that type exist a new one is created.

Parameters:
eventType - The event type to get or create the event for
Returns:
The PlateEvent item
Throws:
PermissionDeniedException - If the logged in user doesn't have read permission for an existing event or doesn't have write permission if a new event must be created
InvalidDataException - If the event type is null or doesn't belong to the same PlateType as the plate
BaseException - If there is another error
See Also:
hasEvent(PlateEventType), getEvents()

hasEvent

public boolean hasEvent(PlateEventType eventType)
Check if an event for the specified event type has been created for this plate. A plate may only have one event of each type.

Parameters:
eventType - The event type to check
Returns:
TRUE if an event of the specified type exists, FALSE otherwise
See Also:
getEvent(PlateEventType), getEvents()

getEvents

public ItemQuery<PlateEvent> getEvents()
Get a query that returns all event types for this plate type.

Returns:
An ItemQuery object
Throws:
BaseException - If there is an error

getWell

public Well getWell(int row,
                    int column)
             throws PermissionDeniedException,
                    BaseException
Get the well on the specified plate coordinate.

Parameters:
row - The row coordinate of the well. Starting at 0.
column - The column coordinate of the well. Starting at 0.
Returns:
A Well item or null if the coordinates are outside the range specified by the geometry
Throws:
PermissionDeniedException - If the logged in user doesn't have read permission for the well
BaseException - If there is another error

getWells

public ItemQuery<Well> getWells()
Get a query returning all wells for this plate.

Returns:
An ItemQuery object
Throws:
BaseException - If there is an error

getReporters

public DataQuery<ReporterData> getReporters()
Get a query that returns the reporters on this plate. The query is rooted at the wells, which means that:

Returns:
A DataQuery object
Since:
2.8

2.17.2: 2011-06-17