org.apache.pdfbox.pdmodel.common

## Class PDNameTreeNode<T extends COSObjectable>

- java.lang.Object
- - org.apache.pdfbox.pdmodel.common.PDNameTreeNode<T>

Type Parameters:
  `T` - The type of the values in this name tree.

All Implemented Interfaces:
  COSObjectable

Direct Known Subclasses:
  PDDestinationNameTreeNode, PDEmbeddedFilesNameTreeNode, PDJavascriptNameTreeNode, PDStructureElementNameTreeNode

    public abstract class PDNameTreeNode<T extends COSObjectable>
    extends Object
    implements COSObjectable

This class represents a node in a name tree.

Author:
  Ben Litchfield

### Constructor Summary

Constructors
`protected` `PDNameTreeNode()` Constructor.
`protected` `PDNameTreeNode(COSDictionary dict)` Constructor.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`protected abstract T` `convertCOSToPD(COSBase base)` Method to convert the COS value in the name tree to the PD Model object.
`protected abstract PDNameTreeNode<T>` `createChildNode(COSDictionary dic)` Create a child node object.
`COSDictionary` `getCOSObject()` Convert this standard java object to a COS object.
`List<PDNameTreeNode<T>>` `getKids()` Return the children of this node.
`String` `getLowerLimit()` Get the lowest value for a key in the name map.
`Map<String,T>` `getNames()` This will return a map of names on this level.
`PDNameTreeNode<T>` `getParent()` Returns the parent node.
`String` `getUpperLimit()` Get the highest value for a key in the name map.
`T` `getValue(String name)` The name to retrieve.
`boolean` `isRootNode()` Determines if this is a root node or not.
`void` `setKids(List<? extends PDNameTreeNode<T>> kids)` Set the children of this named tree.
`void` `setNames(Map<String,T> names)` Set the names for this node.
`void` `setParent(PDNameTreeNode<T> parentNode)` Sets the parent to the given node.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### PDNameTreeNode

    protected PDNameTreeNode()

Constructor.

#### PDNameTreeNode

    protected PDNameTreeNode(COSDictionary dict)

Constructor.

Parameters:
  `dict` - The dictionary that holds the name information.

### Method Detail

#### getCOSObject

    public COSDictionary getCOSObject()

Convert this standard java object to a COS object.

Specified by:
  `getCOSObject` in interface `COSObjectable`
Returns:
  The cos object that matches this Java object.

#### getParent

    public PDNameTreeNode<T> getParent()

Returns the parent node.

Returns:
  parent node

#### setParent

    public void setParent(PDNameTreeNode<T> parentNode)

Sets the parent to the given node.

Parameters:
  `parentNode` - the node to be set as parent

#### isRootNode

    public boolean isRootNode()

Determines if this is a root node or not.

Returns:
  true if this is a root node

#### getKids

    public List<PDNameTreeNode<T>> getKids()

Return the children of this node. This list will contain PDNameTreeNode objects.

Returns:
  The list of children or null if there are no children.

#### setKids

    public void setKids(List<? extends PDNameTreeNode<T>> kids)

Set the children of this named tree.

Parameters:
  `kids` - The children of this named tree. These have to be in sorted order. Because of that, it is usually easier to call `setNames(Map)` with a map and pass a single element list here.

#### getValue

    public T getValue(String name)
               throws IOException

The name to retrieve.

Parameters:
  `name` - The name in the tree.
Returns:
  The value of the name in the tree.
Throws:
  `IOException` - If there is a problem creating the destinations.

#### getNames

    public Map<String,T> getNames()
                           throws IOException

This will return a map of names on this level. The key will be a string, and the value will depend on where this class is being used.

Returns:
  ordered map of COS objects or `null` if the dictionary contains no 'Names' entry on this level.
Throws:
  `IOException` - If there is an error while creating the sub types.
See Also:
  `getKids()`

#### convertCOSToPD

    protected abstract T convertCOSToPD(COSBase base)
                                 throws IOException

Method to convert the COS value in the name tree to the PD Model object. The default implementation will simply return the given COSBase object. Subclasses should do something specific.

Parameters:
  `base` - The COS object to convert.
Returns:
  The converted PD Model object.
Throws:
  `IOException` - If there is an error during creation.

#### createChildNode

    protected abstract PDNameTreeNode<T> createChildNode(COSDictionary dic)

Create a child node object.

Parameters:
  `dic` - The dictionary for the child node object to refer to.
Returns:
  The new child node object.

#### setNames

    public void setNames(Map<String,T> names)

Set the names for this node. This method will set the appropriate upper and lower limits based on the keys in the map and take care of the ordering.

Parameters:
  `names` - map of names to objects, or `null` for nothing.

#### getUpperLimit

    public String getUpperLimit()

Get the highest value for a key in the name map.

Returns:
  The highest value for a key in the map.

#### getLowerLimit

    public String getLowerLimit()

Get the lowest value for a key in the name map.

Returns:
  The lowest value for a key in the map.