From aea9621fbe08f27c62bd5e4327f31008dc412080 Mon Sep 17 00:00:00 2001
From: Nils Christian Ehmke <nie@informatik.uni-kiel.de>
Date: Wed, 17 Dec 2014 16:00:56 +0100
Subject: [PATCH] Removed some logic from the views

---
 ...gregatedFailedTracesSubViewController.java | 12 ++++++++-
 .../AggregatedTracesSubViewController.java    | 11 +++++++-
 .../FailedTracesSubViewController.java        | 12 ++++++++-
 ...ningAggregatedTracesSubViewController.java | 11 +++++++-
 ...lureContainingTracesSubViewController.java | 12 ++++++++-
 .../controller/TracesSubViewController.java   | 12 ++++++++-
 .../gui/model/AbstractProxyDataModel.java     | 26 +++++++++++++++++++
 src/main/java/kieker/gui/model/IModel.java    | 14 ++++++++++
 .../gui/view/AggregatedTracesSubView.java     | 24 +++++------------
 src/main/java/kieker/gui/view/MainView.java   |  2 ++
 .../java/kieker/gui/view/TracesSubView.java   | 23 +++-------------
 11 files changed, 116 insertions(+), 43 deletions(-)
 create mode 100644 src/main/java/kieker/gui/model/AbstractProxyDataModel.java
 create mode 100644 src/main/java/kieker/gui/model/IModel.java

diff --git a/src/main/java/kieker/gui/controller/AggregatedFailedTracesSubViewController.java b/src/main/java/kieker/gui/controller/AggregatedFailedTracesSubViewController.java
index 7305d60e..f2e475a2 100644
--- a/src/main/java/kieker/gui/controller/AggregatedFailedTracesSubViewController.java
+++ b/src/main/java/kieker/gui/controller/AggregatedFailedTracesSubViewController.java
@@ -16,6 +16,9 @@
 
 package kieker.gui.controller;
 
+import java.util.List;
+
+import kieker.gui.model.AbstractProxyDataModel;
 import kieker.gui.model.AggregatedTracesSubViewModel;
 import kieker.gui.model.DataModel;
 import kieker.gui.model.PropertiesModel;
@@ -38,7 +41,14 @@ public final class AggregatedFailedTracesSubViewController implements SelectionL
 
 	public AggregatedFailedTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new AggregatedTracesSubViewModel();
-		this.view = new AggregatedTracesSubView(AggregatedTracesSubView.Type.SHOW_JUST_FAILED_TRACES, dataModel, this.model, propertiesModel, this);
+		this.view = new AggregatedTracesSubView(new AbstractProxyDataModel<AggregatedExecution>(dataModel) {
+
+			@Override
+			public List<AggregatedExecution> getContent() {
+				return super.dataModel.getFailedAggregatedTracesCopy();
+			}
+
+		}, this.model, propertiesModel, this);
 	}
 
 	@Override
diff --git a/src/main/java/kieker/gui/controller/AggregatedTracesSubViewController.java b/src/main/java/kieker/gui/controller/AggregatedTracesSubViewController.java
index a6addc51..111e16e8 100644
--- a/src/main/java/kieker/gui/controller/AggregatedTracesSubViewController.java
+++ b/src/main/java/kieker/gui/controller/AggregatedTracesSubViewController.java
@@ -16,6 +16,9 @@
 
 package kieker.gui.controller;
 
+import java.util.List;
+
+import kieker.gui.model.AbstractProxyDataModel;
 import kieker.gui.model.AggregatedTracesSubViewModel;
 import kieker.gui.model.DataModel;
 import kieker.gui.model.PropertiesModel;
@@ -38,7 +41,13 @@ public final class AggregatedTracesSubViewController implements SelectionListene
 
 	public AggregatedTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new AggregatedTracesSubViewModel();
-		this.view = new AggregatedTracesSubView(AggregatedTracesSubView.Type.SHOW_ALL_TRACES, dataModel, this.model, propertiesModel, this);
+		this.view = new AggregatedTracesSubView(new AbstractProxyDataModel<AggregatedExecution>(dataModel) {
+
+			@Override
+			public List<AggregatedExecution> getContent() {
+				return super.dataModel.getAggregatedTracesCopy();
+			}
+		}, this.model, propertiesModel, this);
 	}
 
 	@Override
diff --git a/src/main/java/kieker/gui/controller/FailedTracesSubViewController.java b/src/main/java/kieker/gui/controller/FailedTracesSubViewController.java
index 6593bb65..efd3588f 100644
--- a/src/main/java/kieker/gui/controller/FailedTracesSubViewController.java
+++ b/src/main/java/kieker/gui/controller/FailedTracesSubViewController.java
@@ -16,6 +16,9 @@
 
 package kieker.gui.controller;
 
+import java.util.List;
+
+import kieker.gui.model.AbstractProxyDataModel;
 import kieker.gui.model.DataModel;
 import kieker.gui.model.PropertiesModel;
 import kieker.gui.model.TracesSubViewModel;
@@ -38,7 +41,14 @@ public final class FailedTracesSubViewController implements SelectionListener, I
 
 	public FailedTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new TracesSubViewModel();
-		this.view = new TracesSubView(TracesSubView.Type.SHOW_JUST_FAILED_TRACES, dataModel, this.model, propertiesModel, this);
+		this.view = new TracesSubView(new AbstractProxyDataModel<Execution>(dataModel) {
+
+			@Override
+			public final List<Execution> getContent() {
+				return this.dataModel.getFailedTracesCopy();
+			}
+
+		}, this.model, propertiesModel, this);
 	}
 
 	@Override
diff --git a/src/main/java/kieker/gui/controller/FailureContainingAggregatedTracesSubViewController.java b/src/main/java/kieker/gui/controller/FailureContainingAggregatedTracesSubViewController.java
index c46401d3..af999e30 100644
--- a/src/main/java/kieker/gui/controller/FailureContainingAggregatedTracesSubViewController.java
+++ b/src/main/java/kieker/gui/controller/FailureContainingAggregatedTracesSubViewController.java
@@ -16,6 +16,9 @@
 
 package kieker.gui.controller;
 
+import java.util.List;
+
+import kieker.gui.model.AbstractProxyDataModel;
 import kieker.gui.model.AggregatedTracesSubViewModel;
 import kieker.gui.model.DataModel;
 import kieker.gui.model.PropertiesModel;
@@ -38,7 +41,13 @@ public final class FailureContainingAggregatedTracesSubViewController implements
 
 	public FailureContainingAggregatedTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new AggregatedTracesSubViewModel();
-		this.view = new AggregatedTracesSubView(AggregatedTracesSubView.Type.SHOW_JUST_FAILURE_CONTAINING_TRACES, dataModel, this.model, propertiesModel, this);
+		this.view = new AggregatedTracesSubView(new AbstractProxyDataModel<AggregatedExecution>(dataModel) {
+
+			@Override
+			public List<AggregatedExecution> getContent() {
+				return super.dataModel.getFailureContainingAggregatedTracesCopy();
+			}
+		}, this.model, propertiesModel, this);
 	}
 
 	@Override
diff --git a/src/main/java/kieker/gui/controller/FailureContainingTracesSubViewController.java b/src/main/java/kieker/gui/controller/FailureContainingTracesSubViewController.java
index ef4e4272..3f8b340b 100644
--- a/src/main/java/kieker/gui/controller/FailureContainingTracesSubViewController.java
+++ b/src/main/java/kieker/gui/controller/FailureContainingTracesSubViewController.java
@@ -16,6 +16,9 @@
 
 package kieker.gui.controller;
 
+import java.util.List;
+
+import kieker.gui.model.AbstractProxyDataModel;
 import kieker.gui.model.DataModel;
 import kieker.gui.model.PropertiesModel;
 import kieker.gui.model.TracesSubViewModel;
@@ -38,7 +41,14 @@ public final class FailureContainingTracesSubViewController implements Selection
 
 	public FailureContainingTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new TracesSubViewModel();
-		this.view = new TracesSubView(TracesSubView.Type.SHOW_JUST_FAILURE_CONTAINING_TRACES, dataModel, this.model, propertiesModel, this);
+		this.view = new TracesSubView(new AbstractProxyDataModel<Execution>(dataModel) {
+
+			@Override
+			public final List<Execution> getContent() {
+				return this.dataModel.getFailureContainingTracesCopy();
+			}
+
+		}, this.model, propertiesModel, this);
 	}
 
 	@Override
diff --git a/src/main/java/kieker/gui/controller/TracesSubViewController.java b/src/main/java/kieker/gui/controller/TracesSubViewController.java
index a1e50579..dda0c8af 100644
--- a/src/main/java/kieker/gui/controller/TracesSubViewController.java
+++ b/src/main/java/kieker/gui/controller/TracesSubViewController.java
@@ -16,6 +16,9 @@
 
 package kieker.gui.controller;
 
+import java.util.List;
+
+import kieker.gui.model.AbstractProxyDataModel;
 import kieker.gui.model.DataModel;
 import kieker.gui.model.PropertiesModel;
 import kieker.gui.model.TracesSubViewModel;
@@ -38,7 +41,14 @@ public final class TracesSubViewController implements SelectionListener, ISubCon
 
 	public TracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new TracesSubViewModel();
-		this.view = new TracesSubView(TracesSubView.Type.SHOW_ALL_TRACES, dataModel, this.model, propertiesModel, this);
+		this.view = new TracesSubView(new AbstractProxyDataModel<Execution>(dataModel) {
+
+			@Override
+			public final List<Execution> getContent() {
+				return this.dataModel.getTracesCopy();
+			}
+
+		}, this.model, propertiesModel, this);
 	}
 
 	@Override
diff --git a/src/main/java/kieker/gui/model/AbstractProxyDataModel.java b/src/main/java/kieker/gui/model/AbstractProxyDataModel.java
new file mode 100644
index 00000000..90a15b9c
--- /dev/null
+++ b/src/main/java/kieker/gui/model/AbstractProxyDataModel.java
@@ -0,0 +1,26 @@
+package kieker.gui.model;
+
+import java.util.Observable;
+import java.util.Observer;
+
+public abstract class AbstractProxyDataModel<T> extends Observable implements IModel<T>, Observer {
+
+	protected final DataModel dataModel;
+
+	public AbstractProxyDataModel(final DataModel dataModel) {
+		this.dataModel = dataModel;
+		this.dataModel.addObserver(this);
+	}
+
+	@Override
+	public final void update(final Observable o, final Object arg) {
+		this.setChanged();
+		this.notifyObservers(arg);
+	}
+
+	@Override
+	public final String getShortTimeUnit() {
+		return this.dataModel.getShortTimeUnit();
+	}
+
+}
diff --git a/src/main/java/kieker/gui/model/IModel.java b/src/main/java/kieker/gui/model/IModel.java
new file mode 100644
index 00000000..2a5370f6
--- /dev/null
+++ b/src/main/java/kieker/gui/model/IModel.java
@@ -0,0 +1,14 @@
+package kieker.gui.model;
+
+import java.util.List;
+import java.util.Observer;
+
+public interface IModel<T> {
+
+	public List<T> getContent();
+
+	public String getShortTimeUnit();
+
+	public void addObserver(Observer observer);
+
+}
diff --git a/src/main/java/kieker/gui/view/AggregatedTracesSubView.java b/src/main/java/kieker/gui/view/AggregatedTracesSubView.java
index 6b12eebc..a4a08f2f 100644
--- a/src/main/java/kieker/gui/view/AggregatedTracesSubView.java
+++ b/src/main/java/kieker/gui/view/AggregatedTracesSubView.java
@@ -21,7 +21,7 @@ import java.util.Observable;
 import java.util.Observer;
 
 import kieker.gui.model.AggregatedTracesSubViewModel;
-import kieker.gui.model.DataModel;
+import kieker.gui.model.IModel;
 import kieker.gui.model.PropertiesModel;
 import kieker.gui.model.domain.AggregatedExecution;
 import kieker.gui.view.util.AggregatedExecutionAvgDurationComparator;
@@ -54,7 +54,7 @@ public class AggregatedTracesSubView implements Observer, ISubView {
 
 	private final AggregatedTracesSubViewModel aggregatedTracesSubViewModel;
 	private final SelectionListener controller;
-	private final DataModel model;
+	private final IModel<AggregatedExecution> model;
 	private Composite composite;
 	private Tree tree;
 	private Composite detailComposite;
@@ -71,15 +71,13 @@ public class AggregatedTracesSubView implements Observer, ISubView {
 	private Label lblFailed;
 	private final PropertiesModel propertiesModel;
 	private Label lblTotalDurationDisplay;
-	private final Type type;
 
-	public AggregatedTracesSubView(final Type type, final DataModel model, final AggregatedTracesSubViewModel aggregatedTracesSubViewModel, final PropertiesModel propertiesModel,
+	public AggregatedTracesSubView(final IModel<AggregatedExecution> model, final AggregatedTracesSubViewModel aggregatedTracesSubViewModel, final PropertiesModel propertiesModel,
 			final SelectionListener controller) {
 		this.controller = controller;
 		this.model = model;
 		this.propertiesModel = propertiesModel;
 		this.aggregatedTracesSubViewModel = aggregatedTracesSubViewModel;
-		this.type = type;
 
 		model.addObserver(this);
 		aggregatedTracesSubViewModel.addObserver(this);
@@ -260,14 +258,8 @@ public class AggregatedTracesSubView implements Observer, ISubView {
 	}
 
 	private void updateTree() {
-		final List<AggregatedExecution> records;
-		if (this.type == Type.SHOW_JUST_FAILED_TRACES) {
-			records = this.model.getFailedAggregatedTracesCopy();
-		} else if (this.type == Type.SHOW_JUST_FAILURE_CONTAINING_TRACES) {
-			records = this.model.getFailureContainingAggregatedTracesCopy();
-		} else {
-			records = this.model.getAggregatedTracesCopy();
-		}
+		final List<AggregatedExecution> records = this.model.getContent();
+
 		this.tree.setData(records);
 		this.tree.setItemCount(records.size());
 
@@ -356,7 +348,7 @@ public class AggregatedTracesSubView implements Observer, ISubView {
 				item.setText(new String[] { executionEntry.getContainer(), componentName, operationString, "", minDuration, avgDuration, maxDuration, totalDuration });
 			} else {
 				item.setText(new String[] { executionEntry.getContainer(), componentName, operationString, Integer.toString(executionEntry.getCalls()), minDuration, avgDuration,
-						maxDuration, totalDuration });
+					maxDuration, totalDuration });
 			}
 
 			if (executionEntry.isFailed()) {
@@ -370,8 +362,4 @@ public class AggregatedTracesSubView implements Observer, ISubView {
 
 	}
 
-	public enum Type {
-		SHOW_ALL_TRACES, SHOW_JUST_FAILED_TRACES, SHOW_JUST_FAILURE_CONTAINING_TRACES
-	}
-
 }
diff --git a/src/main/java/kieker/gui/view/MainView.java b/src/main/java/kieker/gui/view/MainView.java
index 5a24def9..493ad1ec 100644
--- a/src/main/java/kieker/gui/view/MainView.java
+++ b/src/main/java/kieker/gui/view/MainView.java
@@ -94,6 +94,8 @@ public class MainView implements Observer {
 		this.shell.open();
 		this.shell.layout();
 
+		this.dataModel.loadMonitoringLogFromFS("example/kieker-20141217-134719867-UTC-SE-Nils-Ehmke-KIEKER");
+
 		while (!this.shell.isDisposed()) {
 			if (!display.readAndDispatch()) {
 				display.sleep();
diff --git a/src/main/java/kieker/gui/view/TracesSubView.java b/src/main/java/kieker/gui/view/TracesSubView.java
index 6183c75d..34c5a6fb 100644
--- a/src/main/java/kieker/gui/view/TracesSubView.java
+++ b/src/main/java/kieker/gui/view/TracesSubView.java
@@ -20,7 +20,7 @@ import java.util.List;
 import java.util.Observable;
 import java.util.Observer;
 
-import kieker.gui.model.DataModel;
+import kieker.gui.model.IModel;
 import kieker.gui.model.PropertiesModel;
 import kieker.gui.model.TracesSubViewModel;
 import kieker.gui.model.domain.Execution;
@@ -49,7 +49,7 @@ import org.eclipse.wb.swt.SWTResourceManager;
 
 public class TracesSubView implements Observer, ISubView {
 
-	private final DataModel model;
+	private final IModel<Execution> model;
 	private final TracesSubViewModel tracesSubViewModel;
 	private final SelectionListener controller;
 	private Composite composite;
@@ -65,10 +65,8 @@ public class TracesSubView implements Observer, ISubView {
 	private Label lblExecutionContainerDisplay;
 	private Label lblFailed;
 	private final PropertiesModel propertiesModel;
-	private final Type type;
 
-	public TracesSubView(final Type type, final DataModel model, final TracesSubViewModel tracesSubViewModel, final PropertiesModel propertiesModel,
-			final SelectionListener controller) {
+	public TracesSubView(final IModel<Execution> model, final TracesSubViewModel tracesSubViewModel, final PropertiesModel propertiesModel, final SelectionListener controller) {
 		this.model = model;
 		this.propertiesModel = propertiesModel;
 		this.tracesSubViewModel = tracesSubViewModel;
@@ -77,8 +75,6 @@ public class TracesSubView implements Observer, ISubView {
 		model.addObserver(this);
 		tracesSubViewModel.addObserver(this);
 		propertiesModel.addObserver(this);
-
-		this.type = type;
 	}
 
 	/**
@@ -226,14 +222,7 @@ public class TracesSubView implements Observer, ISubView {
 	}
 
 	private void updateTree() {
-		final List<Execution> records;
-		if (this.type == Type.SHOW_JUST_FAILED_TRACES) {
-			records = this.model.getFailedTracesCopy();
-		} else if (this.type == Type.SHOW_JUST_FAILURE_CONTAINING_TRACES) {
-			records = this.model.getFailureContainingTracesCopy();
-		} else {
-			records = this.model.getTracesCopy();
-		}
+		final List<Execution> records = this.model.getContent();
 
 		this.tree.setData(records);
 		this.tree.setItemCount(records.size());
@@ -324,8 +313,4 @@ public class TracesSubView implements Observer, ISubView {
 		}
 	}
 
-	public enum Type {
-		SHOW_ALL_TRACES, SHOW_JUST_FAILED_TRACES, SHOW_JUST_FAILURE_CONTAINING_TRACES
-	}
-
 }
-- 
GitLab