diff --git a/src/main/java/kieker/analysis/graph/export/AbstractTransformer.java b/src/main/java/kieker/analysis/graph/export/AbstractTransformer.java index 0c640f4efc46982eabd823e6772a4e8a77c0dd52..d6f0c9ab7f38f85cda5a6ca98301bf267d804e2b 100644 --- a/src/main/java/kieker/analysis/graph/export/AbstractTransformer.java +++ b/src/main/java/kieker/analysis/graph/export/AbstractTransformer.java @@ -3,9 +3,15 @@ package kieker.analysis.graph.export; import kieker.analysis.graph.Edge; import kieker.analysis.graph.Graph; import kieker.analysis.graph.Vertex; +import kieker.analysis.graph.traversal.EdgeVisitor; +import kieker.analysis.graph.traversal.FlatGraphTraverser; +import kieker.analysis.graph.traversal.GraphTraverser; +import kieker.analysis.graph.traversal.VertexVisitor; //TODO better name mapper -public abstract class AbstractTransformer<O> { +public abstract class AbstractTransformer<O> implements VertexVisitor, EdgeVisitor { + + private final GraphTraverser graphTraverser = new FlatGraphTraverser(this, this); protected Graph graph; @@ -15,13 +21,7 @@ public abstract class AbstractTransformer<O> { public final O transform() { - for (final Vertex vertex : graph.getVertices()) { - mapVertex(vertex); - } - - for (final Edge edge : graph.getEdges()) { - mapEdge(edge); - } + graphTraverser.traverse(graph); return getTransformation(); } @@ -31,4 +31,15 @@ public abstract class AbstractTransformer<O> { protected abstract void mapEdge(Edge edge); protected abstract O getTransformation(); + + @Override + public void visitVertex(final Vertex vertex) { + mapVertex(vertex); + } + + @Override + public void visitEdge(final Edge edge) { + mapEdge(edge); + } + } diff --git a/src/main/java/kieker/analysis/graph/traversal/DeepGraphTraverser.java b/src/main/java/kieker/analysis/graph/traversal/DeepGraphTraverser.java index 18773f3e2ee0305b5ad50029de1783e1c737a6ec..4c6aba38e655d433cb6f66155daa852eda749ed7 100644 --- a/src/main/java/kieker/analysis/graph/traversal/DeepGraphTraverser.java +++ b/src/main/java/kieker/analysis/graph/traversal/DeepGraphTraverser.java @@ -1,11 +1,25 @@ package kieker.analysis.graph.traversal; +import java.util.List; + import kieker.analysis.graph.Edge; import kieker.analysis.graph.Graph; import kieker.analysis.graph.Vertex; public class DeepGraphTraverser extends GraphTraverser { + public DeepGraphTraverser() { + super(); + } + + public DeepGraphTraverser(final List<VertexVisitor> vertexVisitors, final List<EdgeVisitor> edgeVisitors) { + super(vertexVisitors, edgeVisitors); + } + + public DeepGraphTraverser(final VertexVisitor vertexVisitor, final EdgeVisitor edgeVisitor) { + super(vertexVisitor, edgeVisitor); + } + @Override public void traverse(final Graph graph) { for (final Vertex vertex : graph.getVertices()) { diff --git a/src/main/java/kieker/analysis/graph/traversal/FlatGraphTraverser.java b/src/main/java/kieker/analysis/graph/traversal/FlatGraphTraverser.java index 46b3f56263cbdaabed1e7068eb1d42b0133a3cdc..020af24266538f10354bd59da4d59fca7a03da34 100644 --- a/src/main/java/kieker/analysis/graph/traversal/FlatGraphTraverser.java +++ b/src/main/java/kieker/analysis/graph/traversal/FlatGraphTraverser.java @@ -1,11 +1,25 @@ package kieker.analysis.graph.traversal; +import java.util.List; + import kieker.analysis.graph.Edge; import kieker.analysis.graph.Graph; import kieker.analysis.graph.Vertex; public class FlatGraphTraverser extends GraphTraverser { + public FlatGraphTraverser() { + super(); + } + + public FlatGraphTraverser(final List<VertexVisitor> vertexVisitors, final List<EdgeVisitor> edgeVisitors) { + super(vertexVisitors, edgeVisitors); + } + + public FlatGraphTraverser(final VertexVisitor vertexVisitor, final EdgeVisitor edgeVisitor) { + super(vertexVisitor, edgeVisitor); + } + @Override public void traverse(final Graph graph) {