From 3897b9c1732b23bd6a2f9cb0de87365d667f1304 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=B6ren=20Henning?= <stu114708@informatik.uni-kiel.de>
Date: Tue, 29 Mar 2016 12:27:12 +0200
Subject: [PATCH] use traverser for transformation

---
 .../graph/export/AbstractTransformer.java     | 27 +++++++++++++------
 .../graph/traversal/DeepGraphTraverser.java   | 14 ++++++++++
 .../graph/traversal/FlatGraphTraverser.java   | 14 ++++++++++
 3 files changed, 47 insertions(+), 8 deletions(-)

diff --git a/src/main/java/kieker/analysis/graph/export/AbstractTransformer.java b/src/main/java/kieker/analysis/graph/export/AbstractTransformer.java
index 0c640f4e..d6f0c9ab 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 18773f3e..4c6aba38 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 46b3f562..020af242 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) {
 
-- 
GitLab