weka.gui.graphvisualizer
Class DotParser

java.lang.Object
  extended byweka.gui.graphvisualizer.DotParser
All Implemented Interfaces:
GraphConstants

public class DotParser
extends java.lang.Object
implements GraphConstants

This class parses input in DOT format, and builds the datastructures that are passed to it. It is NOT 100% compatible with the DOT format. The GraphNode and GraphEdge classes do not have any provision for dealing with different colours or shapes of nodes, there can however, be a different label and ID for a node. It also does not do anything for labels for edges. However, this class won't crash or throw an exception if it encounters any of the above attributes of an edge or a node. This class however, won't be able to deal with things like subgraphs and grouping of nodes.

Version:
1.0 - 23 Apr 2003 - Initial version (Ashraf M. Kibriya)
Author:
Ashraf M. Kibriya (amk14@cs.waikato.ac.nz)

Field Summary
protected  FastVector m_edges
          These holds the nodes and edges of the graph
protected  java.lang.String m_graphName
          This holds the name of the graph if there is any otherwise it is null
protected  java.io.Reader m_input
          This is the input containing DOT stream to be parsed
protected  FastVector m_nodes
          These holds the nodes and edges of the graph
 
Fields inherited from interface weka.gui.graphvisualizer.GraphConstants
DIRECTED, DOUBLE, NORMAL, PLURAL_DUMMY, REVERSED, SINGULAR_DUMMY
 
Constructor Summary
DotParser(java.io.Reader input, FastVector nodes, FastVector edges)
          Dot parser Constructor
 
Method Summary
protected  void edgeAttrib(java.io.StreamTokenizer tk, GraphEdge e)
           
protected  void edgeStmt(java.io.StreamTokenizer tk, int nindex)
           
protected  void graph(java.io.StreamTokenizer tk)
          Following methods parse the DOT input and mimic the DOT language's grammar in their structure
protected  void nodeID(java.io.StreamTokenizer tk)
           
protected  void nodeStmt(java.io.StreamTokenizer tk, int nindex)
           
 java.lang.String parse()
          This method parses the string or the InputStream that we passed in through the constructor and builds up the m_nodes and m_edges vectors
protected  void setSyntax(java.io.StreamTokenizer tk)
          This method sets the syntax of the StreamTokenizer.
protected  void stmt(java.io.StreamTokenizer tk)
           
protected  void stmtList(java.io.StreamTokenizer tk)
           
static void writeDOT(java.lang.String filename, java.lang.String graphName, FastVector nodes, FastVector edges)
          This method saves a graph in a file in DOT format.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_nodes

protected FastVector m_nodes
These holds the nodes and edges of the graph


m_edges

protected FastVector m_edges
These holds the nodes and edges of the graph


m_input

protected java.io.Reader m_input
This is the input containing DOT stream to be parsed


m_graphName

protected java.lang.String m_graphName
This holds the name of the graph if there is any otherwise it is null

Constructor Detail

DotParser

public DotParser(java.io.Reader input,
                 FastVector nodes,
                 FastVector edges)
Dot parser Constructor

Parameters:
input - - The input, if passing in a string then encapsulate that in String reader object
nodes - - Vector to put in GraphNode objects, corresponding to the nodes parsed in from the input
edges - - Vector to put in GraphEdge objects, corresponding to the edges parsed in from the input
Method Detail

parse

public java.lang.String parse()
This method parses the string or the InputStream that we passed in through the constructor and builds up the m_nodes and m_edges vectors

Returns:
- returns the name of the graph

setSyntax

protected void setSyntax(java.io.StreamTokenizer tk)
This method sets the syntax of the StreamTokenizer. i.e. set the whitespace, comment and delimit chars.


graph

protected void graph(java.io.StreamTokenizer tk)
Following methods parse the DOT input and mimic the DOT language's grammar in their structure


stmtList

protected void stmtList(java.io.StreamTokenizer tk)
                 throws java.lang.Exception
Throws:
java.lang.Exception

stmt

protected void stmt(java.io.StreamTokenizer tk)

nodeID

protected void nodeID(java.io.StreamTokenizer tk)
               throws java.lang.Exception
Throws:
java.lang.Exception

nodeStmt

protected void nodeStmt(java.io.StreamTokenizer tk,
                        int nindex)
                 throws java.lang.Exception
Throws:
java.lang.Exception

edgeStmt

protected void edgeStmt(java.io.StreamTokenizer tk,
                        int nindex)
                 throws java.lang.Exception
Throws:
java.lang.Exception

edgeAttrib

protected void edgeAttrib(java.io.StreamTokenizer tk,
                          GraphEdge e)
                   throws java.lang.Exception
Throws:
java.lang.Exception

writeDOT

public static void writeDOT(java.lang.String filename,
                            java.lang.String graphName,
                            FastVector nodes,
                            FastVector edges)
This method saves a graph in a file in DOT format. However, if reloaded in GraphVisualizer we would need to layout the graph again.

Parameters:
filename - - The name of the file to write in. (will overwrite)
graphName - - The name of the graph
nodes - - Vector containing all the nodes
edges - - Vector containing all the edges