diff --git a/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java b/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java index 8df565964883fcbacf469affdd21c8386b031128..127fe1a372cf3fd985f89be83251b095f4c48202 100644 --- a/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java +++ b/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java @@ -17,10 +17,10 @@ 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.DotTraceGraphFileWriterStage; import kieker.analysis.trace.traversal.AggrTraceTraverserStage; import kieker.analysis.trace.traversal.TraceTraverserStage; import kieker.analysis.util.graph.Graph; -import kieker.analysis.util.graph.export.dot.DotFileWriterStage; import kieker.analysis.util.graph.export.graphml.GraphMLFileWriterStage; import kieker.common.record.IMonitoringRecord; import kieker.common.record.misc.KiekerMetadataRecord; @@ -74,33 +74,27 @@ public class TraceAnalysisConfiguration extends Configuration { String graphFilesOutputDir = "example/event monitoring log/output"; // TODO Temp hard coded TraceTraverserStage traceTraverserStage = new TraceTraverserStage(); - final Distributor<Graph> graphDistributor = new Distributor<>(new CopyByReferenceStrategy());// TODO use clone + final Distributor<Graph> graphDistributor = new Distributor<>(new CopyByReferenceStrategy()); GraphMLFileWriterStage graphMLFileWriterComposite = new GraphMLFileWriterStage(graphFilesOutputDir); - // DotTraceStyleStage dotTraceStyleStage = new DotTraceStyleStage(); - DotFileWriterStage dotFileWriterStage = new DotFileWriterStage(graphFilesOutputDir); + DotTraceGraphFileWriterStage dotTraceGraphFileWriterStage = new DotTraceGraphFileWriterStage(graphFilesOutputDir); super.connectPorts(distributor.getNewOutputPort(), traceTraverserStage.getInputPort()); super.connectPorts(traceTraverserStage.getOutputPort(), graphDistributor.getInputPort()); super.connectPorts(graphDistributor.getNewOutputPort(), graphMLFileWriterComposite.getInputPort()); - super.connectPorts(graphDistributor.getNewOutputPort(), dotFileWriterStage.getInputPort()); - // super.connectPorts(graphDistributor.getNewOutputPort(), dotTraceStyleStage.getInputPort()); - // super.connectPorts(dotTraceStyleStage.getOutputPort(), dotFileWriterStage.getInputPort()); + super.connectPorts(graphDistributor.getNewOutputPort(), dotTraceGraphFileWriterStage.getInputPort()); final Distributor<AggregatedTrace> aggregatedTraceDistributor = new Distributor<>(new CopyByReferenceStrategy()); AggrTraceTraverserStage aggrTraceTraverser = new AggrTraceTraverserStage(); - final Distributor<Graph> graphDistributor2 = new Distributor<>(new CopyByReferenceStrategy()); // TODO use clone + final Distributor<Graph> graphDistributor2 = new Distributor<>(new CopyByReferenceStrategy()); GraphMLFileWriterStage graphMLFileWriterComposite2 = new GraphMLFileWriterStage(graphFilesOutputDir); - // DotTraceStyleStage dotAggrTraceStyleStage = new DotTraceStyleStage(); - DotFileWriterStage dotFileWriterStage2 = new DotFileWriterStage(graphFilesOutputDir); + DotTraceGraphFileWriterStage dotTraceGraphFileWriterStage2 = new DotTraceGraphFileWriterStage(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(), dotFileWriterStage2.getInputPort()); - // super.connectPorts(graphDistributor2.getNewOutputPort(), dotAggrTraceStyleStage.getInputPort()); - // super.connectPorts(dotAggrTraceStyleStage.getOutputPort(), dotFileWriterStage2.getInputPort()); + super.connectPorts(graphDistributor2.getNewOutputPort(), dotTraceGraphFileWriterStage2.getInputPort()); // DependencyCreatorStage dependencyCreatorStage = new DependencyCreatorStage(); // DependencyStatisticsDecoratorStage dependencyStatisticsDecoratorStage = new DependencyStatisticsDecoratorStage(); diff --git a/src/main/java/kieker/analysis/trace/graphoutput/DotTraceGraphFileWriterStage.java b/src/main/java/kieker/analysis/trace/graphoutput/DotTraceGraphFileWriterStage.java new file mode 100644 index 0000000000000000000000000000000000000000..b77934583eb1b17b70bc6d537849d7e017c90769 --- /dev/null +++ b/src/main/java/kieker/analysis/trace/graphoutput/DotTraceGraphFileWriterStage.java @@ -0,0 +1,13 @@ +package kieker.analysis.trace.graphoutput; + +import kieker.analysis.util.graph.export.dot.DotFileWriterStage; +import kieker.analysis.util.graph.util.dot.attributes.DotNodeAttribute; + +public class DotTraceGraphFileWriterStage extends DotFileWriterStage { + + public DotTraceGraphFileWriterStage(final String outputDirectory) { + super(outputDirectory); + exportConfiguration.getDefaultNodeAttributes().put(DotNodeAttribute.SHAPE, (g -> "none")); + } + +} diff --git a/src/main/java/kieker/analysis/trace/graphoutput/DotTraceStyleStage.java b/src/main/java/kieker/analysis/trace/graphoutput/DotTraceStyleStage.java deleted file mode 100644 index c8a12123440ee9f0c6d0285a5393548f5e1effe7..0000000000000000000000000000000000000000 --- a/src/main/java/kieker/analysis/trace/graphoutput/DotTraceStyleStage.java +++ /dev/null @@ -1,22 +0,0 @@ -package kieker.analysis.trace.graphoutput; - -import kieker.analysis.util.graph.Graph; - -import teetime.stage.basic.AbstractTransformation; - -public class DotTraceStyleStage extends AbstractTransformation<Graph, Graph> { - - // private final Map<String, String> nodeStyling = new HashMap<>(); - - public DotTraceStyleStage() { - super(); - // nodeStyling.put("shape", "none"); // TODO add - } - - @Override - protected void execute(final Graph graph) { - // graph.setProperty(DotExportPropertyTokens.DEFAULT_NODE_PROPERTIES, nodeStyling); - this.getOutputPort().send(graph); - } - -} diff --git a/src/main/java/kieker/analysis/util/graph/export/dot/DotWriterStage.java b/src/main/java/kieker/analysis/util/graph/export/dot/DotWriterStage.java index ae81d57437e5c663ff22d95483a99376a77ef57d..a8f42186f9face9273a1f1a6abe89af343143c63 100644 --- a/src/main/java/kieker/analysis/util/graph/export/dot/DotWriterStage.java +++ b/src/main/java/kieker/analysis/util/graph/export/dot/DotWriterStage.java @@ -9,16 +9,25 @@ import teetime.framework.AbstractConsumerStage; public class DotWriterStage extends AbstractConsumerStage<Graph> { - private final Function<Graph, Writer> writerMapper; + protected final Function<Graph, Writer> writerMapper; + + protected final DotExportConfiguration exportConfiguration; public DotWriterStage(final Function<Graph, Writer> writerMapper) { super(); this.writerMapper = writerMapper; + this.exportConfiguration = new SimpleDotExportConfiguration(); + } + + public DotWriterStage(final Function<Graph, Writer> writerMapper, final DotExportConfiguration exportConfiguration) { + super(); + this.writerMapper = writerMapper; + this.exportConfiguration = exportConfiguration; } @Override protected final void execute(final Graph graph) { - DotExporter dotExporter = new DotExporter(graph, writerMapper.apply(graph)); + DotExporter dotExporter = new DotExporter(graph, writerMapper.apply(graph), exportConfiguration); dotExporter.transform(); }