From 8367aa2fc82e3fb732842d7a142eeaa4bfc35bf4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=B6ren=20Henning?= <stu114708@informatik.uni-kiel.de>
Date: Wed, 6 Apr 2016 13:39:09 +0200
Subject: [PATCH] dot writers now need a mapping object

---
 .../analysis/TraceAnalysisConfiguration.java  | 12 ++++----
 .../dot/AbstractDotFileWriterStage.java       | 26 ----------------
 .../export/dot/AbstractDotWriterStage.java    | 23 --------------
 .../graph/export/dot/DotFileWriterStage.java  | 30 +++++++++++++++++++
 .../graph/export/dot/DotWriterStage.java      | 25 ++++++++++++++++
 5 files changed, 60 insertions(+), 56 deletions(-)
 delete mode 100644 src/main/java/kieker/analysis/graph/export/dot/AbstractDotFileWriterStage.java
 delete mode 100644 src/main/java/kieker/analysis/graph/export/dot/AbstractDotWriterStage.java
 create mode 100644 src/main/java/kieker/analysis/graph/export/dot/DotFileWriterStage.java
 create mode 100644 src/main/java/kieker/analysis/graph/export/dot/DotWriterStage.java

diff --git a/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java b/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java
index f90996ae..26248069 100644
--- a/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java
+++ b/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java
@@ -12,6 +12,7 @@ import kieker.analysis.domain.AggregatedTrace;
 import kieker.analysis.domain.OperationCall;
 import kieker.analysis.domain.Trace;
 import kieker.analysis.graph.Graph;
+import kieker.analysis.graph.export.dot.DotFileWriterStage;
 import kieker.analysis.graph.export.graphml.GraphMLFileWriterComposite;
 import kieker.analysis.stage.tracediagnosis.AllowedRecordsFilter;
 import kieker.analysis.stage.tracediagnosis.BeginEndOfMonitoringDetector;
@@ -19,7 +20,6 @@ import kieker.analysis.stage.tracediagnosis.OperationCallHandlerComposite;
 import kieker.analysis.stage.tracediagnosis.ReadingComposite;
 import kieker.analysis.stage.tracediagnosis.TraceAggregationComposite;
 import kieker.analysis.stage.tracediagnosis.TraceReconstructionComposite;
-import kieker.analysis.trace.graphoutput.DotGraphWriter;
 import kieker.analysis.trace.traversal.AggrTraceTraverserStage;
 import kieker.analysis.trace.traversal.TraceTraverserStage;
 import kieker.common.record.IMonitoringRecord;
@@ -75,28 +75,26 @@ public class TraceAnalysisConfiguration extends Configuration {
 
 		TraceTraverserStage traceTraverserStage = new TraceTraverserStage();
 		final Distributor<Graph> graphDistributor = new Distributor<>(new CopyByReferenceStrategy());
-		// TODO create mapping object
 		GraphMLFileWriterComposite graphMLFileWriterComposite = new GraphMLFileWriterComposite(graphFilesOutputDir);
-		DotGraphWriter dotGraphWriter = new DotGraphWriter(graphFilesOutputDir);
+		DotFileWriterStage dotFileWriterStage = new DotFileWriterStage(graphFilesOutputDir);
 
 		super.connectPorts(distributor.getNewOutputPort(), traceTraverserStage.getInputPort());
 		super.connectPorts(traceTraverserStage.getOutputPort(), graphDistributor.getInputPort());
 		super.connectPorts(graphDistributor.getNewOutputPort(), graphMLFileWriterComposite.getInputPort());
-		// super.connectPorts(graphDistributor.getNewOutputPort(), dotGraphWriter.getInputPort());
+		super.connectPorts(graphDistributor.getNewOutputPort(), dotFileWriterStage.getInputPort());
 
 		final Distributor<AggregatedTrace> aggregatedTraceDistributor = new Distributor<>(new CopyByReferenceStrategy());
 		AggrTraceTraverserStage aggrTraceTraverser = new AggrTraceTraverserStage();
 		final Distributor<Graph> graphDistributor2 = new Distributor<>(new CopyByReferenceStrategy());
-		// TODO create mapping object
 		GraphMLFileWriterComposite graphMLFileWriterComposite2 = new GraphMLFileWriterComposite(graphFilesOutputDir);
-		// DotGraphWriter dotGraphWriter2 = new DotGraphWriter(graphFilesOutputDir);
+		DotFileWriterStage dotFileWriterStage2 = new DotFileWriterStage(graphFilesOutputDir);
 
 		super.connectPorts(aggregation.getOutputPort(), aggregatedTraceDistributor.getInputPort());
 
 		super.connectPorts(aggregatedTraceDistributor.getNewOutputPort(), aggrTraceTraverser.getInputPort());
 		super.connectPorts(aggrTraceTraverser.getOutputPort(), graphDistributor2.getInputPort());
 		super.connectPorts(graphDistributor2.getNewOutputPort(), graphMLFileWriterComposite2.getInputPort());
-		// super.connectPorts(graphDistributor2.getNewOutputPort(), dotGraphWriter2.getInputPort());
+		super.connectPorts(graphDistributor2.getNewOutputPort(), dotFileWriterStage2.getInputPort());
 
 		// DependencyCreatorStage dependencyCreatorStage = new DependencyCreatorStage();
 		// DependencyStatisticsDecoratorStage dependencyStatisticsDecoratorStage = new DependencyStatisticsDecoratorStage();
diff --git a/src/main/java/kieker/analysis/graph/export/dot/AbstractDotFileWriterStage.java b/src/main/java/kieker/analysis/graph/export/dot/AbstractDotFileWriterStage.java
deleted file mode 100644
index 2368b3c8..00000000
--- a/src/main/java/kieker/analysis/graph/export/dot/AbstractDotFileWriterStage.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package kieker.analysis.graph.export.dot;
-
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.Writer;
-
-import kieker.analysis.graph.Graph;
-
-public abstract class AbstractDotFileWriterStage extends AbstractDotWriterStage {
-
-	public AbstractDotFileWriterStage() {
-		super();
-	}
-
-	@Override
-	protected Writer getWriter(final Graph graph) {
-		try {
-			return new FileWriter(getFileName(graph));
-		} catch (IOException e) {
-			throw new IllegalStateException(e);
-		}
-	}
-
-	protected abstract String getFileName(final Graph graph);
-
-}
diff --git a/src/main/java/kieker/analysis/graph/export/dot/AbstractDotWriterStage.java b/src/main/java/kieker/analysis/graph/export/dot/AbstractDotWriterStage.java
deleted file mode 100644
index 37a206bd..00000000
--- a/src/main/java/kieker/analysis/graph/export/dot/AbstractDotWriterStage.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package kieker.analysis.graph.export.dot;
-
-import java.io.Writer;
-
-import kieker.analysis.graph.Graph;
-
-import teetime.framework.AbstractConsumerStage;
-
-public abstract class AbstractDotWriterStage extends AbstractConsumerStage<Graph> {
-
-	public AbstractDotWriterStage() {
-		super();
-	}
-
-	@Override
-	protected final void execute(final Graph graph) {
-		DotExporter dotExporter = new DotExporter(graph, getWriter(graph));
-		dotExporter.transform();
-	}
-
-	protected abstract Writer getWriter(final Graph graph);
-
-}
diff --git a/src/main/java/kieker/analysis/graph/export/dot/DotFileWriterStage.java b/src/main/java/kieker/analysis/graph/export/dot/DotFileWriterStage.java
new file mode 100644
index 00000000..e82d1432
--- /dev/null
+++ b/src/main/java/kieker/analysis/graph/export/dot/DotFileWriterStage.java
@@ -0,0 +1,30 @@
+package kieker.analysis.graph.export.dot;
+
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+
+import kieker.analysis.graph.Graph;
+import kieker.analysis.graph.mapping.GraphMapper;
+import kieker.analysis.graph.mapping.SimpleFileNameMapper;
+
+public class DotFileWriterStage extends DotWriterStage {
+
+	public DotFileWriterStage(final GraphMapper<String> fileNameMapper) {
+		super(new GraphMapper<Writer>() {
+			@Override
+			public Writer map(final Graph graph) {
+				try {
+					return new FileWriter(fileNameMapper.map(graph));
+				} catch (IOException e) {
+					throw new IllegalArgumentException(e);
+				}
+			}
+		});
+	}
+
+	public DotFileWriterStage(final String outputDirectory) {
+		this(new SimpleFileNameMapper(outputDirectory, "dot"));
+	}
+
+}
diff --git a/src/main/java/kieker/analysis/graph/export/dot/DotWriterStage.java b/src/main/java/kieker/analysis/graph/export/dot/DotWriterStage.java
new file mode 100644
index 00000000..e9e8f447
--- /dev/null
+++ b/src/main/java/kieker/analysis/graph/export/dot/DotWriterStage.java
@@ -0,0 +1,25 @@
+package kieker.analysis.graph.export.dot;
+
+import java.io.Writer;
+
+import kieker.analysis.graph.Graph;
+import kieker.analysis.graph.mapping.GraphMapper;
+
+import teetime.framework.AbstractConsumerStage;
+
+public class DotWriterStage extends AbstractConsumerStage<Graph> {
+
+	private final GraphMapper<Writer> writerMapper;
+
+	public DotWriterStage(final GraphMapper<Writer> writerMapper) {
+		super();
+		this.writerMapper = writerMapper;
+	}
+
+	@Override
+	protected final void execute(final Graph graph) {
+		DotExporter dotExporter = new DotExporter(graph, writerMapper.map(graph));
+		dotExporter.transform();
+	}
+
+}
-- 
GitLab