From 7fdd6c805d2083778e47295d2ca1f54ec9f8ac98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Henning?= <stu114708@informatik.uni-kiel.de> Date: Thu, 31 Mar 2016 17:22:39 +0200 Subject: [PATCH] worked on dot export --- .../kieker/analysis/graph/GraphTester.java | 5 ++ .../graph/export/AbstractTransformer.java | 1 - .../graph/export/dot/AbstractDotWriter.java | 78 ++++++++++++++++++ .../graph/export/dot/DotSubgraphWriter.java | 64 +++++++++++++++ .../analysis/graph/export/dot/DotWriter2.java | 81 +++++++++++++++++++ 5 files changed, 228 insertions(+), 1 deletion(-) create mode 100644 src/main/java/kieker/analysis/graph/export/dot/AbstractDotWriter.java create mode 100644 src/main/java/kieker/analysis/graph/export/dot/DotSubgraphWriter.java create mode 100644 src/main/java/kieker/analysis/graph/export/dot/DotWriter2.java diff --git a/src/main/java/kieker/analysis/graph/GraphTester.java b/src/main/java/kieker/analysis/graph/GraphTester.java index 418d6cf0..99a6ad24 100644 --- a/src/main/java/kieker/analysis/graph/GraphTester.java +++ b/src/main/java/kieker/analysis/graph/GraphTester.java @@ -1,7 +1,9 @@ package kieker.analysis.graph; +import java.io.OutputStreamWriter; import java.util.ArrayList; +import kieker.analysis.graph.export.dot.DotWriter2; import kieker.analysis.graph.export.graphml.GraphMLExporter; import kieker.analysis.graph.impl.GraphImpl; @@ -97,6 +99,9 @@ public class GraphTester { GraphMLExporter graphMLExporter = new GraphMLExporter(); graphMLExporter.export(graph, System.out); + DotWriter2 dotWriter = new DotWriter2(graph, new OutputStreamWriter(System.out)); + dotWriter.transform(); + // DotExporter dotExporter = new DotExporter(); // dotExporter.export(graph, System.out); diff --git a/src/main/java/kieker/analysis/graph/export/AbstractTransformer.java b/src/main/java/kieker/analysis/graph/export/AbstractTransformer.java index d6f0c9ab..08c48d95 100644 --- a/src/main/java/kieker/analysis/graph/export/AbstractTransformer.java +++ b/src/main/java/kieker/analysis/graph/export/AbstractTransformer.java @@ -8,7 +8,6 @@ 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> implements VertexVisitor, EdgeVisitor { private final GraphTraverser graphTraverser = new FlatGraphTraverser(this, this); diff --git a/src/main/java/kieker/analysis/graph/export/dot/AbstractDotWriter.java b/src/main/java/kieker/analysis/graph/export/dot/AbstractDotWriter.java new file mode 100644 index 00000000..4a1f6136 --- /dev/null +++ b/src/main/java/kieker/analysis/graph/export/dot/AbstractDotWriter.java @@ -0,0 +1,78 @@ +package kieker.analysis.graph.export.dot; + +import java.io.IOException; + +import kieker.analysis.graph.Direction; +import kieker.analysis.graph.Edge; +import kieker.analysis.graph.Graph; +import kieker.analysis.graph.Vertex; +import kieker.analysis.graph.export.AbstractTransformer; +import kieker.analysis.graph.util.dot.DotWriter; + +class AbstractDotWriter extends AbstractTransformer<Void> { + + private final DotWriter dotWriter; + + public AbstractDotWriter(final Graph graph, final DotWriter dotWriter) { + super(graph); + this.dotWriter = dotWriter; + + // TODO Better put this in own method + try { + dotWriter.start(graph.getName()); + // TODO more stuff + } catch (IOException e) { + // TODO Handle IO Exception + } + } + + @Override + protected void mapVertex(final Vertex vertex) { + try { + if (vertex.hasChildGraph()) { + Graph childGraph = vertex.getChildGraph(); + + dotWriter.addClusterStart(childGraph.getName()); + // TODO more stuff + + DotSubgraphWriter dotWriter2 = new DotSubgraphWriter(childGraph, dotWriter); + dotWriter2.transform(); + + dotWriter.addClusterStop(); + } else { + + dotWriter.addNode(vertex.getId().toString(), null); // TODO + + } + } catch (IOException e) { + // TODO Handle IO Exception + } + } + + @Override + protected void mapEdge(final Edge edge) { + // TODO Auto-generated method stub + + try { + + String sourceId = edge.getVertex(Direction.OUT).getId().toString(); + String targetId = edge.getVertex(Direction.IN).getId().toString(); + dotWriter.addEdge(sourceId, targetId); // TODO + } catch (IOException e) { + // TODO Handle IO Exception + } + + } + + @Override + protected Void getTransformation() { + // TODO own method + try { + dotWriter.finish(); + } catch (IOException e) { + // TODO Handle IO Exception + } + return null; + } + +} diff --git a/src/main/java/kieker/analysis/graph/export/dot/DotSubgraphWriter.java b/src/main/java/kieker/analysis/graph/export/dot/DotSubgraphWriter.java new file mode 100644 index 00000000..a7582a1a --- /dev/null +++ b/src/main/java/kieker/analysis/graph/export/dot/DotSubgraphWriter.java @@ -0,0 +1,64 @@ +package kieker.analysis.graph.export.dot; + +import java.io.IOException; + +import kieker.analysis.graph.Direction; +import kieker.analysis.graph.Edge; +import kieker.analysis.graph.Graph; +import kieker.analysis.graph.Vertex; +import kieker.analysis.graph.export.AbstractTransformer; +import kieker.analysis.graph.util.dot.DotWriter; + +class DotSubgraphWriter extends AbstractTransformer<Void> { + + private final DotWriter dotWriter; + + protected DotSubgraphWriter(final Graph graph, final DotWriter dotWriter) { + super(graph); + this.dotWriter = dotWriter; + } + + @Override + protected void mapVertex(final Vertex vertex) { + try { + if (vertex.hasChildGraph()) { + Graph childGraph = vertex.getChildGraph(); + + dotWriter.addClusterStart(childGraph.getName()); + // TODO more stuff + + DotSubgraphWriter dotWriter2 = new DotSubgraphWriter(childGraph, dotWriter); + dotWriter2.transform(); + + dotWriter.addClusterStop(); + } else { + + dotWriter.addNode(vertex.getId().toString(), null); // TODO + + } + } catch (IOException e) { + // TODO Handle IO Exception + } + } + + @Override + protected void mapEdge(final Edge edge) { + // TODO Auto-generated method stub + + try { + + String sourceId = edge.getVertex(Direction.OUT).getId().toString(); + String targetId = edge.getVertex(Direction.IN).getId().toString(); + dotWriter.addEdge(sourceId, targetId); // TODO + } catch (IOException e) { + // TODO Handle IO Exception + } + + } + + @Override + protected Void getTransformation() { + return null; + } + +} diff --git a/src/main/java/kieker/analysis/graph/export/dot/DotWriter2.java b/src/main/java/kieker/analysis/graph/export/dot/DotWriter2.java new file mode 100644 index 00000000..225203cb --- /dev/null +++ b/src/main/java/kieker/analysis/graph/export/dot/DotWriter2.java @@ -0,0 +1,81 @@ +package kieker.analysis.graph.export.dot; + +import java.io.IOException; +import java.io.Writer; + +import kieker.analysis.graph.Direction; +import kieker.analysis.graph.Edge; +import kieker.analysis.graph.Graph; +import kieker.analysis.graph.Vertex; +import kieker.analysis.graph.export.AbstractTransformer; +import kieker.analysis.graph.util.dot.DotWriter; + +//TODO rename +public class DotWriter2 extends AbstractTransformer<Void> { + + private final DotWriter dotWriter; + private DotSubgraphWriter dotSubgraphWriter; + + public DotWriter2(final Graph graph, final Writer writer) { + super(graph); + this.dotWriter = new DotWriter(writer); + + // TODO Better put this in own method + try { + dotWriter.start(graph.getName()); + // TODO more stuff + } catch (IOException e) { + // TODO Handle IO Exception + } + } + + @Override + protected void mapVertex(final Vertex vertex) { + try { + if (vertex.hasChildGraph()) { + Graph childGraph = vertex.getChildGraph(); + + dotWriter.addClusterStart(childGraph.getName()); + // TODO more stuff + + DotSubgraphWriter dotWriter2 = new DotSubgraphWriter(childGraph, dotWriter); + dotWriter2.transform(); + + dotWriter.addClusterStop(); + } else { + + dotWriter.addNode(vertex.getId().toString(), null); // TODO + + } + } catch (IOException e) { + // TODO Handle IO Exception + } + } + + @Override + protected void mapEdge(final Edge edge) { + // TODO Auto-generated method stub + + try { + + String sourceId = edge.getVertex(Direction.OUT).getId().toString(); + String targetId = edge.getVertex(Direction.IN).getId().toString(); + dotWriter.addEdge(sourceId, targetId); // TODO + } catch (IOException e) { + // TODO Handle IO Exception + } + + } + + @Override + protected Void getTransformation() { + // TODO own method + try { + dotWriter.finish(); + } catch (IOException e) { + // TODO Handle IO Exception + } + return null; + } + +} -- GitLab