Skip to content

Commit 10c9a7d

Browse files
author
Andrew Chen
committed
Add convenience builder() methods for graph implementations
1 parent f0c72ee commit 10c9a7d

15 files changed

+234
-2
lines changed

jgrapht-core/src/main/java/org/jgrapht/graph/DefaultDirectedGraph.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
package org.jgrapht.graph;
4040

4141
import org.jgrapht.*;
42+
import org.jgrapht.graph.builder.*;
4243

4344

4445
/**
@@ -78,6 +79,21 @@ public DefaultDirectedGraph(EdgeFactory<V, E> ef)
7879
{
7980
super(ef, false, true);
8081
}
82+
83+
84+
public static <V, E> DirectedGraphBuilderBase
85+
<V, E, ? extends DefaultDirectedGraph<V,E>, ?>
86+
builder(Class<? extends E> edgeClass) {
87+
return new DirectedGraphBuilder<V, E, DefaultDirectedGraph<V,E>>(
88+
new DefaultDirectedGraph<V, E>(edgeClass));
89+
}
90+
91+
public static <V, E> DirectedGraphBuilderBase
92+
<V, E, ? extends DefaultDirectedGraph<V,E>, ?>
93+
builder(EdgeFactory<V, E> ef) {
94+
return new DirectedGraphBuilder<V, E, DefaultDirectedGraph<V,E>>(
95+
new DefaultDirectedGraph<V, E>(ef));
96+
}
8197
}
8298

8399
// End DefaultDirectedGraph.java

jgrapht-core/src/main/java/org/jgrapht/graph/DefaultDirectedWeightedGraph.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
package org.jgrapht.graph;
4040

4141
import org.jgrapht.*;
42+
import org.jgrapht.graph.builder.*;
4243

4344

4445
/**
@@ -77,6 +78,22 @@ public DefaultDirectedWeightedGraph(EdgeFactory<V, E> ef)
7778
{
7879
super(ef);
7980
}
81+
82+
public static <V, E> DirectedWeightedGraphBuilderBase
83+
<V, E, ? extends DefaultDirectedWeightedGraph<V,E>, ?>
84+
builder(Class<? extends E> edgeClass) {
85+
return new DirectedWeightedGraphBuilder
86+
<V, E, DefaultDirectedWeightedGraph<V, E>>(
87+
new DefaultDirectedWeightedGraph<V, E>(edgeClass));
88+
}
89+
90+
public static <V, E> DirectedWeightedGraphBuilderBase
91+
<V, E, ? extends DefaultDirectedWeightedGraph<V,E>, ?>
92+
builder(EdgeFactory<V, E> ef) {
93+
return new DirectedWeightedGraphBuilder
94+
<V, E, DefaultDirectedWeightedGraph<V, E>>(
95+
new DefaultDirectedWeightedGraph<V, E>(ef));
96+
}
8097
}
8198

8299
// End DefaultDirectedWeightedGraph.java

jgrapht-core/src/main/java/org/jgrapht/graph/DirectedMultigraph.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
package org.jgrapht.graph;
4040

4141
import org.jgrapht.*;
42+
import org.jgrapht.graph.builder.*;
4243

4344

4445
/**
@@ -75,6 +76,21 @@ public DirectedMultigraph(EdgeFactory<V, E> ef)
7576
{
7677
super(ef, true, false);
7778
}
79+
80+
81+
public static <V, E> DirectedGraphBuilderBase
82+
<V, E, ? extends DirectedMultigraph<V,E>, ?>
83+
builder(Class<? extends E> edgeClass) {
84+
return new DirectedGraphBuilder<V, E, DirectedMultigraph<V,E>>(
85+
new DirectedMultigraph<V, E>(edgeClass));
86+
}
87+
88+
public static <V, E> DirectedGraphBuilderBase
89+
<V, E, ? extends DirectedMultigraph<V,E>, ?>
90+
builder(EdgeFactory<V, E> ef) {
91+
return new DirectedGraphBuilder<V, E, DirectedMultigraph<V,E>>(
92+
new DirectedMultigraph<V, E>(ef));
93+
}
7894
}
7995

8096
// End DirectedMultigraph.java

jgrapht-core/src/main/java/org/jgrapht/graph/DirectedPseudograph.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
package org.jgrapht.graph;
3939

4040
import org.jgrapht.*;
41+
import org.jgrapht.graph.builder.*;
4142

4243

4344
/**
@@ -72,6 +73,21 @@ public DirectedPseudograph(EdgeFactory<V, E> ef)
7273
{
7374
super(ef, true, true);
7475
}
76+
77+
78+
public static <V, E> DirectedGraphBuilderBase
79+
<V, E, ? extends DirectedPseudograph<V,E>, ?>
80+
builder(Class<? extends E> edgeClass) {
81+
return new DirectedGraphBuilder<V, E, DirectedPseudograph<V,E>>(
82+
new DirectedPseudograph<V, E>(edgeClass));
83+
}
84+
85+
public static <V, E> DirectedGraphBuilderBase
86+
<V, E, ? extends DirectedPseudograph<V,E>, ?>
87+
builder(EdgeFactory<V, E> ef) {
88+
return new DirectedGraphBuilder<V, E, DirectedPseudograph<V,E>>(
89+
new DirectedPseudograph<V, E>(ef));
90+
}
7591
}
7692

7793
// End DirectedPseudograph.java

jgrapht-core/src/main/java/org/jgrapht/graph/DirectedWeightedMultigraph.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
package org.jgrapht.graph;
4040

4141
import org.jgrapht.*;
42+
import org.jgrapht.graph.builder.*;
4243

4344

4445
/**
@@ -76,6 +77,22 @@ public DirectedWeightedMultigraph(EdgeFactory<V, E> ef)
7677
{
7778
super(ef);
7879
}
80+
81+
public static <V, E> DirectedWeightedGraphBuilderBase
82+
<V, E, ? extends DirectedWeightedMultigraph<V,E>, ?>
83+
builder(Class<? extends E> edgeClass) {
84+
return new DirectedWeightedGraphBuilder
85+
<V, E, DirectedWeightedMultigraph<V, E>>(
86+
new DirectedWeightedMultigraph<V, E>(edgeClass));
87+
}
88+
89+
public static <V, E> DirectedWeightedGraphBuilderBase
90+
<V, E, ? extends DirectedWeightedMultigraph<V,E>, ?>
91+
builder(EdgeFactory<V, E> ef) {
92+
return new DirectedWeightedGraphBuilder
93+
<V, E, DirectedWeightedMultigraph<V, E>>(
94+
new DirectedWeightedMultigraph<V, E>(ef));
95+
}
7996
}
8097

8198
// End DirectedWeightedMultigraph.java

jgrapht-core/src/main/java/org/jgrapht/graph/DirectedWeightedPseudograph.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
package org.jgrapht.graph;
4040

4141
import org.jgrapht.*;
42+
import org.jgrapht.graph.builder.*;
4243

4344

4445
/**
@@ -76,6 +77,22 @@ public DirectedWeightedPseudograph(EdgeFactory<V, E> ef)
7677
{
7778
super(ef);
7879
}
80+
81+
public static <V, E> DirectedWeightedGraphBuilderBase
82+
<V, E, ? extends DirectedWeightedPseudograph<V,E>, ?>
83+
builder(Class<? extends E> edgeClass) {
84+
return new DirectedWeightedGraphBuilder
85+
<V, E, DirectedWeightedPseudograph<V, E>>(
86+
new DirectedWeightedPseudograph<V, E>(edgeClass));
87+
}
88+
89+
public static <V, E> DirectedWeightedGraphBuilderBase
90+
<V, E, ? extends DirectedWeightedPseudograph<V,E>, ?>
91+
builder(EdgeFactory<V, E> ef) {
92+
return new DirectedWeightedGraphBuilder
93+
<V, E, DirectedWeightedPseudograph<V, E>>(
94+
new DirectedWeightedPseudograph<V, E>(ef));
95+
}
7996
}
8097

8198
// End DirectedWeightedPseudograph.java

jgrapht-core/src/main/java/org/jgrapht/graph/Multigraph.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
package org.jgrapht.graph;
4040

4141
import org.jgrapht.*;
42+
import org.jgrapht.graph.builder.*;
4243

4344

4445
/**
@@ -77,6 +78,21 @@ public Multigraph(EdgeFactory<V, E> ef)
7778
{
7879
super(ef, true, false);
7980
}
81+
82+
83+
public static <V, E> UndirectedGraphBuilderBase
84+
<V, E, ? extends Multigraph<V,E>, ?>
85+
builder(Class<? extends E> edgeClass) {
86+
return new UndirectedGraphBuilder<V, E, Multigraph<V,E>>(
87+
new Multigraph<V, E>(edgeClass));
88+
}
89+
90+
public static <V, E> UndirectedGraphBuilderBase
91+
<V, E, ? extends Multigraph<V,E>, ?>
92+
builder(EdgeFactory<V, E> ef) {
93+
return new UndirectedGraphBuilder<V, E, Multigraph<V,E>>(
94+
new Multigraph<V, E>(ef));
95+
}
8096
}
8197

8298
// End Multigraph.java

jgrapht-core/src/main/java/org/jgrapht/graph/Pseudograph.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
package org.jgrapht.graph;
4040

4141
import org.jgrapht.*;
42+
import org.jgrapht.graph.builder.*;
4243

4344

4445
/**
@@ -76,6 +77,21 @@ public Pseudograph(EdgeFactory<V, E> ef)
7677
{
7778
super(ef, true, true);
7879
}
80+
81+
82+
public static <V, E> UndirectedGraphBuilderBase
83+
<V, E, ? extends Pseudograph<V,E>, ?>
84+
builder(Class<? extends E> edgeClass) {
85+
return new UndirectedGraphBuilder<V, E, Pseudograph<V,E>>(
86+
new Pseudograph<V, E>(edgeClass));
87+
}
88+
89+
public static <V, E> UndirectedGraphBuilderBase
90+
<V, E, ? extends Pseudograph<V,E>, ?>
91+
builder(EdgeFactory<V, E> ef) {
92+
return new UndirectedGraphBuilder<V, E, Pseudograph<V,E>>(
93+
new Pseudograph<V, E>(ef));
94+
}
7995
}
8096

8197
// End Pseudograph.java

jgrapht-core/src/main/java/org/jgrapht/graph/SimpleDirectedGraph.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
package org.jgrapht.graph;
4040

4141
import org.jgrapht.*;
42+
import org.jgrapht.graph.builder.*;
4243

4344

4445
/**
@@ -74,6 +75,21 @@ public SimpleDirectedGraph(EdgeFactory<V, E> ef)
7475
{
7576
super(ef, false, false);
7677
}
78+
79+
80+
public static <V, E> DirectedGraphBuilderBase
81+
<V, E, ? extends SimpleDirectedGraph<V,E>, ?>
82+
builder(Class<? extends E> edgeClass) {
83+
return new DirectedGraphBuilder<V, E, SimpleDirectedGraph<V,E>>(
84+
new SimpleDirectedGraph<V, E>(edgeClass));
85+
}
86+
87+
public static <V, E> DirectedGraphBuilderBase
88+
<V, E, ? extends SimpleDirectedGraph<V,E>, ?>
89+
builder(EdgeFactory<V, E> ef) {
90+
return new DirectedGraphBuilder<V, E, SimpleDirectedGraph<V,E>>(
91+
new SimpleDirectedGraph<V, E>(ef));
92+
}
7793
}
7894

7995
// End SimpleDirectedGraph.java

jgrapht-core/src/main/java/org/jgrapht/graph/SimpleDirectedWeightedGraph.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
package org.jgrapht.graph;
4040

4141
import org.jgrapht.*;
42+
import org.jgrapht.graph.builder.*;
4243

4344

4445
/**
@@ -75,6 +76,22 @@ public SimpleDirectedWeightedGraph(Class<? extends E> edgeClass)
7576
{
7677
this(new ClassBasedEdgeFactory<V, E>(edgeClass));
7778
}
79+
80+
public static <V, E> DirectedWeightedGraphBuilderBase
81+
<V, E, ? extends SimpleDirectedWeightedGraph<V,E>, ?>
82+
builder(Class<? extends E> edgeClass) {
83+
return new DirectedWeightedGraphBuilder
84+
<V, E, SimpleDirectedWeightedGraph<V, E>>(
85+
new SimpleDirectedWeightedGraph<V, E>(edgeClass));
86+
}
87+
88+
public static <V, E> DirectedWeightedGraphBuilderBase
89+
<V, E, ? extends SimpleDirectedWeightedGraph<V,E>, ?>
90+
builder(EdgeFactory<V, E> ef) {
91+
return new DirectedWeightedGraphBuilder
92+
<V, E, SimpleDirectedWeightedGraph<V, E>>(
93+
new SimpleDirectedWeightedGraph<V, E>(ef));
94+
}
7895
}
7996

8097
// End SimpleDirectedWeightedGraph.java

jgrapht-core/src/main/java/org/jgrapht/graph/SimpleGraph.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
package org.jgrapht.graph;
4040

4141
import org.jgrapht.*;
42+
import org.jgrapht.graph.builder.*;
4243

4344

4445
/**
@@ -77,6 +78,21 @@ public SimpleGraph(Class<? extends E> edgeClass)
7778
{
7879
this(new ClassBasedEdgeFactory<V, E>(edgeClass));
7980
}
81+
82+
83+
public static <V, E> UndirectedGraphBuilderBase
84+
<V, E, ? extends SimpleGraph<V,E>, ?>
85+
builder(Class<? extends E> edgeClass) {
86+
return new UndirectedGraphBuilder<V, E, SimpleGraph<V,E>>(
87+
new SimpleGraph<V, E>(edgeClass));
88+
}
89+
90+
public static <V, E> UndirectedGraphBuilderBase
91+
<V, E, ? extends SimpleGraph<V,E>, ?>
92+
builder(EdgeFactory<V, E> ef) {
93+
return new UndirectedGraphBuilder<V, E, SimpleGraph<V,E>>(
94+
new SimpleGraph<V, E>(ef));
95+
}
8096
}
8197

8298
// End SimpleGraph.java

jgrapht-core/src/main/java/org/jgrapht/graph/SimpleWeightedGraph.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
package org.jgrapht.graph;
4040

4141
import org.jgrapht.*;
42+
import org.jgrapht.graph.builder.*;
4243

4344

4445
/**
@@ -74,6 +75,22 @@ public SimpleWeightedGraph(Class<? extends E> edgeClass)
7475
{
7576
this(new ClassBasedEdgeFactory<V, E>(edgeClass));
7677
}
78+
79+
public static <V, E> UndirectedWeightedGraphBuilderBase
80+
<V, E, ? extends SimpleWeightedGraph<V,E>, ?>
81+
builder(Class<? extends E> edgeClass) {
82+
return new UndirectedWeightedGraphBuilder
83+
<V, E, SimpleWeightedGraph<V, E>>(
84+
new SimpleWeightedGraph<V, E>(edgeClass));
85+
}
86+
87+
public static <V, E> UndirectedWeightedGraphBuilderBase
88+
<V, E, ? extends SimpleWeightedGraph<V,E>, ?>
89+
builder(EdgeFactory<V, E> ef) {
90+
return new UndirectedWeightedGraphBuilder
91+
<V, E, SimpleWeightedGraph<V, E>>(
92+
new SimpleWeightedGraph<V, E>(ef));
93+
}
7794
}
7895

7996
// End SimpleWeightedGraph.java

jgrapht-core/src/main/java/org/jgrapht/graph/WeightedMultigraph.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
package org.jgrapht.graph;
4040

4141
import org.jgrapht.*;
42+
import org.jgrapht.graph.builder.*;
4243

4344

4445
/**
@@ -77,6 +78,22 @@ public WeightedMultigraph(Class<? extends E> edgeClass)
7778
{
7879
this(new ClassBasedEdgeFactory<V, E>(edgeClass));
7980
}
81+
82+
public static <V, E> UndirectedWeightedGraphBuilderBase
83+
<V, E, ? extends WeightedMultigraph<V,E>, ?>
84+
builder(Class<? extends E> edgeClass) {
85+
return new UndirectedWeightedGraphBuilder
86+
<V, E, WeightedMultigraph<V, E>>(
87+
new WeightedMultigraph<V, E>(edgeClass));
88+
}
89+
90+
public static <V, E> UndirectedWeightedGraphBuilderBase
91+
<V, E, ? extends WeightedMultigraph<V,E>, ?>
92+
builder(EdgeFactory<V, E> ef) {
93+
return new UndirectedWeightedGraphBuilder
94+
<V, E, WeightedMultigraph<V, E>>(
95+
new WeightedMultigraph<V, E>(ef));
96+
}
8097
}
8198

8299
// End WeightedMultigraph.java

0 commit comments

Comments
 (0)