Class ImmutableValueGraphAdapter<V,​W>

  • Type Parameters:
    V - the graph vertex type
    W - the value type
    All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, org.jgrapht.Graph<V,​com.google.common.graph.EndpointPair<V>>
    Direct Known Subclasses:
    ImmutableDoubleValueGraphAdapter

    public class ImmutableValueGraphAdapter<V,​W>
    extends BaseValueGraphAdapter<V,​W,​com.google.common.graph.ImmutableValueGraph<V,​W>>
    implements org.jgrapht.Graph<V,​com.google.common.graph.EndpointPair<V>>, java.lang.Cloneable, java.io.Serializable
    A graph adapter class using Guava's ImmutableValueGraph.

    The adapter uses class EndpointPair to represent edges. Since the underlying value graph is immutable, the resulting graph is unmodifiable.

    The class uses a converter from Guava's values to JGraphT's double weights. Thus, the resulting graph is weighted.

    Assume for example that the following class is the value type:

     class MyValue
         implements
         Serializable
     {
         private double value;
    
         public MyValue(double value)
         {
             this.value = value;
         }
    
         public double getValue()
         {
             return value;
         }
     }
     
    Then one could create an adapter using the following code:
     MutableValueGraph<String, MyValue> valueGraph =
         ValueGraphBuilder.directed().allowsSelfLoops(true).build();
     valueGraph.addNode("v1");
     valueGraph.addNode("v2");
     valueGraph.putEdgeValue("v1", "v2", new MyValue(5.0));
     
     ImmutableValueGraph<String, MyValue> immutableValueGraph =
         ImmutableValueGraph.copyOf(valueGraph);
     
     Graph<String, EndpointPair<String>> graph = new ImmutableValueGraphAdapter<>(
         immutableValueGraph, (ToDoubleFunction<MyValue> & Serializable) MyValue::getValue);
     
     double weight = graph.getEdgeWeight(EndpointPair.ordered("v1", "v2")); // should return 5.0
     
    Author:
    Dimitrios Michail
    See Also:
    Serialized Form
    • Field Detail

      • GRAPH_IS_IMMUTABLE

        protected static final java.lang.String GRAPH_IS_IMMUTABLE
        See Also:
        Constant Field Values
    • Constructor Detail

      • ImmutableValueGraphAdapter

        public ImmutableValueGraphAdapter​(com.google.common.graph.ImmutableValueGraph<V,​W> valueGraph,
                                          java.util.function.ToDoubleFunction<W> valueConverter)
        Create a new adapter.
        Parameters:
        valueGraph - the value graph
        valueConverter - a function that converts a value to a double
    • Method Detail

      • addEdge

        public com.google.common.graph.EndpointPair<V> addEdge​(V sourceVertex,
                                                               V targetVertex)
        Specified by:
        addEdge in interface org.jgrapht.Graph<V,​W>
      • addEdge

        public boolean addEdge​(V sourceVertex,
                               V targetVertex,
                               com.google.common.graph.EndpointPair<V> e)
        Specified by:
        addEdge in interface org.jgrapht.Graph<V,​W>
      • addVertex

        public V addVertex()
        Specified by:
        addVertex in interface org.jgrapht.Graph<V,​W>
      • addVertex

        public boolean addVertex​(V v)
        Specified by:
        addVertex in interface org.jgrapht.Graph<V,​W>
      • removeEdge

        public com.google.common.graph.EndpointPair<V> removeEdge​(V sourceVertex,
                                                                  V targetVertex)
        Specified by:
        removeEdge in interface org.jgrapht.Graph<V,​W>
      • removeEdge

        public boolean removeEdge​(com.google.common.graph.EndpointPair<V> e)
        Specified by:
        removeEdge in interface org.jgrapht.Graph<V,​W>
      • removeVertex

        public boolean removeVertex​(V v)
        Specified by:
        removeVertex in interface org.jgrapht.Graph<V,​W>
      • setEdgeWeight

        public void setEdgeWeight​(com.google.common.graph.EndpointPair<V> e,
                                  double weight)
        Specified by:
        setEdgeWeight in interface org.jgrapht.Graph<V,​W>
      • getType

        public org.jgrapht.GraphType getType()
        Specified by:
        getType in interface org.jgrapht.Graph<V,​W>
        Overrides:
        getType in class BaseValueGraphAdapter<V,​W,​com.google.common.graph.ImmutableValueGraph<V,​W>>
      • clone

        public java.lang.Object clone()
        Returns a shallow copy of this graph instance. Neither edges nor vertices are cloned.
        Overrides:
        clone in class java.lang.Object
        Returns:
        a shallow copy of this graph.
        Throws:
        java.lang.RuntimeException - in case the clone is not supported
        See Also:
        Object.clone()