From b1eb18b488bc669bb00a34210bf5af880c448ede Mon Sep 17 00:00:00 2001
From: Nils Christian Ehmke <nie@informatik.uni-kiel.de>
Date: Wed, 17 Dec 2014 16:35:30 +0100
Subject: [PATCH] Refactoring

---
 ...Model.java => AbstractDataModelProxy.java} |  4 +-
 .../AbstractAggregatedTracesController.java   | 42 ++++++++++++++++++
 ...gregatedFailedTracesSubViewController.java | 44 +++++++------------
 .../AggregatedTracesSubViewController.java    | 42 ++++++++----------
 ...ningAggregatedTracesSubViewController.java | 43 +++++++-----------
 .../gui/subview/records/RecordsSubView.java   |  8 ++--
 .../records/RecordsSubViewController.java     | 21 ++++++++-
 .../traces/FailedTracesSubViewController.java |  4 +-
 ...lureContainingTracesSubViewController.java |  4 +-
 .../traces/TracesSubViewController.java       |  4 +-
 10 files changed, 124 insertions(+), 92 deletions(-)
 rename src/main/java/kieker/gui/common/{AbstractProxyDataModel.java => AbstractDataModelProxy.java} (78%)
 create mode 100644 src/main/java/kieker/gui/subview/aggregatedtraces/AbstractAggregatedTracesController.java

diff --git a/src/main/java/kieker/gui/common/AbstractProxyDataModel.java b/src/main/java/kieker/gui/common/AbstractDataModelProxy.java
similarity index 78%
rename from src/main/java/kieker/gui/common/AbstractProxyDataModel.java
rename to src/main/java/kieker/gui/common/AbstractDataModelProxy.java
index 73185a11..cbbcc5b3 100644
--- a/src/main/java/kieker/gui/common/AbstractProxyDataModel.java
+++ b/src/main/java/kieker/gui/common/AbstractDataModelProxy.java
@@ -3,11 +3,11 @@ package kieker.gui.common;
 import java.util.Observable;
 import java.util.Observer;
 
-public abstract class AbstractProxyDataModel<T> extends Observable implements IModel<T>, Observer {
+public abstract class AbstractDataModelProxy<T> extends Observable implements IModel<T>, Observer {
 
 	protected final DataModel dataModel;
 
-	public AbstractProxyDataModel(final DataModel dataModel) {
+	public AbstractDataModelProxy(final DataModel dataModel) {
 		this.dataModel = dataModel;
 		this.dataModel.addObserver(this);
 	}
diff --git a/src/main/java/kieker/gui/subview/aggregatedtraces/AbstractAggregatedTracesController.java b/src/main/java/kieker/gui/subview/aggregatedtraces/AbstractAggregatedTracesController.java
new file mode 100644
index 00000000..41f5a7ca
--- /dev/null
+++ b/src/main/java/kieker/gui/subview/aggregatedtraces/AbstractAggregatedTracesController.java
@@ -0,0 +1,42 @@
+package kieker.gui.subview.aggregatedtraces;
+
+import kieker.gui.common.DataModel;
+import kieker.gui.common.IModel;
+import kieker.gui.common.ISubController;
+import kieker.gui.common.ISubView;
+import kieker.gui.common.PropertiesModel;
+import kieker.gui.common.domain.AggregatedExecution;
+
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+
+public abstract class AbstractAggregatedTracesController implements ISubController, SelectionListener {
+
+	private final ISubView view;
+	private final AggregatedTracesSubViewModel model;
+
+	public AbstractAggregatedTracesController(final DataModel dataModel, final PropertiesModel propertiesModel) {
+		final IModel<AggregatedExecution> modelProxy = this.createModelProxy(dataModel);
+		this.model = new AggregatedTracesSubViewModel();
+
+		this.view = new AggregatedTracesSubView(modelProxy, this.model, propertiesModel, this);
+	}
+
+	@Override
+	public ISubView getView() {
+		return this.view;
+	}
+
+	@Override
+	public void widgetSelected(final SelectionEvent e) {
+		if (e.item.getData() instanceof AggregatedExecution) {
+			this.model.setCurrentActiveTrace((AggregatedExecution) e.item.getData());
+		}
+	}
+
+	@Override
+	public void widgetDefaultSelected(final SelectionEvent e) {}
+
+	protected abstract IModel<AggregatedExecution> createModelProxy(final DataModel dataModel);
+
+}
diff --git a/src/main/java/kieker/gui/subview/aggregatedtraces/AggregatedFailedTracesSubViewController.java b/src/main/java/kieker/gui/subview/aggregatedtraces/AggregatedFailedTracesSubViewController.java
index 56f6a417..4dc1e290 100644
--- a/src/main/java/kieker/gui/subview/aggregatedtraces/AggregatedFailedTracesSubViewController.java
+++ b/src/main/java/kieker/gui/subview/aggregatedtraces/AggregatedFailedTracesSubViewController.java
@@ -18,51 +18,39 @@ package kieker.gui.subview.aggregatedtraces;
 
 import java.util.List;
 
-import kieker.gui.common.AbstractProxyDataModel;
+import kieker.gui.common.AbstractDataModelProxy;
 import kieker.gui.common.DataModel;
-import kieker.gui.common.ISubController;
-import kieker.gui.common.ISubView;
+import kieker.gui.common.IModel;
 import kieker.gui.common.PropertiesModel;
 import kieker.gui.common.domain.AggregatedExecution;
 
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-
 /**
  * The sub-controller responsible for the sub-view presenting the available aggregated traces.
  *
  * @author Nils Christian Ehmke
  */
-public final class AggregatedFailedTracesSubViewController implements SelectionListener, ISubController {
-
-	private final ISubView view;
-	private final AggregatedTracesSubViewModel model;
+public final class AggregatedFailedTracesSubViewController extends AbstractAggregatedTracesController {
 
 	public AggregatedFailedTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
-		this.model = new AggregatedTracesSubViewModel();
-		this.view = new AggregatedTracesSubView(new AbstractProxyDataModel<AggregatedExecution>(dataModel) {
-
-			@Override
-			public List<AggregatedExecution> getContent() {
-				return super.dataModel.getFailedAggregatedTracesCopy();
-			}
-
-		}, this.model, propertiesModel, this);
+		super(dataModel, propertiesModel);
 	}
 
 	@Override
-	public ISubView getView() {
-		return this.view;
+	protected IModel<AggregatedExecution> createModelProxy(final DataModel dataModel) {
+		return new ModelProxy(dataModel);
 	}
 
-	@Override
-	public void widgetSelected(final SelectionEvent e) {
-		if (e.item.getData() instanceof AggregatedExecution) {
-			this.model.setCurrentActiveTrace((AggregatedExecution) e.item.getData());
+	private final class ModelProxy extends AbstractDataModelProxy<AggregatedExecution> {
+
+		private ModelProxy(final DataModel dataModel) {
+			super(dataModel);
 		}
-	}
 
-	@Override
-	public void widgetDefaultSelected(final SelectionEvent e) {}
+		@Override
+		public List<AggregatedExecution> getContent() {
+			return super.dataModel.getFailedAggregatedTracesCopy();
+		}
+
+	}
 
 }
diff --git a/src/main/java/kieker/gui/subview/aggregatedtraces/AggregatedTracesSubViewController.java b/src/main/java/kieker/gui/subview/aggregatedtraces/AggregatedTracesSubViewController.java
index 6a1e55a8..a4300265 100644
--- a/src/main/java/kieker/gui/subview/aggregatedtraces/AggregatedTracesSubViewController.java
+++ b/src/main/java/kieker/gui/subview/aggregatedtraces/AggregatedTracesSubViewController.java
@@ -18,50 +18,44 @@ package kieker.gui.subview.aggregatedtraces;
 
 import java.util.List;
 
-import kieker.gui.common.AbstractProxyDataModel;
+import kieker.gui.common.AbstractDataModelProxy;
 import kieker.gui.common.DataModel;
-import kieker.gui.common.ISubController;
-import kieker.gui.common.ISubView;
+import kieker.gui.common.IModel;
 import kieker.gui.common.PropertiesModel;
 import kieker.gui.common.domain.AggregatedExecution;
 
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
 
 /**
  * The sub-controller responsible for the sub-view presenting the available aggregated traces.
  *
  * @author Nils Christian Ehmke
  */
-public final class AggregatedTracesSubViewController implements SelectionListener, ISubController {
-
-	private final ISubView view;
-	private final AggregatedTracesSubViewModel model;
+public final class AggregatedTracesSubViewController extends AbstractAggregatedTracesController {
 
 	public AggregatedTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
-		this.model = new AggregatedTracesSubViewModel();
-		this.view = new AggregatedTracesSubView(new AbstractProxyDataModel<AggregatedExecution>(dataModel) {
-
-			@Override
-			public List<AggregatedExecution> getContent() {
-				return super.dataModel.getAggregatedTracesCopy();
-			}
-		}, this.model, propertiesModel, this);
+		super(dataModel, propertiesModel);
 	}
 
 	@Override
-	public ISubView getView() {
-		return this.view;
+	protected IModel<AggregatedExecution> createModelProxy(final DataModel dataModel) {
+		return new ModelProxy(dataModel);
 	}
 
 	@Override
-	public void widgetSelected(final SelectionEvent e) {
-		if (e.item.getData() instanceof AggregatedExecution) {
-			this.model.setCurrentActiveTrace((AggregatedExecution) e.item.getData());
+	public void widgetDefaultSelected(final SelectionEvent e) {}
+
+	private final class ModelProxy extends AbstractDataModelProxy<AggregatedExecution> {
+
+		private ModelProxy(final DataModel dataModel) {
+			super(dataModel);
 		}
-	}
 
-	@Override
-	public void widgetDefaultSelected(final SelectionEvent e) {}
+		@Override
+		public List<AggregatedExecution> getContent() {
+			return super.dataModel.getAggregatedTracesCopy();
+		}
+
+	}
 
 }
diff --git a/src/main/java/kieker/gui/subview/aggregatedtraces/FailureContainingAggregatedTracesSubViewController.java b/src/main/java/kieker/gui/subview/aggregatedtraces/FailureContainingAggregatedTracesSubViewController.java
index 5ca5406b..6f052238 100644
--- a/src/main/java/kieker/gui/subview/aggregatedtraces/FailureContainingAggregatedTracesSubViewController.java
+++ b/src/main/java/kieker/gui/subview/aggregatedtraces/FailureContainingAggregatedTracesSubViewController.java
@@ -18,50 +18,39 @@ package kieker.gui.subview.aggregatedtraces;
 
 import java.util.List;
 
-import kieker.gui.common.AbstractProxyDataModel;
+import kieker.gui.common.AbstractDataModelProxy;
 import kieker.gui.common.DataModel;
-import kieker.gui.common.ISubController;
-import kieker.gui.common.ISubView;
+import kieker.gui.common.IModel;
 import kieker.gui.common.PropertiesModel;
 import kieker.gui.common.domain.AggregatedExecution;
 
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-
 /**
  * The sub-controller responsible for the sub-view presenting the available aggregated traces.
  *
  * @author Nils Christian Ehmke
  */
-public final class FailureContainingAggregatedTracesSubViewController implements SelectionListener, ISubController {
-
-	private final ISubView view;
-	private final AggregatedTracesSubViewModel model;
+public final class FailureContainingAggregatedTracesSubViewController extends AbstractAggregatedTracesController {
 
 	public FailureContainingAggregatedTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
-		this.model = new AggregatedTracesSubViewModel();
-		this.view = new AggregatedTracesSubView(new AbstractProxyDataModel<AggregatedExecution>(dataModel) {
-
-			@Override
-			public List<AggregatedExecution> getContent() {
-				return super.dataModel.getFailureContainingAggregatedTracesCopy();
-			}
-		}, this.model, propertiesModel, this);
+		super(dataModel, propertiesModel);
 	}
 
 	@Override
-	public ISubView getView() {
-		return this.view;
+	protected IModel<AggregatedExecution> createModelProxy(final DataModel dataModel) {
+		return new ModelProxy(dataModel);
 	}
 
-	@Override
-	public void widgetSelected(final SelectionEvent e) {
-		if (e.item.getData() instanceof AggregatedExecution) {
-			this.model.setCurrentActiveTrace((AggregatedExecution) e.item.getData());
+	private final class ModelProxy extends AbstractDataModelProxy<AggregatedExecution> {
+
+		private ModelProxy(final DataModel dataModel) {
+			super(dataModel);
 		}
-	}
 
-	@Override
-	public void widgetDefaultSelected(final SelectionEvent e) {}
+		@Override
+		public List<AggregatedExecution> getContent() {
+			return super.dataModel.getFailureContainingAggregatedTracesCopy();
+		}
+
+	}
 
 }
diff --git a/src/main/java/kieker/gui/subview/records/RecordsSubView.java b/src/main/java/kieker/gui/subview/records/RecordsSubView.java
index f8ff2535..5c6ce782 100644
--- a/src/main/java/kieker/gui/subview/records/RecordsSubView.java
+++ b/src/main/java/kieker/gui/subview/records/RecordsSubView.java
@@ -20,7 +20,7 @@ import java.util.List;
 import java.util.Observable;
 import java.util.Observer;
 
-import kieker.gui.common.DataModel;
+import kieker.gui.common.IModel;
 import kieker.gui.common.ISubView;
 import kieker.gui.common.TableColumnSortListener;
 import kieker.gui.common.domain.Record;
@@ -39,11 +39,11 @@ import org.eclipse.swt.widgets.TableItem;
 
 public final class RecordsSubView implements Observer, ISubView {
 
-	private final DataModel model;
+	private final IModel<Record> model;
 	private Composite composite;
 	private Table table;
 
-	public RecordsSubView(final DataModel model, final RecordsSubViewController controller) {
+	public RecordsSubView(final IModel<Record> model, final RecordsSubViewController controller) {
 		this.model = model;
 
 		model.addObserver(this);
@@ -102,7 +102,7 @@ public final class RecordsSubView implements Observer, ISubView {
 	}
 
 	private void updateTable() {
-		final List<Record> records = this.model.getRecordsCopy();
+		final List<Record> records = this.model.getContent();
 
 		this.table.setData(records);
 		this.table.setItemCount(records.size());
diff --git a/src/main/java/kieker/gui/subview/records/RecordsSubViewController.java b/src/main/java/kieker/gui/subview/records/RecordsSubViewController.java
index a9664392..8181f620 100644
--- a/src/main/java/kieker/gui/subview/records/RecordsSubViewController.java
+++ b/src/main/java/kieker/gui/subview/records/RecordsSubViewController.java
@@ -16,9 +16,14 @@
 
 package kieker.gui.subview.records;
 
+import java.util.List;
+
+import kieker.gui.common.AbstractDataModelProxy;
 import kieker.gui.common.DataModel;
+import kieker.gui.common.IModel;
 import kieker.gui.common.ISubController;
 import kieker.gui.common.ISubView;
+import kieker.gui.common.domain.Record;
 
 /**
  * The sub-controller responsible for the sub-view presenting the available records.
@@ -30,7 +35,9 @@ public final class RecordsSubViewController implements ISubController {
 	private final ISubView view;
 
 	public RecordsSubViewController(final DataModel dataModel) {
-		this.view = new RecordsSubView(dataModel, this);
+		final IModel<Record> modelProxy = new RecordsModelProxy(dataModel);
+
+		this.view = new RecordsSubView(modelProxy, this);
 	}
 
 	@Override
@@ -38,4 +45,16 @@ public final class RecordsSubViewController implements ISubController {
 		return this.view;
 	}
 
+	private final class RecordsModelProxy extends AbstractDataModelProxy<Record> {
+
+		private RecordsModelProxy(final DataModel dataModel) {
+			super(dataModel);
+		}
+
+		@Override
+		public List<Record> getContent() {
+			return super.dataModel.getRecordsCopy();
+		}
+	}
+
 }
diff --git a/src/main/java/kieker/gui/subview/traces/FailedTracesSubViewController.java b/src/main/java/kieker/gui/subview/traces/FailedTracesSubViewController.java
index befa9cf5..c9c2e731 100644
--- a/src/main/java/kieker/gui/subview/traces/FailedTracesSubViewController.java
+++ b/src/main/java/kieker/gui/subview/traces/FailedTracesSubViewController.java
@@ -18,7 +18,7 @@ package kieker.gui.subview.traces;
 
 import java.util.List;
 
-import kieker.gui.common.AbstractProxyDataModel;
+import kieker.gui.common.AbstractDataModelProxy;
 import kieker.gui.common.DataModel;
 import kieker.gui.common.ISubController;
 import kieker.gui.common.ISubView;
@@ -40,7 +40,7 @@ public final class FailedTracesSubViewController implements SelectionListener, I
 
 	public FailedTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new TracesSubViewModel();
-		this.view = new TracesSubView(new AbstractProxyDataModel<Execution>(dataModel) {
+		this.view = new TracesSubView(new AbstractDataModelProxy<Execution>(dataModel) {
 
 			@Override
 			public final List<Execution> getContent() {
diff --git a/src/main/java/kieker/gui/subview/traces/FailureContainingTracesSubViewController.java b/src/main/java/kieker/gui/subview/traces/FailureContainingTracesSubViewController.java
index 09d08d1e..d336021f 100644
--- a/src/main/java/kieker/gui/subview/traces/FailureContainingTracesSubViewController.java
+++ b/src/main/java/kieker/gui/subview/traces/FailureContainingTracesSubViewController.java
@@ -18,7 +18,7 @@ package kieker.gui.subview.traces;
 
 import java.util.List;
 
-import kieker.gui.common.AbstractProxyDataModel;
+import kieker.gui.common.AbstractDataModelProxy;
 import kieker.gui.common.DataModel;
 import kieker.gui.common.ISubController;
 import kieker.gui.common.ISubView;
@@ -40,7 +40,7 @@ public final class FailureContainingTracesSubViewController implements Selection
 
 	public FailureContainingTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new TracesSubViewModel();
-		this.view = new TracesSubView(new AbstractProxyDataModel<Execution>(dataModel) {
+		this.view = new TracesSubView(new AbstractDataModelProxy<Execution>(dataModel) {
 
 			@Override
 			public final List<Execution> getContent() {
diff --git a/src/main/java/kieker/gui/subview/traces/TracesSubViewController.java b/src/main/java/kieker/gui/subview/traces/TracesSubViewController.java
index ed8d6b7e..299f97d3 100644
--- a/src/main/java/kieker/gui/subview/traces/TracesSubViewController.java
+++ b/src/main/java/kieker/gui/subview/traces/TracesSubViewController.java
@@ -18,7 +18,7 @@ package kieker.gui.subview.traces;
 
 import java.util.List;
 
-import kieker.gui.common.AbstractProxyDataModel;
+import kieker.gui.common.AbstractDataModelProxy;
 import kieker.gui.common.DataModel;
 import kieker.gui.common.ISubController;
 import kieker.gui.common.ISubView;
@@ -40,7 +40,7 @@ public final class TracesSubViewController implements SelectionListener, ISubCon
 
 	public TracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new TracesSubViewModel();
-		this.view = new TracesSubView(new AbstractProxyDataModel<Execution>(dataModel) {
+		this.view = new TracesSubView(new AbstractDataModelProxy<Execution>(dataModel) {
 
 			@Override
 			public final List<Execution> getContent() {
-- 
GitLab