From 20a3e51a1d0165d0da6a521b06b03da17a9c585d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=B6ren=20Henning?= <stu114708@informatik.uni-kiel.de>
Date: Mon, 23 May 2016 15:45:16 +0200
Subject: [PATCH] added total percent values for operation calls (#37)

---
 .../java/kieker/analysis/domain/OperationCall.java  |  9 +++++++++
 .../tracediagnosis/TraceStatisticsDecorator.java    | 13 +++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/src/main/java/kieker/analysis/domain/OperationCall.java b/src/main/java/kieker/analysis/domain/OperationCall.java
index 125d7791..2869d2c1 100644
--- a/src/main/java/kieker/analysis/domain/OperationCall.java
+++ b/src/main/java/kieker/analysis/domain/OperationCall.java
@@ -29,6 +29,7 @@ public final class OperationCall extends AbstractOperationCall<OperationCall> {
 
 	private OperationCall parent;
 	private float percent;
+	private float totalPercent;
 	private long duration;
 	private long timestamp;
 
@@ -63,6 +64,14 @@ public final class OperationCall extends AbstractOperationCall<OperationCall> {
 		this.percent = percent;
 	}
 
+	public float getTotalPercent() {
+		return this.totalPercent;
+	}
+
+	public void setTotalPercent(final float percent) {
+		this.percent = totalPercent;
+	}
+
 	public long getDuration() {
 		return this.duration;
 	}
diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/TraceStatisticsDecorator.java b/src/main/java/kieker/analysis/stage/tracediagnosis/TraceStatisticsDecorator.java
index 21bbd28e..d1828d9c 100644
--- a/src/main/java/kieker/analysis/stage/tracediagnosis/TraceStatisticsDecorator.java
+++ b/src/main/java/kieker/analysis/stage/tracediagnosis/TraceStatisticsDecorator.java
@@ -34,6 +34,7 @@ public final class TraceStatisticsDecorator extends AbstractTransformation<Trace
 		addTraceDepth(trace.getRootOperationCall());
 		addTraceSize(trace.getRootOperationCall());
 		addPercentValues(trace.getRootOperationCall(), trace.getRootOperationCall().getDuration());
+		addTotalPercentValues(trace.getRootOperationCall(), trace.getRootOperationCall().getDuration());
 
 		super.getOutputPort().send(trace);
 	}
@@ -81,4 +82,16 @@ public final class TraceStatisticsDecorator extends AbstractTransformation<Trace
 			addPercentValues(child, call.getDuration());
 		}
 	}
+
+	private static void addTotalPercentValues(final OperationCall call, final long rootDuration) {
+		if (call.getParent() == null) {
+			call.setPercent(100.0f);
+		} else {
+			call.setPercent((100.0f * call.getDuration()) / rootDuration);
+		}
+
+		for (final OperationCall child : call.getChildren()) {
+			addPercentValues(child, rootDuration);
+		}
+	}
 }
-- 
GitLab