Class GraphMLReader2<G extends Hypergraph<V,​E>,​V,​E>

  • Type Parameters:
    G - The graph type to be read from the GraphML file
    V - the vertex type The vertex type used by the graph
    V - the edge type 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 java.lang.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 Detail

      • xmlEventReader

        protected javax.xml.stream.XMLEventReader xmlEventReader
      • fileReader

        protected java.io.Reader fileReader
      • vertexTransformer

        protected com.google.common.base.Function<NodeMetadata,​V> vertexTransformer
      • edgeTransformer

        protected com.google.common.base.Function<EdgeMetadata,​E> edgeTransformer
      • hyperEdgeTransformer

        protected com.google.common.base.Function<HyperEdgeMetadata,​E> hyperEdgeTransformer
      • initialized

        protected boolean initialized
    • Constructor Detail

      • GraphMLReader2

        public GraphMLReader2​(java.io.Reader fileReader,
                              com.google.common.base.Function<GraphMetadata,​G> graphTransformer,
                              com.google.common.base.Function<NodeMetadata,​V> vertexTransformer,
                              com.google.common.base.Function<EdgeMetadata,​E> edgeTransformer,
                              com.google.common.base.Function<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 Function 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:
        java.lang.IllegalArgumentException - thrown if any of the arguments are null.
      • GraphMLReader2

        public GraphMLReader2​(java.io.InputStream inputStream,
                              com.google.common.base.Function<GraphMetadata,​G> graphTransformer,
                              com.google.common.base.Function<NodeMetadata,​V> vertexTransformer,
                              com.google.common.base.Function<EdgeMetadata,​E> edgeTransformer,
                              com.google.common.base.Function<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 Function 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:
        inputStream - the inputstream 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:
        java.lang.IllegalArgumentException - thrown if any of the arguments are null.
    • Method Detail

      • getGraphTransformer

        public com.google.common.base.Function<GraphMetadata,​G> getGraphTransformer()
        Gets the current Function that is being used for graph objects.
        Returns:
        the current Function.
      • getVertexTransformer

        public com.google.common.base.Function<NodeMetadata,​V> getVertexTransformer()
        Gets the current Function that is being used for vertex objects.
        Returns:
        the current Function.
      • getEdgeTransformer

        public com.google.common.base.Function<EdgeMetadata,​E> getEdgeTransformer()
        Gets the current Function that is being used for edge objects.
        Returns:
        the current Function.
      • getHyperEdgeTransformer

        public com.google.common.base.Function<HyperEdgeMetadata,​E> getHyperEdgeTransformer()
        Gets the current Function that is being used for hyperedge objects.
        Returns:
        the current Function.
      • init

        public void init()
                  throws GraphIOException
        Verifies the object state and initializes this reader. All Function 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.
      • 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.