mima.domain
Class Node

java.lang.Object
  extended by mima.domain.Node
Direct Known Subclasses:
CentralNode, SubNode

public abstract class Node
extends java.lang.Object

INV: getFrame() != null
INV: getSubNodesCount() >= 0
INV: getSubNodes() != null
INV: _nodeObservers != null

This class implements the Observer Pattern.

Author:
Virginio Carfagno

Nested Class Summary
static class Node.Frame
          Enumeration for Node Frame
 
Field Summary
private  Node.Frame _frame
           
private  boolean _isExpanded
           
private  java.lang.String _link
           
private  java.util.Collection _nodeObservers
          This field is part of the Observer Pattern.
private  java.lang.String _note
           
private  java.lang.String _title
           
 
Constructor Summary
protected Node(java.lang.String title, Node.Frame frame)
          PRE: frame !
 
Method Summary
protected  void add(SubNode subNode)
          PRE: subNode !
private  void checkNotNull(Node.Frame frame)
           
private  void checkNotNull(NodeObserver observer)
           
protected  void checkNotNull(SubNode subNode)
           
 void deregisterObserver(NodeObserver observer)
          PRE: observer !
protected abstract  void doAdd(SubNode subNode)
           
protected abstract  void doRemove(SubNode subNode)
           
 void expand()
          POST: isExpanded() == true
 void expandAll()
          POST: isExpanded() == true
private  void fireNodeChanged()
          This method is part of the Observer Pattern.
 Node.Frame getFrame()
           
 java.lang.String getLink()
           
 java.lang.String getNote()
           
abstract  java.util.Collection getSubNodes()
          POST: Return value !
 int getSubNodesCount()
          POST: Return value >= 0
 java.lang.String getTitle()
           
 boolean hasLink()
           
 boolean hasNote()
           
 boolean hasSubNode(SubNode subNode)
          PRE: subNode !
 boolean hasSubNodes()
           
protected  void invariant()
           
 boolean isExpanded()
           
 boolean isRegisteredObserver(NodeObserver observer)
          PRE: observer !
protected abstract  boolean isRight(SubNode subNode)
           
 void registerObserver(NodeObserver observer)
          PRE: observer !
protected  void remove(SubNode subNode)
          PRE: subNode !
 void setFrame(Node.Frame frame)
          PRE: frame !
 void setLink(java.lang.String link)
          POST: getLink() == link
 void setNote(java.lang.String note)
          POST: getNote() == note
 void setTitle(java.lang.String title)
          POST: getTitle() == title
 void toggleExpansion()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_frame

private Node.Frame _frame

_isExpanded

private boolean _isExpanded

_link

private java.lang.String _link

_nodeObservers

private java.util.Collection _nodeObservers
This field is part of the Observer Pattern.


_note

private java.lang.String _note

_title

private java.lang.String _title
Constructor Detail

Node

protected Node(java.lang.String title,
               Node.Frame frame)
PRE: frame != null
POST: this.isExpanded() == true
POST: this.getFrame() == frame
POST: this.getTitle() == title
POST: this.getLink() == null
POST: this.getNote() == null

Throws:
java.lang.IllegalArgumentException - if frame == null
Method Detail

add

protected void add(SubNode subNode)
PRE: subNode != null
POST: hasSubNodes() == true
POST: hasSubNode(subNode) == true
POST: getSubNodesCount() > 0

Throws:
java.lang.IllegalArgumentException - if subNode == null

checkNotNull

private void checkNotNull(Node.Frame frame)

checkNotNull

private void checkNotNull(NodeObserver observer)

checkNotNull

protected void checkNotNull(SubNode subNode)

deregisterObserver

public void deregisterObserver(NodeObserver observer)
PRE: observer != null
POST: this.isRegisteredObserver(observer) == false

This method is part of the Observer Pattern.

Throws:
java.lang.IllegalArgumentException - if observer == null

doAdd

protected abstract void doAdd(SubNode subNode)

doRemove

protected abstract void doRemove(SubNode subNode)

expand

public void expand()
POST: isExpanded() == true


expandAll

public void expandAll()
POST: isExpanded() == true


fireNodeChanged

private void fireNodeChanged()
This method is part of the Observer Pattern.


getFrame

public Node.Frame getFrame()

getLink

public java.lang.String getLink()

getNote

public java.lang.String getNote()

getSubNodes

public abstract java.util.Collection getSubNodes()
POST: Return value != null


getSubNodesCount

public int getSubNodesCount()
POST: Return value >= 0


getTitle

public java.lang.String getTitle()

hasLink

public boolean hasLink()

hasNote

public boolean hasNote()

hasSubNode

public boolean hasSubNode(SubNode subNode)
PRE: subNode != null

Throws:
java.lang.IllegalArgumentException - if subNode == null

hasSubNodes

public boolean hasSubNodes()

invariant

protected void invariant()

isExpanded

public boolean isExpanded()

isRegisteredObserver

public boolean isRegisteredObserver(NodeObserver observer)
PRE: observer != null

Throws:
java.lang.IllegalArgumentException - if observer == null

isRight

protected abstract boolean isRight(SubNode subNode)

registerObserver

public void registerObserver(NodeObserver observer)
PRE: observer != null
POST: isRegisteredObserver(observer) == true

This method is part of the Observer Pattern.

Throws:
java.lang.IllegalArgumentException - if observer == null

remove

protected void remove(SubNode subNode)
PRE: subNode != null
POST: hasSubNode(subNode) == false
POST: getSubNodesCount() returns one less before method was invoked

Throws:
java.lang.IllegalArgumentException - if subNode == null

setFrame

public void setFrame(Node.Frame frame)
PRE: frame != null
POST: getFrame() == frame

Throws:
java.lang.IllegalArgumentException - if frame == null

setLink

public void setLink(java.lang.String link)
POST: getLink() == link


setNote

public void setNote(java.lang.String note)
POST: getNote() == note


setTitle

public void setTitle(java.lang.String title)
POST: getTitle() == title


toggleExpansion

public void toggleExpansion()