From 1f02d81f1ed6108e861e6a4f7f2bcc7918f005f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Henning?= <stu114708@informatik.uni-kiel.de> Date: Tue, 31 May 2016 15:57:11 +0200 Subject: [PATCH] improve vertex mappers --- .../DotComponentsDependencyExportStage.java | 48 +++++++++++++------ .../DotContainersDependencyExportStage.java | 48 +++++++++++++------ .../DotOperationsDependencyExportStage.java | 48 +++++++++++++------ 3 files changed, 102 insertions(+), 42 deletions(-) diff --git a/src/main/java/kieker/analysis/dev/dependencygraphs/DotComponentsDependencyExportStage.java b/src/main/java/kieker/analysis/dev/dependencygraphs/DotComponentsDependencyExportStage.java index e8f40c97..cde67826 100644 --- a/src/main/java/kieker/analysis/dev/dependencygraphs/DotComponentsDependencyExportStage.java +++ b/src/main/java/kieker/analysis/dev/dependencygraphs/DotComponentsDependencyExportStage.java @@ -1,6 +1,9 @@ package kieker.analysis.dev.dependencygraphs; +import java.util.ArrayList; +import java.util.List; import java.util.function.Function; +import java.util.stream.Collectors; import kieker.analysis.util.graph.Vertex; import kieker.analysis.util.graph.export.dot.DotFileWriterStage; @@ -23,30 +26,47 @@ public class DotComponentsDependencyExportStage extends DotFileWriterStage { // this.exportConfiguration.addNodeAttribute(DotNodeAttribute.LABEL, new PropertyMapper("calls")); } - // TODO Consider if nested class is useful - + // TODO Make public and not nested, join with the other vertex mappers private class ComponentVertexMapper implements Function<Vertex, String> { @Override public String apply(final Vertex vertex) { - // TODO missing temporal unit final StringBuilder statistics = new StringBuilder(); statistics.append("<<deployment component>>\\n"); statistics.append(vertex.getProperty("Name").toString()); - statistics.append("\\n min: "); - statistics.append(vertex.getProperty("MinDuration").toString()); - statistics.append("xs, max: "); - statistics.append(vertex.getProperty("MaxDuration").toString()); - statistics.append("xs, total: "); - statistics.append(vertex.getProperty("TotalDuration").toString()); - statistics.append("xs, \\n avg: "); - statistics.append(vertex.getProperty("MeanDuration").toString()); - statistics.append("xs, median: "); - statistics.append(vertex.getProperty("MedianDuration").toString()); - statistics.append("xs"); + statistics.append("\\n"); + statistics.append(generateStatistics(vertex)); return statistics.toString(); } + private String generateStatistics(final Vertex vertex) { + final String temporalUnit = "xs"; // TODO temp + final List<String> statisticStrings = new ArrayList<>(5); + if (vertex.getProperty("MinDuration") != null) { + statisticStrings.add("min: " + vertex.getProperty("MinDuration").toString() + temporalUnit); + } + if (vertex.getProperty("MaxDuration") != null) { + statisticStrings.add("max: " + vertex.getProperty("MaxDuration").toString() + temporalUnit); + } + if (vertex.getProperty("TotalDuration") != null) { + statisticStrings.add("total: " + vertex.getProperty("TotalDuration").toString() + temporalUnit); + } + if (vertex.getProperty("MeanDuration") != null) { + statisticStrings.add("avg: " + vertex.getProperty("MeanDuration").toString() + temporalUnit); + } + if (vertex.getProperty("MedianDuration") != null) { + statisticStrings.add("med: " + vertex.getProperty("MedianDuration").toString() + temporalUnit); + } + + // If there are more than 3 statistics elements add a line break after the 3rd last + if (statisticStrings.size() > 3) { + final int thirdLast = statisticStrings.size() - 3; + statisticStrings.set(thirdLast, statisticStrings.get(thirdLast).concat("\\n")); + } + + return statisticStrings.stream().collect(Collectors.joining(", ")); + } + } private class ClusterMapper implements Function<Vertex, String> { diff --git a/src/main/java/kieker/analysis/dev/dependencygraphs/DotContainersDependencyExportStage.java b/src/main/java/kieker/analysis/dev/dependencygraphs/DotContainersDependencyExportStage.java index b7dd6439..c64c1bc3 100644 --- a/src/main/java/kieker/analysis/dev/dependencygraphs/DotContainersDependencyExportStage.java +++ b/src/main/java/kieker/analysis/dev/dependencygraphs/DotContainersDependencyExportStage.java @@ -1,6 +1,9 @@ package kieker.analysis.dev.dependencygraphs; +import java.util.ArrayList; +import java.util.List; import java.util.function.Function; +import java.util.stream.Collectors; import kieker.analysis.util.graph.Vertex; import kieker.analysis.util.graph.export.dot.DotFileWriterStage; @@ -23,30 +26,47 @@ public class DotContainersDependencyExportStage extends DotFileWriterStage { // this.exportConfiguration.addNodeAttribute(DotNodeAttribute.LABEL, new PropertyMapper("calls")); } - // TODO Consider if nested class is useful - + // TODO Make public and not nested, join with the other vertex mappers private class ContainerVertexMapper implements Function<Vertex, String> { @Override public String apply(final Vertex vertex) { - // TODO missing temporal unit final StringBuilder statistics = new StringBuilder(); statistics.append("<<execution container>>\\n"); statistics.append(vertex.getProperty("Name").toString()); - statistics.append("\\n min: "); - statistics.append(vertex.getProperty("MinDuration").toString()); - statistics.append("xs, max: "); - statistics.append(vertex.getProperty("MaxDuration").toString()); - statistics.append("xs, total: "); - statistics.append(vertex.getProperty("TotalDuration").toString()); - statistics.append("xs, \\n avg: "); - statistics.append(vertex.getProperty("MeanDuration").toString()); - statistics.append("xs, median: "); - statistics.append(vertex.getProperty("MedianDuration").toString()); - statistics.append("xs"); + statistics.append("\\n"); + statistics.append(generateStatistics(vertex)); return statistics.toString(); } + private String generateStatistics(final Vertex vertex) { + final String temporalUnit = "xs"; // TODO temp + final List<String> statisticStrings = new ArrayList<>(5); + if (vertex.getProperty("MinDuration") != null) { + statisticStrings.add("min: " + vertex.getProperty("MinDuration").toString() + temporalUnit); + } + if (vertex.getProperty("MaxDuration") != null) { + statisticStrings.add("max: " + vertex.getProperty("MaxDuration").toString() + temporalUnit); + } + if (vertex.getProperty("TotalDuration") != null) { + statisticStrings.add("total: " + vertex.getProperty("TotalDuration").toString() + temporalUnit); + } + if (vertex.getProperty("MeanDuration") != null) { + statisticStrings.add("avg: " + vertex.getProperty("MeanDuration").toString() + temporalUnit); + } + if (vertex.getProperty("MedianDuration") != null) { + statisticStrings.add("med: " + vertex.getProperty("MedianDuration").toString() + temporalUnit); + } + + // If there are more than 3 statistics elements add a line break after the 3rd last + if (statisticStrings.size() > 3) { + final int thirdLast = statisticStrings.size() - 3; + statisticStrings.set(thirdLast, statisticStrings.get(thirdLast).concat("\\n")); + } + + return statisticStrings.stream().collect(Collectors.joining(", ")); + } + } // Not used in this class diff --git a/src/main/java/kieker/analysis/dev/dependencygraphs/DotOperationsDependencyExportStage.java b/src/main/java/kieker/analysis/dev/dependencygraphs/DotOperationsDependencyExportStage.java index 323a8a45..b5b8ebc1 100644 --- a/src/main/java/kieker/analysis/dev/dependencygraphs/DotOperationsDependencyExportStage.java +++ b/src/main/java/kieker/analysis/dev/dependencygraphs/DotOperationsDependencyExportStage.java @@ -1,6 +1,9 @@ package kieker.analysis.dev.dependencygraphs; +import java.util.ArrayList; +import java.util.List; import java.util.function.Function; +import java.util.stream.Collectors; import kieker.analysis.util.graph.Vertex; import kieker.analysis.util.graph.export.dot.DotFileWriterStage; @@ -23,29 +26,46 @@ public class DotOperationsDependencyExportStage extends DotFileWriterStage { // this.exportConfiguration.addNodeAttribute(DotNodeAttribute.LABEL, new PropertyMapper("calls")); } - // TODO Consider if nested class is useful - + // TODO Make public and not nested, join with the other vertex mappers private class OperationVertexMapper implements Function<Vertex, String> { @Override public String apply(final Vertex vertex) { - // TODO missing temporal unit final StringBuilder statistics = new StringBuilder(); statistics.append(vertex.getProperty("Name").toString()); - statistics.append("\\n min: "); - statistics.append(vertex.getProperty("MinDuration").toString()); - statistics.append("xs, max: "); - statistics.append(vertex.getProperty("MaxDuration").toString()); - statistics.append("xs, total: "); - statistics.append(vertex.getProperty("TotalDuration").toString()); - statistics.append("xs, \\n avg: "); - statistics.append(vertex.getProperty("MeanDuration").toString()); - statistics.append("xs, median: "); - statistics.append(vertex.getProperty("MedianDuration").toString()); - statistics.append("xs"); + statistics.append("\\n"); + statistics.append(generateStatistics(vertex)); return statistics.toString(); } + private String generateStatistics(final Vertex vertex) { + final String temporalUnit = "xs"; // TODO temp + final List<String> statisticStrings = new ArrayList<>(5); + if (vertex.getProperty("MinDuration") != null) { + statisticStrings.add("min: " + vertex.getProperty("MinDuration").toString() + temporalUnit); + } + if (vertex.getProperty("MaxDuration") != null) { + statisticStrings.add("max: " + vertex.getProperty("MaxDuration").toString() + temporalUnit); + } + if (vertex.getProperty("TotalDuration") != null) { + statisticStrings.add("total: " + vertex.getProperty("TotalDuration").toString() + temporalUnit); + } + if (vertex.getProperty("MeanDuration") != null) { + statisticStrings.add("avg: " + vertex.getProperty("MeanDuration").toString() + temporalUnit); + } + if (vertex.getProperty("MedianDuration") != null) { + statisticStrings.add("med: " + vertex.getProperty("MedianDuration").toString() + temporalUnit); + } + + // If there are more than 3 statistics elements add a line break after the 3rd last + if (statisticStrings.size() > 3) { + final int thirdLast = statisticStrings.size() - 3; + statisticStrings.set(thirdLast, statisticStrings.get(thirdLast).concat("\\n")); + } + + return statisticStrings.stream().collect(Collectors.joining(", ")); + } + } private class ClusterMapper implements Function<Vertex, String> { -- GitLab