From ccc93eefecd77dff25e25a63983b4fb22a077142 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=B6ren=20Henning?= <stu114708@informatik.uni-kiel.de>
Date: Mon, 16 May 2016 22:48:31 +0200
Subject: [PATCH] added operations statistics decoration

---
 .../OperationsStatisticsDecoratorStage.java   | 40 +++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 src/main/java/kieker/analysis/dev/OperationsStatisticsDecoratorStage.java

diff --git a/src/main/java/kieker/analysis/dev/OperationsStatisticsDecoratorStage.java b/src/main/java/kieker/analysis/dev/OperationsStatisticsDecoratorStage.java
new file mode 100644
index 00000000..8c69048b
--- /dev/null
+++ b/src/main/java/kieker/analysis/dev/OperationsStatisticsDecoratorStage.java
@@ -0,0 +1,40 @@
+package kieker.analysis.dev;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import kieker.analysis.domain.systemdependency.Component;
+import kieker.analysis.domain.systemdependency.Container;
+import kieker.analysis.domain.systemdependency.Operation;
+import kieker.analysis.domain.systemdependency.SoftwareSystem;
+import kieker.analysis.traceanalysisutil.Statistics;
+import kieker.analysis.traceanalysisutil.StatisticsUtility;
+
+import teetime.stage.basic.AbstractTransformation;
+
+public class OperationsStatisticsDecoratorStage extends AbstractTransformation<SoftwareSystem, SoftwareSystem> {
+
+	@Override
+	protected void execute(final SoftwareSystem softwareSystem) {
+
+		for (Container container : softwareSystem.getContainers()) {
+			for (Component component : container.getComponents()) {
+				for (Operation operation : component.getOperations()) {
+
+					List<Long> durations = operation.getOperationCalls().stream().map(c -> c.getDuration()).collect(Collectors.toList());
+
+					final Statistics statistics = StatisticsUtility.calculateStatistics(durations);
+
+					operation.setTotalDuration(statistics.getTotalDuration());
+					operation.setMaxDuration(statistics.getMaxDuration());
+					operation.setMinDuration(statistics.getMinDuration());
+					operation.setMeanDuration(statistics.getMeanDuration());
+					operation.setMedianDuration(statistics.getMedianDuration());
+
+				}
+			}
+		}
+
+	}
+
+}
-- 
GitLab