2.17.2: 2011-06-17

net.sf.basedb.util.overview
Class Node

java.lang.Object
  extended by net.sf.basedb.util.overview.Node
All Implemented Interfaces:
Comparable<Node>

public class Node
extends Object
implements Comparable<Node>

A node in an overview. There are two types of nodes: folder nodes and item nodes. The only difference is that an item node has a link to a BasicItem (see getItem() but a folder node does not. Both node types can have child nodes.

Each node has a unique ID (getId()) which is based on the system hashcode. Each node also has a name which should be unique among the child nodes. If the name isn't unique the getChild(String) returns the first matching node.

Version:
2.2
Author:
Nicklas
Last modified
$Date: 2010-08-13 10:50:27 +0200 (Fri, 13 Aug 2010) $

Nested Class Summary
static class Node.Type
          The type of node.
 
Field Summary
private  int childErrors
           
private  List<Node> children
           
private  boolean childrenLoaded
           
private  int childWarnings
           
private  ChildNodeDirection direction
           
private  BasicItem item
           
private  String name
           
private  String nodeId
           
private  int numErrors
           
private  int numWarnings
           
private  Node parent
           
private  String title
           
private  Node.Type type
           
 
Constructor Summary
private Node(Node copyFrom, Node parent)
          Make a copy of a node
  Node(String name, String title, BasicItem item)
          Create an item-type root node.
  Node(String name, String title, Node parent)
          Create a folder-type child node.
  Node(String name, String title, Node parent, BasicItem item)
          Create an item-type child node
  Node(String name, String title, Node parent, BasicItem item, ChildNodeDirection direction)
          Create an item-type child node
private Node(String name, String title, Node parent, BasicItem item, Node.Type type, ChildNodeDirection direction)
           
  Node(String name, String title, Node parent, ChildNodeDirection direction)
          Create a folder-type child node.
 
Method Summary
protected  void addChild(Node child)
          Add a child node to this one.
protected  void addChildErrors(int numErrors)
          Add child errors to this node.
protected  void addChildWarnings(int numWarnings)
          Add child warnings to this node.
 void addErrors(int numErrors)
          Add more errors to this node.
 void addWarnings(int numWarnings)
          Add more warnings to this node.
 void clearFailures()
          Clear all warnings, errors on this node and on all child nodes.
 int compareTo(Node o)
           
 Node deepCopy(Node parentOfCopy)
          Create a deep copy of this node and all it's children.
private  Node deepCopyInternal(Node parentOfCopy)
           
 Node getChild(String name)
          Get the child node with a specific name.
 int getChildErrors()
          Get the number of errors to children of this node.
 ChildNodeDirection getChildNodeDirection()
          Get the direction to use when loading children of this node.
 List<Node> getChildren()
          Get all child nodes of this node.
 int getChildWarnings()
          Get the number of warnings to children of this node.
 Node getFirstParent(Filter<? super Node> filter)
          Find the first parent node that matches a filter.
 String getId()
          Get a unique ID for this node.
 BasicItem getItem()
          Get the item that is related to this node.
 BasicItem getItem(DbControl dc)
          Get the item that is related to this node and make sure that it is loaded with the current DbControl.
 Item getItemType()
          Get the item type of the item that this node related to this node.
 String getName()
          Get the name of this node.
 Node.Type getNodeType()
          Get the node type of this node.
 int getNumErrors()
          Get the number of errors on this node.
 int getNumWarnings()
          Get the number of warnings on this node.
 Node getParent()
          Get the parent of this node.
 String getTitle()
          Get the display title of this node.
 boolean isChildrenLoaded()
           
 int numChildren()
          Get the number of child nodes in this node.
 void setChildrenLoaded()
          Sets a flag to indicate that all children has been loaded.
 void setErrors(int numErrors)
          Set the number of errors that was found while validating this node.
 void setWarnings(int numWarnings)
          Set the number of warnings that was found while validating this node.
 void sortChildren(Comparator<? super Node> comparator)
          Sorts the list of child nodes.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

name

private final String name

title

private final String title

item

private final BasicItem item

parent

private final Node parent

type

private final Node.Type type

nodeId

private final String nodeId

direction

private final ChildNodeDirection direction

children

private List<Node> children

numWarnings

private int numWarnings

numErrors

private int numErrors

childWarnings

private int childWarnings

childErrors

private int childErrors

childrenLoaded

private boolean childrenLoaded
Constructor Detail

Node

public Node(String name,
            String title,
            BasicItem item)
Create an item-type root node.

Parameters:
name - The name of the node
title - The display title of the node
item - The item the node references
See Also:
GenericOverview.getRootNode()

Node

public Node(String name,
            String title,
            Node parent)
Create a folder-type child node.

Parameters:
name - The name of the child node
title - The display title of the node
parent - The parent node

Node

public Node(String name,
            String title,
            Node parent,
            ChildNodeDirection direction)
Create a folder-type child node.

Parameters:
name - The name of the child node
title - The display title of the node
parent - The parent node
direction - The direction to use when continuing to load child nodes
Since:
2.10

Node

public Node(String name,
            String title,
            Node parent,
            BasicItem item)
Create an item-type child node

Parameters:
name - The name of the child node
title - The display title of the node
parent - The parent node
item - The item this node references

Node

public Node(String name,
            String title,
            Node parent,
            BasicItem item,
            ChildNodeDirection direction)
Create an item-type child node

Parameters:
name - The name of the child node
title - The display title of the node
parent - The parent node
item - The item this node references
direction - The direction to use when continuing to load child nodes
Since:
2.10

Node

private Node(String name,
             String title,
             Node parent,
             BasicItem item,
             Node.Type type,
             ChildNodeDirection direction)

Node

private Node(Node copyFrom,
             Node parent)
Make a copy of a node

Since:
2.10
Method Detail

getId

public String getId()
Get a unique ID for this node. The ID is based on the hashcode and should be unique for a given virtual machine.


getNodeType

public Node.Type getNodeType()
Get the node type of this node. Note that for folder-type nodes the getItem() always return null. It it returns null for an item-type node it usually means that access was denied to that particular item.


getName

public String getName()
Get the name of this node. If the name is unique among the child nodes for a parent the call getParent().getChild(this.getName()) should return this node.


getTitle

public String getTitle()
Get the display title of this node.


getItem

public BasicItem getItem()
Get the item that is related to this node. Folder-type nodes always return null. If an item-type node returns null it usually means that access was denied to the item.


getItem

public BasicItem getItem(DbControl dc)
Get the item that is related to this node and make sure that it is loaded with the current DbControl. Folder-type nodes always return null. If an item-type node returns null it usually means that access was denied to the item.

Since:
2.10

getItemType

public Item getItemType()
Get the item type of the item that this node related to this node. This method is a shortcut for getItem().getType().

Returns:
The item type, or null if no item is attached to this node
Since:
2.10

getParent

public Node getParent()
Get the parent of this node. Returns null if this is the root node.


getFirstParent

public Node getFirstParent(Filter<? super Node> filter)
Find the first parent node that matches a filter. Eg. The first parent were Filter.evaluate(Object) returns true is the node that is returned.

Parameters:
filter - The filter to use for matching parent
Returns:
The node, or null if no node was found
Since:
2.10

getChildren

public List<Node> getChildren()
Get all child nodes of this node. May return null or an empty list if this node has no children.


numChildren

public int numChildren()
Get the number of child nodes in this node.

Returns:
The number of child nodes, or -1 if the child nodes has not been loaded yet
Since:
2.10

getChild

public Node getChild(String name)
Get the child node with a specific name. If more than one node has the same name only the first one found is returned.

Parameters:
name - The name of the child node.
Returns:
The child node with the given name, or null if no node is found

addChild

protected void addChild(Node child)
Add a child node to this one.


sortChildren

public void sortChildren(Comparator<? super Node> comparator)
Sorts the list of child nodes.

Parameters:
comparator - A comparator that determines the sort order, if not specifed, they children are sorted according to their title
Since:
2.14

setChildrenLoaded

public void setChildrenLoaded()
Sets a flag to indicate that all children has been loaded.

Since:
2.10

isChildrenLoaded

public boolean isChildrenLoaded()
Returns:
TRUE if the children to this node has been loaded, FALSE otherwise
Since:
2.10

getChildNodeDirection

public ChildNodeDirection getChildNodeDirection()
Get the direction to use when loading children of this node.

Returns:
A ChildNodeDirection object
Since:
2.10

setWarnings

public void setWarnings(int numWarnings)
Set the number of warnings that was found while validating this node. This method automatically updates the number of child warnings reported by parent nodes.

Parameters:
numWarnings - The number of warnings
See Also:
addWarnings(int)

addWarnings

public void addWarnings(int numWarnings)
Add more warnings to this node. This method automatically updates the number of child warnings reported by parent nodes.

Parameters:
numWarnings - The numer of warnings to add
See Also:
setWarnings(int)

addChildWarnings

protected void addChildWarnings(int numWarnings)
Add child warnings to this node. This method is called by child nodes when the warnings are updated on them.


setErrors

public void setErrors(int numErrors)
Set the number of errors that was found while validating this node. This method automatically updates the number of child errors reported by parent nodes.

Parameters:
numErrors - The number of errors
See Also:
addErrors(int)

addErrors

public void addErrors(int numErrors)
Add more errors to this node. This method automatically updates the number of child errors reported by parent nodes.

Parameters:
numErrors - The numer of errors to add
See Also:
setErrors(int)

addChildErrors

protected void addChildErrors(int numErrors)
Add child errors to this node. This method is called by child nodes when the errors are updated on them.


getNumWarnings

public int getNumWarnings()
Get the number of warnings on this node.

See Also:
getChildWarnings()

getNumErrors

public int getNumErrors()
Get the number of errors on this node.

See Also:
getChildErrors()

getChildWarnings

public int getChildWarnings()
Get the number of warnings to children of this node.

See Also:
getNumWarnings()

getChildErrors

public int getChildErrors()
Get the number of errors to children of this node.

See Also:
getNumErrors()

clearFailures

public void clearFailures()
Clear all warnings, errors on this node and on all child nodes.


deepCopy

public Node deepCopy(Node parentOfCopy)
Create a deep copy of this node and all it's children. The copy will be attached to the given parent.

Parameters:
parentOfCopy - The node that should be the parent of the copy or null to make the copy a root node
Returns:
The copy
Throws:
PermissionDeniedException - If the given parent node is a descendant of this node (it would lead to an infinite loop)
Since:
2.10

deepCopyInternal

private Node deepCopyInternal(Node parentOfCopy)

compareTo

public int compareTo(Node o)
Specified by:
compareTo in interface Comparable<Node>

toString

public String toString()
Overrides:
toString in class Object

2.17.2: 2011-06-17