Class BasicGraphBuilder

  • All Implemented Interfaces:
    GraphBuilder
    Direct Known Subclasses:
    BasicDirectedGraphBuilder, BasicLineGraphBuilder, OptGraphBuilder

    public class BasicGraphBuilder
    extends Object
    implements GraphBuilder
    Basic implementation of GraphBuilder. This implementation of builder creates the graph when the builder is created. The underlying graph implementation makes copies of the references to the node and edge collections, not copies of the underlying collections themselves. In this way as nodes and edges are added to the builder, it is reflected in the built graph.
    Author:
    Justin Deoliveira, Refractions Research Inc, jdeolive@refractions.net
    • Constructor Summary

      Constructors 
      Constructor Description
      BasicGraphBuilder()
      Constructs a new empty graph builder.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addEdge​(Edge edge)
      Checks for loops in which case it only added the edge to the adjacency list of one of the nodes (both of its nodes are the same node).
      void addNode​(Node node)
      Adds a node to the graph.
      Edge buildEdge​(Node nodeA, Node nodeB)
      Builds a new edge for the graph.
      protected Graph buildGraph()
      Creates the underlying graph object.
      Node buildNode()
      Builds a new node for the graph.
      Object clone​(boolean deep)
      Returns a clone of the builder.
      Collection<Edge> getEdges()
      Returns the edges belonging to the graph being built.
      Graph getGraph()
      Returns the graph being built.
      Collection<Node> getNodes()
      Returns the nodes belonging to the graph being built.
      void importGraph​(Graph g)
      Constructs a graph builder from a pre built graph.
      void removeEdge​(Edge edge)
      Removes an edge from the graph.
      void removeEdges​(Collection edges)
      Removes a collection of edges from the graph.
      void removeNode​(Node node)
      Removes an node from the graph.
      void removeNodes​(Collection nodes)
      Removes a collection of nodes from the graph.
      • Methods inherited from class Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • BasicGraphBuilder

        public BasicGraphBuilder()
        Constructs a new empty graph builder.
    • Method Detail

      • buildNode

        public Node buildNode()
        Description copied from interface: GraphBuilder
        Builds a new node for the graph. This method does not add the new node to the graph, this must be done with the addNode(Node) method.
        Specified by:
        buildNode in interface GraphBuilder
        Returns:
        Node The newly built node.
        See Also:
        GraphBuilder.buildNode()
      • buildEdge

        public Edge buildEdge​(Node nodeA,
                              Node nodeB)
        Description copied from interface: GraphBuilder
        Builds a new edge for the graph. This method does not add the new node to the graph, this must be done with the addEdge(Edge) method.
        Specified by:
        buildEdge in interface GraphBuilder
        Parameters:
        nodeA - Adjacent node to edge.
        nodeB - Adjacent node to edge.
        Returns:
        Edge the newly built Edge.
        See Also:
        GraphBuilder.buildEdge(Node, Node)
      • addEdge

        public void addEdge​(Edge edge)
        Checks for loops in which case it only added the edge to the adjacency list of one of the nodes (both of its nodes are the same node).
        Specified by:
        addEdge in interface GraphBuilder
        Parameters:
        edge - Edge to be added to graph.
        See Also:
        GraphBuilder.addEdge(Edge)
      • clone

        public Object clone​(boolean deep)
                     throws Exception
        Description copied from interface: GraphBuilder
        Returns a clone of the builder. A deep clone copies the underlying graph structure, a non deep clone results in an empty builder
        Specified by:
        clone in interface GraphBuilder
        Parameters:
        deep - Deep or non deep clone.
        Returns:
        A graph builder.
        Throws:
        Exception
        See Also:
        GraphBuilder.clone(boolean)
      • importGraph

        public void importGraph​(Graph g)
        Description copied from interface: GraphBuilder
        Constructs a graph builder from a pre built graph. The nodes and edges of the existing graph are imported into the builder. Relationships between nodes and edges are assummed to be preexistant.
        Specified by:
        importGraph in interface GraphBuilder
        Parameters:
        g - A pre built graph.
        See Also:
        GraphBuilder.importGraph(Graph)
      • getNodes

        public Collection<Node> getNodes()
        Returns the nodes belonging to the graph being built.
        Returns:
        A collection of nodes.
      • getEdges

        public Collection<Edge> getEdges()
        Returns the edges belonging to the graph being built.
        Returns:
        A collection of edges.
      • buildGraph

        protected Graph buildGraph()
        Creates the underlying graph object.
        Returns:
        A Graph object.