diff --git a/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java b/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java index f90996ae90f9f4815772fc30321a74db8c471559..2624806999abdd538f8f05ceceb6ef65254fa2d0 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 2368b3c8e659bb06ba011365cf88ad94c029c2e6..0000000000000000000000000000000000000000 --- 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 37a206bda28713843209036f9eb2850d6449680b..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..e82d1432d0913f1d5892bd622e7788bd2f6fad00 --- /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 0000000000000000000000000000000000000000..e9e8f4470b01ca79434f59a6466818f923d27576 --- /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(); + } + +}