2.17.2: 2011-06-17

net.sf.basedb.util.overview.validator
Interface NodeValidator<I>

All Known Implementing Classes:
AnnotationValidator, AnyToAnyValidator, ArrayBatchValidator, ArrayDesignValidator, ArraySlideValidator, BasicNodeValidator, BioSourceValidator, DataFileValidator, ExperimentalFactorValidator, ExperimentValidator, ExtractValidator, HardwareValidator, HybridizationValidator, LabeledExtractValidator, NameableNodeValidator, NullNodeValidator, PlatformValidator, ProtocolParameterValidator, ProtocolValidator, RawBioAssayValidator, SampleValidator, ScanValidator, SoftwareValidator

public interface NodeValidator<I>

A node validator is responsible for checking the "validity" of a node. The rules that are checked is varying from node to node depending on what type of item it represents. Two common "errors" are missing items and that a user is denied access to an item. Since this means that there is no item to validate there are special methods for those two cases.

The validation of a node is part of the node creation and happens in one of the NodeFactory.createMissingNode(Node), NodeFactory.createDeniedNode(Node) or NodeFactory.createNode(net.sf.basedb.core.BasicItem, Object, Node, ChildNodeDirection) methods. The validation takes place in two steps. The first step calls one of the three pre methods:

This happens before a node is created for an item. If the called method returns false no new node is created and further processing is stopped. The second step happens after the node has been created and calls one of the three post methods:

The last step is to validate a complete folder. This can't happen from the NodeFactory since it only deals with individual nodes. It is the responsibility of a NodeLoader to call postValidateFolder(DbControl, OverviewContext, Node, Node) after it has finished loading a folder node. NOTE! This should be called even if the folder node is null, or if the folder doesn't contain any children (some validators may want to report on missing items!)

Validations failures should be registered with the current context using OverviewContext.createFailure(Validator, Node, String, Fix...).

Version:
2.10
Author:
Nicklas
This class/package is not part of the Public API
This class is still being developed. It may change without notice in future versions of BASE.
Last modified
$Date: 2009-02-18 14:26:21 +0100 (Wed, 18 Feb 2009) $

Method Summary
 void postDeniedItem(DbControl dc, OverviewContext context, Node node, Node parentNode)
          Validate an item that the current user doen't have access to after a node has been created for it.
 void postMissingItem(DbControl dc, OverviewContext context, Node node, Node parentNode)
          Validate a missing item after a node has been created for it.
 void postValidate(DbControl dc, OverviewContext context, Node node, Node parentNode)
          Validate an existing item after a node has been created for it.
 void postValidateFolder(DbControl dc, OverviewContext context, Node folderNode, Node parentNode)
          Validate a folder node after all child (item-type) nodes has been added to the folder.
 boolean preDeniedItem(DbControl dc, OverviewContext context, Node parentNode)
          Validate an item that the current user doen't have access to before creating a node for it.
 boolean preMissingItem(DbControl dc, OverviewContext context, Node parentNode)
          Validate a missing item before creating a node for it.
 boolean preValidate(DbControl dc, OverviewContext context, I item, Node parentNode)
          Validate an existing item before creating a node for it.
 

Method Detail

preMissingItem

boolean preMissingItem(DbControl dc,
                       OverviewContext context,
                       Node parentNode)
Validate a missing item before creating a node for it. This usually means creating a missing item Failure for the parent node and registering it with the context.

Parameters:
dc - A DbControl to use if the validation needs to access the database
context - The current overview context
parentNode - The parent node that is missing the item
Returns:
TRUE if a node should be created, FALSE if not

preDeniedItem

boolean preDeniedItem(DbControl dc,
                      OverviewContext context,
                      Node parentNode)
Validate an item that the current user doen't have access to before creating a node for it.

Parameters:
dc - A DbControl to use if the validation needs to access the database
context - The current overview context
parentNode - The parent node that is linked with the item
Returns:
TRUE if a node should be created, FALSE if not

preValidate

boolean preValidate(DbControl dc,
                    OverviewContext context,
                    I item,
                    Node parentNode)
Validate an existing item before creating a node for it.

Parameters:
dc - A DbControl to use if the validation needs to access the database
context - The current overview context
item - The item to validate
parentNode - The parent node that is linked with the item
Returns:
TRUE if a node should be created, FALSE if not

postMissingItem

void postMissingItem(DbControl dc,
                     OverviewContext context,
                     Node node,
                     Node parentNode)
Validate a missing item after a node has been created for it.

Parameters:
dc - A DbControl to use if the validation needs to access the database
context - The current overview context
node - The node object that represents the missing item
parentNode - The parent node that is missing the item

postDeniedItem

void postDeniedItem(DbControl dc,
                    OverviewContext context,
                    Node node,
                    Node parentNode)
Validate an item that the current user doen't have access to after a node has been created for it.

Parameters:
dc - A DbControl to use if the validation needs to access the database
context - The current overview context
node - The node object that represents the unaccessible item
parentNode - The parent node that is linked with the item

postValidate

void postValidate(DbControl dc,
                  OverviewContext context,
                  Node node,
                  Node parentNode)
Validate an existing item after a node has been created for it.

Parameters:
dc - A DbControl to use if the validation needs to access the database
context - The current overview context
node - The node object that represents item
parentNode - The parent node that is linked with the item

postValidateFolder

void postValidateFolder(DbControl dc,
                        OverviewContext context,
                        Node folderNode,
                        Node parentNode)
Validate a folder node after all child (item-type) nodes has been added to the folder. This method must be called by node loaders in all cases were it is theoretically possible that a folder node can be created. Some validators may, for example, check on missing items!

Parameters:
dc - A DbControl to use for database access
context - The current overview context
folderNode - The folder node, or null if no folder has been created
parentNode - The parent node (never null)

2.17.2: 2011-06-17