com.pixelmed.query
Class QueryTreeRecord

java.lang.Object
  extended by com.pixelmed.query.QueryTreeRecord
All Implemented Interfaces:
Comparable, TreeNode

public class QueryTreeRecord
extends Object
implements Comparable, TreeNode

Instances of the QueryTreeRecord class represent nodes in a tree of the QueryTreeModel class, which in turn is used by the QueryTreeBrowser class.

This class is publically visible primarily so that selection change listeners can be constructed for QueryTreeBrowser, since the user's selection is returned as a path of QueryTreeRecord instances, which need to be cast accordingly.


Nested Class Summary
protected  class QueryTreeRecord.OurResponseIdentifierHandler
           
 
Field Summary
protected  AttributeList allAttributesReturnedInIdentifier
           
protected  List children
           
protected  boolean childrenPopulated
           
protected  int debugLevel
           
protected  AttributeList filter
           
protected  InformationEntity ie
           
protected  int numberOfChildren
           
protected  QueryTreeRecord parent
           
protected  QueryInformationModel q
           
protected  Attribute uniqueKey
           
protected  AttributeList uniqueKeys
           
protected  String value
           
 
Constructor Summary
QueryTreeRecord(QueryInformationModel q, AttributeList filter, QueryTreeRecord parent, String value, InformationEntity ie, Attribute uniqueKey, AttributeList allAttributesReturnedInIdentifier, int debugLevel)
          Make a new node in a tree.
 
Method Summary
 void addChild(QueryTreeRecord child)
          Add a child to this nodes sorted collection of children.
 void addSibling(QueryTreeRecord sibling)
          Add a sibling to this node, that is add a child to this node's parent's sorted collection of children.
 Enumeration children()
          Returns the children of this node as an Enumeration.
 int compareTo(Object o)
          Compare nodes based on the lexicographic order of their string values.
 boolean equals(Object o)
           
 AttributeList getAllAttributesReturnedInIdentifier()
          Get the list of all the DICOM attributes from the query response for this level of the query.
 boolean getAllowsChildren()
           Always returns true, since children may always be added.
 TreeNode getChildAt(int index)
          Returns the child at the specified index.
 int getChildCount()
          Return the number of children that this node contains.
 int getIndex(TreeNode child)
          Returns the index of the specified child from amongst this node's children, if present.
 InformationEntity getInformationEntity()
          Get the information entity that this node represents.
 TreeNode getParent()
          Returns the parent node of this node.
protected  InformationEntity getQueryLevelToPopulateChildren()
           
 Attribute getUniqueKey()
          Get the DICOM attribute that is the unique key at the level of this record.
 AttributeList getUniqueKeys()
          Get the list of DICOM attributes, one for each unique key of each parent of this level as well as this level itself.
 String getValue()
          Get the string value of the node which is used for sorting and human-readable rendering.
 boolean isLeaf()
           Returns true if the receiver is a leaf (has no children).
protected  void populateChildren()
           
protected  void populateChildrenIfRequired()
           
 String toString()
          Dump the string value of the node.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

q

protected QueryInformationModel q

filter

protected AttributeList filter

debugLevel

protected int debugLevel

parent

protected QueryTreeRecord parent

children

protected List children

ie

protected InformationEntity ie

uniqueKey

protected Attribute uniqueKey

uniqueKeys

protected AttributeList uniqueKeys

allAttributesReturnedInIdentifier

protected AttributeList allAttributesReturnedInIdentifier

value

protected String value

childrenPopulated

protected boolean childrenPopulated

numberOfChildren

protected int numberOfChildren
Constructor Detail

QueryTreeRecord

public QueryTreeRecord(QueryInformationModel q,
                       AttributeList filter,
                       QueryTreeRecord parent,
                       String value,
                       InformationEntity ie,
                       Attribute uniqueKey,
                       AttributeList allAttributesReturnedInIdentifier,
                       int debugLevel)

Make a new node in a tree.

Parameters:
q - the query information model to build the tree from
filter - the query request identifier as a list of DICOM attributes
parent - the parent of this node
value - a string value which is used primarily to sort siblings into lexicographic order
ie - the entity in the DICOM information model that the constructed node is an instance of
uniqueKey - the DICOM attribute which is the unique key at the level of this record
allAttributesReturnedInIdentifier - a list of all the DICOM attributes from the query response for this level of a query
debugLevel - 0 is no debugging (silent), > 0 more verbose levels of debugging
Method Detail

toString

public String toString()

Dump the string value of the node.

Overrides:
toString in class Object
Returns:
the string value of this node

compareTo

public int compareTo(Object o)

Compare nodes based on the lexicographic order of their string values.

Note that the comparison is more complex than a simple lexicographic comparison of strings (as described in the definition of java.lang.String.compareTo(String) but rather accounts for embedded non-zero padded integers. See com.pixelmed.utils.compareStringsWithEmbeddedNonZeroPaddedIntegers(String,String)

If the string values are equal but they do not have the same unique key, then an arbitrary but consistent order is return.

Specified by:
compareTo in interface Comparable
Parameters:
o - the QueryTreeRecord to compare this QueryTreeRecord against
Returns:
the value 0 if the argument is equal to this object; a value less than 0 if this object is lexicographically less than the argument; and a value greater than 0 if this object is lexicographically greater than the argument

equals

public boolean equals(Object o)
Overrides:
equals in class Object
Parameters:
o -

getParent

public TreeNode getParent()

Returns the parent node of this node.

Specified by:
getParent in interface TreeNode
Returns:
the parent node, or null if the root

getChildAt

public TreeNode getChildAt(int index)

Returns the child at the specified index.

Specified by:
getChildAt in interface TreeNode
Parameters:
index - the index of the child to be returned, numbered from 0
Returns:
the child TreeNode at the specified index

getIndex

public int getIndex(TreeNode child)

Returns the index of the specified child from amongst this node's children, if present.

Specified by:
getIndex in interface TreeNode
Parameters:
child - the child to search for amongst this node's children
Returns:
the index of the child, or -1 if not present

getAllowsChildren

public boolean getAllowsChildren()

Always returns true, since children may always be added.

Specified by:
getAllowsChildren in interface TreeNode
Returns:
always true

isLeaf

public boolean isLeaf()

Returns true if the receiver is a leaf (has no children).

Specified by:
isLeaf in interface TreeNode
Returns:
true if the receiver is a leaf

populateChildrenIfRequired

protected void populateChildrenIfRequired()

getChildCount

public int getChildCount()

Return the number of children that this node contains.

Specified by:
getChildCount in interface TreeNode
Returns:
the number of children, 0 if none

children

public Enumeration children()

Returns the children of this node as an Enumeration.

Specified by:
children in interface TreeNode
Returns:
the children of this node

getQueryLevelToPopulateChildren

protected InformationEntity getQueryLevelToPopulateChildren()

populateChildren

protected void populateChildren()

addChild

public void addChild(QueryTreeRecord child)

Add a child to this nodes sorted collection of children.

Parameters:
child - the child node to be added

addSibling

public void addSibling(QueryTreeRecord sibling)
                throws DicomException

Add a sibling to this node, that is add a child to this node's parent's sorted collection of children.

Parameters:
sibling - the sibling node to be added
Throws:
DicomException - thrown if this node has no parent

getValue

public String getValue()

Get the string value of the node which is used for sorting and human-readable rendering.

Returns:
the string value of this node

getInformationEntity

public InformationEntity getInformationEntity()

Get the information entity that this node represents.

Returns:
information entity that this node represents

getUniqueKeys

public AttributeList getUniqueKeys()

Get the list of DICOM attributes, one for each unique key of each parent of this level as well as this level itself.

Returns:
the list of unique keys

getUniqueKey

public Attribute getUniqueKey()

Get the DICOM attribute that is the unique key at the level of this record.

Returns:
the unique key

getAllAttributesReturnedInIdentifier

public AttributeList getAllAttributesReturnedInIdentifier()

Get the list of all the DICOM attributes from the query response for this level of the query.

Returns:
the list of all response attributes for this level