From 3f69df0500cfd7e1a4e60f3c3a5d0cf3171b60af Mon Sep 17 00:00:00 2001
From: Nils Christian Ehmke <nie@informatik.uni-kiel.de>
Date: Tue, 9 Dec 2014 15:53:58 +0100
Subject: [PATCH] Added naive implementation of the calculation for the average
 value

---
 .../gui/model/domain/AggregatedExecutionEntry.java    | 10 ++++++++++
 .../gui/model/importer/filter/TraceAggregator.java    |  1 +
 .../gui/view/AggregatedTraceDetailComposite.java      | 11 +++++++++++
 3 files changed, 22 insertions(+)

diff --git a/src/main/java/kieker/gui/model/domain/AggregatedExecutionEntry.java b/src/main/java/kieker/gui/model/domain/AggregatedExecutionEntry.java
index 391c0339..7197b267 100644
--- a/src/main/java/kieker/gui/model/domain/AggregatedExecutionEntry.java
+++ b/src/main/java/kieker/gui/model/domain/AggregatedExecutionEntry.java
@@ -28,6 +28,7 @@ public final class AggregatedExecutionEntry {
 	private final String operation;
 	private long minDuration;
 	private long maxDuration;
+	private long avgDuration;
 	private int calls;
 
 	public AggregatedExecutionEntry(final ExecutionEntry execEntry) {
@@ -75,6 +76,11 @@ public final class AggregatedExecutionEntry {
 		this.calls++;
 		this.minDuration = Math.min(this.minDuration, executionEntry.getDuration());
 		this.maxDuration = Math.max(this.maxDuration, executionEntry.getDuration());
+		this.avgDuration += executionEntry.getDuration();
+	}
+
+	public void recalculateValues() {
+		this.avgDuration /= this.calls;
 	}
 
 	public long getMinDuration() {
@@ -85,6 +91,10 @@ public final class AggregatedExecutionEntry {
 		return this.maxDuration;
 	}
 
+	public long getAvgDuration() {
+		return this.avgDuration;
+	}
+
 	public int getCalls() {
 		return this.calls;
 	}
diff --git a/src/main/java/kieker/gui/model/importer/filter/TraceAggregator.java b/src/main/java/kieker/gui/model/importer/filter/TraceAggregator.java
index 35739393..7d1cb256 100644
--- a/src/main/java/kieker/gui/model/importer/filter/TraceAggregator.java
+++ b/src/main/java/kieker/gui/model/importer/filter/TraceAggregator.java
@@ -46,6 +46,7 @@ public final class TraceAggregator extends AbstractConsumerStage<ExecutionEntry>
 	@Override
 	public void onTerminating() throws Exception {
 		for (final AggregatedExecutionEntry aggregatedExecutionEntry : this.aggregationMap.values()) {
+			aggregatedExecutionEntry.recalculateValues();
 			this.outputPort.send(aggregatedExecutionEntry);
 		}
 		super.onTerminating();
diff --git a/src/main/java/kieker/gui/view/AggregatedTraceDetailComposite.java b/src/main/java/kieker/gui/view/AggregatedTraceDetailComposite.java
index f0e8bc7a..82733f46 100644
--- a/src/main/java/kieker/gui/view/AggregatedTraceDetailComposite.java
+++ b/src/main/java/kieker/gui/view/AggregatedTraceDetailComposite.java
@@ -21,6 +21,8 @@ public final class AggregatedTraceDetailComposite extends Composite {
 	private final Label lblStackDepthDisplay;
 	private final Label lblMinimalDurationDisplay;
 	private final Label lblMaximalDurationDisplay;
+	private final Label lblAverageDuration;
+	private final Label lblAverageDurationDisplay;
 
 	public AggregatedTraceDetailComposite(final Composite parent, final int style) {
 		super(parent, style);
@@ -87,6 +89,14 @@ public final class AggregatedTraceDetailComposite extends Composite {
 		this.lblMinimalDurationDisplay.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
 		this.lblMinimalDurationDisplay.setText("N/A");
 
+		this.lblAverageDuration = new Label(this, SWT.NONE);
+		this.lblAverageDuration.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
+		this.lblAverageDuration.setText("Average Duration:");
+
+		this.lblAverageDurationDisplay = new Label(this, SWT.NONE);
+		this.lblAverageDurationDisplay.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
+		this.lblAverageDurationDisplay.setText("N/A");
+
 		final Label lblMaximalDuration = new Label(this, SWT.NONE);
 		lblMaximalDuration.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
 		lblMaximalDuration.setText("Maximal Duration:");
@@ -105,6 +115,7 @@ public final class AggregatedTraceDetailComposite extends Composite {
 
 		this.lblMinimalDurationDisplay.setText(Long.toString(trace.getMinDuration()));
 		this.lblMaximalDurationDisplay.setText(Long.toString(trace.getMaxDuration()));
+		this.lblAverageDurationDisplay.setText(Long.toString(trace.getAvgDuration()));
 
 		if (trace.isFailed()) {
 			this.lblFailedDisplay.setText("Yes (" + trace.getFailedCause() + ")");
-- 
GitLab