Diagram Objects

This is the container used to assemble Node objects into a connected flow or well-formed sequence of nodes.

d.clear()

Deletes all nodes from this diagram.

Exceptions:

ObjectLockedException : if the diagram is currently locked

d.create(nodeType, name) : Node

nodeType (string) : the node type name

name (string) : the object's name

Creates a Node of the specified type and adds it to this diagram.

Exceptions:

ObjectCreationException : if the node cannot be created for some reason

ObjectLockedException : if the node cannot be added to the stream

d.createAt(nodeType, name, x, y) : Node

nodeType (string) : the node type name

name (string) : the object's name

x (int) : the x location

y (int) : the y location

Creates a Node of the specified type and adds it to this diagram at the specified location. If either x < 0 or y < 0, the location is not set.

Exceptions:

ObjectCreationException : if the node cannot be created for some reason

ObjectLockedException : if the node cannot be added to the stream

d.createModelApplier(modelOutput, name) : Node

modelOutput (ModelOutput) : the model output object

name (string) : the new object's name

Creates a ModelApplier derived from the supplied model output object.

Exceptions:

ObjectCreationException : if the node cannot be created for some reason

ObjectLockedException : if the node cannot be added to the stream

d.delete(node)

node (Node) : the node to be removed

Deletes the specified node from this diagram. The node must be owned to this diagram.

Exceptions:

OwnerException : if the node is not owned by this diagram

ObjectLockedException : if the diagram is currently locked

d.deleteAll(nodes)

nodes (Collection) : the collection of nodes to be removed

Deletes all the specified nodes from this diagram. All nodes in the collection must belong to this diagram.

Exceptions:

OwnerException : if any node parameters are not owned by this diagram

ObjectLockedException : if the diagram is currently locked

ClassCastException : if any item in the collection is not of type Node

d.disconnect(node)

node (Node) : the node to be disconnected

Removes any links between the supplied node and any other nodes in this diagram.

Exceptions:

OwnerException : if any objects in the path are not owned by this diagram

ObjectLockedException : if the diagram is currently locked

d.findAll(type, label) : Collection

type (string) : the node type

label (string) : the node label

Returns a list of all nodes with the specified type and name. Either the type or name may be None in which case the other parameter is used.

d.findAll(filter, recursive) : Collection

filter (NodeFilter) : the node filter

recursive (boolean) : if True then composite nodes should be recursively searched

Returns a collection of all nodes accepted by the specified filter. If the recursive flag is True then any SuperNodes within this diagram are also searched.

d.findByID(id) : Node

id (string) : the node ID

Returns the node with the supplied ID or None if no such node exists. The search is limited to the current diagram.

d.findByType(type, label) : Node

type (string) : the node type

label (string) : the node label

Returns the node with the supplied type and/or label. Either the type or name may be None in which case the other parameter is used. If multiple nodes match then an arbitrary one is chosen and returned. If no nodes match then the return value is None.

d.findDownstream(fromNodes) : List

fromNodes (List) : the start point of the search

Searches from the supplied list of nodes and returns the set of nodes downstream of the supplied nodes. The returned list includes the originally supplied nodes.

d.findUpstream(fromNodes) : List

fromNodes (List) : the start point of the search

Searches from the supplied list of nodes and returns the set of nodes upstream of the supplied nodes. The returned list includes the originally supplied nodes.

d.flushCaches()

Flushes the caches of any cache-enabled Node objects in the diagram. Has no effect if caches are not enabled or are not full.

d.insert(source, nodes, newIDs) : List

source (Diagram) : the diagram that owns the nodes to be inserted

nodes (List) : the nodes to be copied

newIDs (boolean) : True if new IDs should be generated for each node or False if the existing IDs should be re-used

Inserts copies of the nodes in the supplied list. It is assumed that all nodes in the supplied list are contained within the specified diagram. The new IDs flag indicates whether new IDs should be generated for each node, or whether the existing ID should be copied across. It is assumed that all nodes in a diagram have a unique ID so this flag must be set True if the source diagram is the same as this diagram. The method returns the list of newly inserted nodes where the order of the nodes is undefined (i.e. the ordering is not necessarily the same as the order of nodes in the input list).

Exceptions:

ObjectLockedException : if the diagram has been locked because of another operation

InvalidEditException : if the edit would be invalid

d.isEnabled(node) : boolean

node (Node) : the node

Returns True if the supplied node is enabled.

Exceptions:

OwnerException : if the node is not owned by this diagram

d.isOwner(node) : boolean

node (Node) : the node

Returns True if the node is owned by this diagram.

d.isValidLink(source, target) : boolean

source (Node) : the source node

target (Node) : the target node

Returns True if it would be valid to create a link between the specified source and target nodes. This checks that both objects belong to this diagram, that the source can supply a link and the target can receive a link, and that creating such a link will not cause a circularity in the diagram.

Exceptions:

OwnerException : if the source or target node are not owned by this diagram

d.iterator() : Iterator

Returns an iterator over the Node objects contained in this diagram. The behaviour of the iterator if the diagram is modified between calls of next() is undefined.

Note: The iterator returns "top-level" nodes and does not recursively descend into any composite nodes.
d.link(source, target)

source (Node) : the source node

target (Node) : the target node

Creates a new link between the source and the target.

Exceptions:

OwnerException : if any node parameters are not owned by this diagram

ObjectLockedException : if the diagram is currently locked

InvalidEditException : if the connection would be invalid

d.link(source, targets)

source (Node) : the source node

targets (List) : the list of target nodes

Creates new links between the source and each target node in the supplied list.

Exceptions:

OwnerException : if any node parameters are not owned by this diagram

ObjectLockedException : if the diagram is currently locked

InvalidEditException : if a connection would be invalid

ClassCastException : if targets does not contain instances of Node

d.linkBetween(inserted, source, target)

inserted (Node) : the node to be inserted

source (Node) : the source node

target (Node) : the target node

Connects a Node between two other instances and sets the position of the inserted node to be between those. Any direct link between the source and target is removed first. If any link would be invalid (the source is a terminal node, the target is a source node or the target cannot accept any more links), a ModelerException is thrown and no changes are made to the diagram.

Exceptions:

OwnerException : if any of the nodes are not owned by the diagram

ObjectLockedException : if the diagram has been locked because of another operation

InvalidEditException : if the edit is invalid e.g., the target already has the maximum number of input connections

d.linkPath(path)

path (List) : the set of Node instances

Creates a new path between Node instances. The first node is linked to the second, the second is linked to the third etc. If any link would be invalid (for example, the nodes are already linked, the source is a terminal node, the target is a source node or the target cannot accept any more links), a ModelerException is thrown and no changes are made to the diagram.

Exceptions:

OwnerException : if any objects in the path are not owned by this diagram

ObjectLockedException : if the diagram is currently locked

InvalidEditException : if a link between two adjacent nodes in the path cannot be created.

d.linkUpdater(updater, updatable)

updater (Node) : the updater node

updatable (Node) : the updatable node

Creates a new update link between the updater and the updatable. It is expected that updater implements the Updater interface while the updatable implements the Updatable interface.

Exceptions:

OwnerException : if any node parameters are not owned by this diagram

ObjectLockedException : if the diagram is currently locked

InvalidEditException : if the connection would be invalid

d.predecessorAt(node, index) : Node

node (Node) : the node

index (int) : which predecessor to return

Returns the specified immediate predecessor of the supplied node or None if the index is out of bounds.

Exceptions:

OwnerException : if the node is not owned by this diagram

d.predecessorCount(node) : int

node (Node) : the node

Returns the number of immediate predecessors of the supplied node.

Exceptions:

OwnerException : if the node is not owned by this diagram

d.predecessors(node) : List

node (Node) : the node

Returns the immediate predecessors of the supplied node.

Exceptions:

OwnerException : if the node is not owned by this diagram

d.replace(originalNode, replacementNode, discardOriginal)

originalNode (Node) : the node to be replaced

replacementNode (Node) : the new node

discardOriginal (boolean) : if True, the id of the original node is assigned to the new node and the original node is automatically deleted from the diagram. If False, the original node is retained and the replacement node id is unchanged

Replaces the specified node from this diagram. The both nodes must be owned by this diagram.

Exceptions:

OwnerException : if any node is not owned by this diagram

ObjectLockedException : if the diagram is currently locked

InvalidEditException : is the link operation is invalid

d.setEnabled(node, enabled)

node (Node) : the node

enabled (boolean) : whether the node should be enabled

Sets the enabled state of the supplied node.

Exceptions:

OwnerException : if the node is not owned by this diagram

d.size() : int

Returns the number of Node objects contained in this diagram.

d.successorAt(node, index) : Node

node (Node) : the successor

index (int) : which successor to return

Returns the specified immediate successor of the supplied node or None if the index is out of bounds.

Exceptions:

OwnerException : if the node is not owned by this diagram

d.successorCount(node) : int

node (Node) : the node

Returns the number of immediate successors of the supplied node.

Exceptions:

OwnerException : if the node is not owned by this diagram

d.successors(node) : List

node (Node) : the node

Returns the immediate successors of the supplied node.

Exceptions:

OwnerException : if the node is not owned by this diagram

d.unlink(source, target)

source (Node) : the source node

target (Node) : the target node

Removes any direct link between the source and the target.

Exceptions:

OwnerException : if any node parameters are not owned by this diagram

ObjectLockedException : if the diagram is currently locked

d.unlink(source, targets)

source (Node) : the source node

targets (List) : the list of target nodes

Removes any direct links between the source and each object in the targets list.

Exceptions:

OwnerException : if any node parameters are not owned by this diagram

ObjectLockedException : if the diagram is currently locked

ClassCastException : if targets does not contain instances of Node

d.unlinkPath(path)

path (List) : the list of Node instances

Removes any path that exists between Node instances. If no link exists between two adjacent nodes in the path, these are silently ignored i.e., no exception will be thrown.

Exceptions:

ObjectLockedException : if the diagram is currently locked

OwnerException : if any objects in the path are not owned by this diagram

d.unlinkUpdater(updater, updatable)

updater (Node) : the updater node

updatable (Node) : the target node

Removes any update link between the updater and the updatable. It is expected that updater implements the Updater interface while the updatable implements the Updatable interface.

Exceptions:

OwnerException : if any node parameters are not owned by this diagram

ObjectLockedException : if the diagram is currently locked