Data Structure Classes and Utilities

The Prajna data structure classes implement the various data structures supported by Prajna. In addition, Prajna includes a set of utility classes, which are a group of classes supporting the various data structures.


The group of Graph classes provide the definition and support utilities for the graph data structure. The Graph class is an abstract class designed with Java Generics, and is designed to be similar to java.util.Map.

The DirectedGraph and UndirectedGraph provide low level implementations of two different types of graphs. As generic containers, they can include graphs with any type of object. A typical visualization application would use the appropriate graph type.

The ClusterGraph class provides a more complex graph class with behavior which separates and identifies individual clusters within a graph. The ClusterGraph allows an application to easily identify connected subgraphs. Furthermore, the state of the ClusterGraph is updated automatically when nodes or edges are added or removed.

The GraphPath class is a path of edge elements defining an arbitrary path through a graph. It is designed to be similar to TreePath.

The GraphUtils class includes a number of static utility methods which operate on graphs. It includes methods to identify a shortest path and a spanning tree.


The Tree class extends the javax.swing.tree.DefaultMutableTreeNode class. It offers iterators to traverse the tree, and typing for the user object stored at the node.


The Grid classes provide the definition and support for the Grid data structure. Like the other data structures, it uses Generics to define the contents of each grid cell.

The Grid class has two subclasses, RealGrid and CellGrid. The RealGrid class supports those multi-dimensional data grids with continuous values. Coordinates for the values in the grid are expressed in double precision, allowing for interpolation between coordinates. The CellGrid uses integer coordinates, and might be used for more discrete forms of data.

Graphics Utilities

The SvgGraphics class provides an extension to java.awt.Graphics which outputs the graphic display into a Scalable Vector Graphics (SVG) format. It is still in development. It is designed to be a drop-in for classes which accept a Graphics object for rendering.