Author: simonetripodi
Date: Wed Mar  7 23:46:31 2012
New Revision: 1298228

URL: http://svn.apache.org/viewvc?rev=1298228&view=rev
Log:
completed the builder chain for Flow algorithms - note that there is a 
compilation issue due to conceptual changes!

Modified:
    
commons/sandbox/graph/branches/drop-marker-interfaces-feature/src/main/java/org/apache/commons/graph/flow/DefaultMaxFlowAlgorithmSelector.java
    
commons/sandbox/graph/branches/drop-marker-interfaces-feature/src/main/java/org/apache/commons/graph/flow/DefaultToTailBuilder.java

Modified: 
commons/sandbox/graph/branches/drop-marker-interfaces-feature/src/main/java/org/apache/commons/graph/flow/DefaultMaxFlowAlgorithmSelector.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/graph/branches/drop-marker-interfaces-feature/src/main/java/org/apache/commons/graph/flow/DefaultMaxFlowAlgorithmSelector.java?rev=1298228&r1=1298227&r2=1298228&view=diff
==============================================================================
--- 
commons/sandbox/graph/branches/drop-marker-interfaces-feature/src/main/java/org/apache/commons/graph/flow/DefaultMaxFlowAlgorithmSelector.java
 (original)
+++ 
commons/sandbox/graph/branches/drop-marker-interfaces-feature/src/main/java/org/apache/commons/graph/flow/DefaultMaxFlowAlgorithmSelector.java
 Wed Mar  7 23:46:31 2012
@@ -19,10 +19,12 @@ package org.apache.commons.graph.flow;
  * under the License.
  */
 
+import static org.apache.commons.graph.CommonsGraph.newDirectedMutableGraph;
 import static org.apache.commons.graph.CommonsGraph.visit;
 import static org.apache.commons.graph.utils.Assertions.checkNotNull;
 
 import org.apache.commons.graph.DirectedGraph;
+import org.apache.commons.graph.Mapper;
 import org.apache.commons.graph.VertexPair;
 import org.apache.commons.graph.builder.AbstractGraphConnection;
 import org.apache.commons.graph.model.BaseLabeledWeightedEdge;
@@ -42,13 +44,16 @@ final class DefaultMaxFlowAlgorithmSelec
 
     private final G graph;
 
+    private final Mapper<WE, W> weightedEdges;
+
     private final V source;
 
     private final V target;
 
-    public DefaultMaxFlowAlgorithmSelector( G graph, V source, V target )
+    public DefaultMaxFlowAlgorithmSelector( G graph, Mapper<WE, W> 
weightedEdges, V source, V target )
     {
         this.graph = graph;
+        this.weightedEdges = weightedEdges;
         this.source = source;
         this.target = target;
     }
@@ -61,10 +66,10 @@ final class DefaultMaxFlowAlgorithmSelec
         final WO checkedWeightOperations = checkNotNull( weightOperations, 
"Weight operations can not be null to find the max flow in the graph" );
 
         // create flow network
-        final DirectedGraph<V, WeightedEdge<W>> flowNetwork = newFlowNetwok( 
graph, checkedWeightOperations );
+        final DirectedGraph<V, WE> flowNetwork = newFlowNetwok( graph, 
checkedWeightOperations );
 
         // create flow network handler
-        final FlowNetworkHandler<V, W> flowNetworkHandler = new 
FlowNetworkHandler<V, W>( flowNetwork, source, target, checkedWeightOperations 
);
+        final FlowNetworkHandler<V, WE, W> flowNetworkHandler = new 
FlowNetworkHandler<V, WE, W>( flowNetwork, source, target, 
checkedWeightOperations, weightedEdges );
 
         // perform depth first search
         visit( flowNetwork ).from( source ).applyingDepthFirstSearch( 
flowNetworkHandler );
@@ -88,10 +93,10 @@ final class DefaultMaxFlowAlgorithmSelec
         final WO checkedWeightOperations = checkNotNull( weightOperations, 
"Weight operations can not be null to find the max flow in the graph" );
 
         // create flow network
-        final DirectedGraph<V, WeightedEdge<W>> flowNetwork = newFlowNetwok( 
graph, checkedWeightOperations );
+        final DirectedGraph<V, WE> flowNetwork = newFlowNetwok( graph, 
checkedWeightOperations );
 
         // create flow network handler
-        final FlowNetworkHandler<V, W> flowNetworkHandler = new 
FlowNetworkHandler<V, W>( flowNetwork, source, target, checkedWeightOperations 
);
+        final FlowNetworkHandler<V, WE, W> flowNetworkHandler = new 
FlowNetworkHandler<V, WE, W>( flowNetwork, source, target, 
checkedWeightOperations, weightedEdges );
 
         // perform breadth first search
         visit( flowNetwork ).from( source ).applyingBreadthFirstSearch( 
flowNetworkHandler );
@@ -107,9 +112,9 @@ final class DefaultMaxFlowAlgorithmSelec
         return flowNetworkHandler.onCompleted();
     }
 
-    private <WO extends OrderedMonoid<W>> DirectedGraph<V, WeightedEdge<W>> 
newFlowNetwok( final G graph, final WO weightOperations )
+    private <WO extends OrderedMonoid<W>> DirectedGraph<V, WE> newFlowNetwok( 
final G graph, final WO weightOperations )
     {
-        return newDirectedMutableWeightedGraph( new AbstractGraphConnection<V, 
WeightedEdge<W>>()
+        return newDirectedMutableGraph( new AbstractGraphConnection<V, WE>()
         {
             @Override
             public void connect()
@@ -130,6 +135,7 @@ final class DefaultMaxFlowAlgorithmSelec
 
                     if ( graph.getEdge( tail, head ) == null )
                     {
+                        // FIXME!!!
                         // complete the flow network with a zero-capacity 
inverse edge
                         addEdge( new BaseLabeledWeightedEdge<W>( "Inverse edge 
for " + edge, weightOperations.zero() ) )
                             .from( tail ).to( head );

Modified: 
commons/sandbox/graph/branches/drop-marker-interfaces-feature/src/main/java/org/apache/commons/graph/flow/DefaultToTailBuilder.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/graph/branches/drop-marker-interfaces-feature/src/main/java/org/apache/commons/graph/flow/DefaultToTailBuilder.java?rev=1298228&r1=1298227&r2=1298228&view=diff
==============================================================================
--- 
commons/sandbox/graph/branches/drop-marker-interfaces-feature/src/main/java/org/apache/commons/graph/flow/DefaultToTailBuilder.java
 (original)
+++ 
commons/sandbox/graph/branches/drop-marker-interfaces-feature/src/main/java/org/apache/commons/graph/flow/DefaultToTailBuilder.java
 Wed Mar  7 23:46:31 2012
@@ -52,7 +52,7 @@ final class DefaultToTailBuilder<V, WE, 
     public MaxFlowAlgorithmSelector<V, WE, W, G> to( V tail )
     {
         tail = checkNotNull( tail, "tail vertex has to be specifies when 
looking for the max flow" );
-        return new DefaultMaxFlowAlgorithmSelector<V, WE, W, G>( graph, head, 
tail );
+        return new DefaultMaxFlowAlgorithmSelector<V, WE, W, G>( graph, 
weightedEdges, head, tail );
     }
 
 }


Reply via email to