edu.uci.ics.jung.io.graphml
Class GraphMLReader2<G extends Hypergraph<V,E>,V,E>

java.lang.Object
  extended by edu.uci.ics.jung.io.graphml.GraphMLReader2<G,V,E>
Type Parameters:
G - The graph type to be read from the GraphML file
V - The vertex type used by the graph
E - The edge type used by the graph
All Implemented Interfaces:
GraphReader<G,V,E>

public class GraphMLReader2<G extends Hypergraph<V,E>,V,E>
extends Object
implements GraphReader<G,V,E>

Reads in data from a GraphML-formatted file and generates graphs based on that data. Does not currently support nested graphs.

Note that the user is responsible for supplying a graph Transformer that will create graphs capable of supporting the edge types in the supplied GraphML file. If the graph generated by the Factory is not compatible (for example: if the graph does not accept directed edges, and the GraphML file contains a directed edge) then the results are graph-implementation-dependent.

Author:
Nathan Mittler - nathan.mittler@gmail.com
See Also:
"http://graphml.graphdrawing.org/specification.html"

Field Summary
protected  GraphMLDocument document
           
protected  org.apache.commons.collections15.Transformer<EdgeMetadata,E> edgeTransformer
           
protected  Reader fileReader
           
protected  org.apache.commons.collections15.Transformer<GraphMetadata,G> graphTransformer
           
protected  org.apache.commons.collections15.Transformer<HyperEdgeMetadata,E> hyperEdgeTransformer
           
protected  boolean initialized
           
protected  ElementParserRegistry<G,V,E> parserRegistry
           
protected  org.apache.commons.collections15.Transformer<NodeMetadata,V> vertexTransformer
           
protected  XMLEventReader xmlEventReader
           
 
Constructor Summary
GraphMLReader2(Reader fileReader, org.apache.commons.collections15.Transformer<GraphMetadata,G> graphTransformer, org.apache.commons.collections15.Transformer<NodeMetadata,V> vertexTransformer, org.apache.commons.collections15.Transformer<EdgeMetadata,E> edgeTransformer, org.apache.commons.collections15.Transformer<HyperEdgeMetadata,E> hyperEdgeTransformer)
          Constructs a GraphML reader around the given reader.
 
Method Summary
 void close()
          Closes the GraphML reader and disposes of any resources.
 org.apache.commons.collections15.Transformer<EdgeMetadata,E> getEdgeTransformer()
          Gets the current transformer that is being used for edge objects.
 GraphMLDocument getGraphMLDocument()
          Returns the object that contains the metadata read in from the GraphML document
 org.apache.commons.collections15.Transformer<GraphMetadata,G> getGraphTransformer()
          Gets the current transformer that is being used for graph objects.
 org.apache.commons.collections15.Transformer<HyperEdgeMetadata,E> getHyperEdgeTransformer()
          Gets the current transformer that is being used for hyperedge objects.
 org.apache.commons.collections15.Transformer<NodeMetadata,V> getVertexTransformer()
          Gets the current transformer that is being used for vertex objects.
 void init()
          Verifies the object state and initializes this reader.
 G readGraph()
          Reads a single graph object from the GraphML document.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

xmlEventReader

protected XMLEventReader xmlEventReader

fileReader

protected Reader fileReader

graphTransformer

protected org.apache.commons.collections15.Transformer<GraphMetadata,G extends Hypergraph<V,E>> graphTransformer

vertexTransformer

protected org.apache.commons.collections15.Transformer<NodeMetadata,V> vertexTransformer

edgeTransformer

protected org.apache.commons.collections15.Transformer<EdgeMetadata,E> edgeTransformer

hyperEdgeTransformer

protected org.apache.commons.collections15.Transformer<HyperEdgeMetadata,E> hyperEdgeTransformer

initialized

protected boolean initialized

document

protected final GraphMLDocument document

parserRegistry

protected final ElementParserRegistry<G extends Hypergraph<V,E>,V,E> parserRegistry
Constructor Detail

GraphMLReader2

public GraphMLReader2(Reader fileReader,
                      org.apache.commons.collections15.Transformer<GraphMetadata,G> graphTransformer,
                      org.apache.commons.collections15.Transformer<NodeMetadata,V> vertexTransformer,
                      org.apache.commons.collections15.Transformer<EdgeMetadata,E> edgeTransformer,
                      org.apache.commons.collections15.Transformer<HyperEdgeMetadata,E> hyperEdgeTransformer)
Constructs a GraphML reader around the given reader. This constructor requires the user to supply transformation functions to convert from the GraphML metadata to Graph, Vertex, Edge instances. These transformer functions can be used as purely factories (i.e. the metadata is disregarded) or can use the metadata to set particular fields in the objects.

Parameters:
fileReader - the reader for the input GraphML document.
graphTransformer - Transformation function to convert from GraphML GraphMetadata to graph objects. This must be non-null.
vertexTransformer - Transformation function to convert from GraphML NodeMetadata to vertex objects. This must be non-null.
edgeTransformer - Transformation function to convert from GraphML EdgeMetadata to edge objects. This must be non-null.
hyperEdgeTransformer - Transformation function to convert from GraphML HyperEdgeMetadata to edge objects. This must be non-null.
Throws:
IllegalArgumentException - thrown if any of the arguments are null.
Method Detail

getGraphTransformer

public org.apache.commons.collections15.Transformer<GraphMetadata,G> getGraphTransformer()
Gets the current transformer that is being used for graph objects.

Returns:
the current transformer.

getVertexTransformer

public org.apache.commons.collections15.Transformer<NodeMetadata,V> getVertexTransformer()
Gets the current transformer that is being used for vertex objects.

Returns:
the current transformer.

getEdgeTransformer

public org.apache.commons.collections15.Transformer<EdgeMetadata,E> getEdgeTransformer()
Gets the current transformer that is being used for edge objects.

Returns:
the current transformer.

getHyperEdgeTransformer

public org.apache.commons.collections15.Transformer<HyperEdgeMetadata,E> getHyperEdgeTransformer()
Gets the current transformer that is being used for hyperedge objects.

Returns:
the current transformer.

init

public void init()
          throws GraphIOException
Verifies the object state and initializes this reader. All transformer properties must be set and be non-null or a GraphReaderException will be thrown. This method may be called more than once. Successive calls will have no effect.

Throws:
GraphIOException - thrown if an error occurred.

close

public void close()
           throws GraphIOException
Closes the GraphML reader and disposes of any resources.

Specified by:
close in interface GraphReader<G extends Hypergraph<V,E>,V,E>
Throws:
GraphIOException - thrown if an error occurs.

getGraphMLDocument

public GraphMLDocument getGraphMLDocument()
Returns the object that contains the metadata read in from the GraphML document

Returns:
the GraphML document

readGraph

public G readGraph()
                                    throws GraphIOException
Reads a single graph object from the GraphML document. Automatically calls init to initialize the state of the reader.

Specified by:
readGraph in interface GraphReader<G extends Hypergraph<V,E>,V,E>
Returns:
the graph that was read if one was found, otherwise null.
Throws:
GraphIOException - thrown if an error occurred.


Copyright © 2009. All Rights Reserved.