From 733a7b849b88a3ea8736f8eb54dfbb12e74dbc02 Mon Sep 17 00:00:00 2001
From: Nils Christian Ehmke <nie@informatik.uni-kiel.de>
Date: Tue, 4 Jun 2013 16:16:56 +0200
Subject: [PATCH] Modified the interpretation of the displays.

---
 .../webgui/service/impl/utility/Analysis.java | 43 +++++++++----------
 .../web/beans/view/CurrentCockpitBean.java    | 41 ++++++++++++------
 2 files changed, 48 insertions(+), 36 deletions(-)

diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/service/impl/utility/Analysis.java b/Kieker.WebGUI/src/main/java/kieker/webgui/service/impl/utility/Analysis.java
index 5ea14095..1707f71c 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/service/impl/utility/Analysis.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/service/impl/utility/Analysis.java
@@ -53,7 +53,6 @@ public class Analysis {
 	private final Object analysisControllerThread;
 
 	private final Map<String, Map<String, Object>> displayPlugins = new HashMap<String, Map<String, Object>>();
-	private final Map<String, Map<String, Object>> displayObjects = new HashMap<String, Map<String, Object>>();
 	private final Map<String, Map<String, Method>> displayMethods = new HashMap<String, Map<String, Method>>();
 
 	/**
@@ -112,14 +111,10 @@ public class Analysis {
 			if (!this.displayMethods.containsKey(viewName)) {
 				this.displayMethods.put(viewName, new HashMap<String, Method>());
 			}
-			if (!this.displayObjects.containsKey(viewName)) {
-				this.displayObjects.put(viewName, new HashMap<String, Object>());
-			}
 			if (!this.displayPlugins.containsKey(viewName)) {
 				this.displayPlugins.put(viewName, new HashMap<String, Object>());
 			}
 			final Map<String, Method> methodMap = this.displayMethods.get(viewName);
-			final Map<String, Object> displayObjectMap = this.displayObjects.get(viewName);
 			final Map<String, Object> displayPluginMap = this.displayPlugins.get(viewName);
 
 			for (final Object displayConnector : displayConnectors) {
@@ -136,7 +131,6 @@ public class Analysis {
 						final String potentialDisplayName = (String) new Mirror().on(displayAnnoation).invoke().method("name").withoutArgs();
 						if (displayName.equals(potentialDisplayName)) {
 							methodMap.put(displayConnectorName, method);
-							displayObjectMap.put(displayConnectorName, method.getParameterTypes()[0].newInstance());
 							displayPluginMap.put(displayConnectorName, plugin);
 							break;
 						}
@@ -212,7 +206,10 @@ public class Analysis {
 	 * @return A display object for the given parameters.
 	 */
 	public Object getDisplay(final String viewName, final String displayName) {
-		return this.displayObjects.get(viewName).get(displayName);
+		final Object plugin = this.displayPlugins.get(viewName).get(displayName);
+		final Method method = this.displayMethods.get(viewName).get(displayName);
+
+		return new Mirror().on(plugin).invoke().method(method).withoutArgs();
 	}
 
 	/**
@@ -233,15 +230,17 @@ public class Analysis {
 	 * Updates the display objects within this analysis.
 	 */
 	public void updateDisplays() {
-		for (final String view : this.displayMethods.keySet()) {
-			for (final String display : this.displayMethods.get(view).keySet()) {
-				final Object obj = this.displayObjects.get(view).get(display);
-				final Method method = this.displayMethods.get(view).get(display);
-				final Object plugin = this.displayPlugins.get(view).get(display);
-
-				new Mirror().on(plugin).invoke().method(method).withArgs(obj);
-			}
-		}
+		/*
+		 * for (final String view : this.displayMethods.keySet()) {
+		 * for (final String display : this.displayMethods.get(view).keySet()) {
+		 * final Object obj = this.displayObjects.get(view).get(display);
+		 * final Method method = this.displayMethods.get(view).get(display);
+		 * final Object plugin = this.displayPlugins.get(view).get(display);
+		 * 
+		 * new Mirror().on(plugin).invoke().method(method).withArgs(obj);
+		 * }
+		 * }
+		 */
 	}
 
 	/**
@@ -255,18 +254,18 @@ public class Analysis {
 	 * @return The type of the display connector.
 	 */
 	public DisplayType getDisplayType(final String viewName, final String displayConnectorName) {
-		final Object parameter = this.displayObjects.get(viewName).get(displayConnectorName);
+		final Class<?> parameter = this.displayMethods.get(viewName).get(displayConnectorName).getReturnType();
 		if (parameter == null) {
 			return null;
-		} else if (parameter.getClass() == this.classContainer.getImageClass()) {
+		} else if (parameter == this.classContainer.getImageClass()) {
 			return DisplayType.IMAGE;
-		} else if (parameter.getClass() == this.classContainer.getPlainTextClass()) {
+		} else if (parameter == this.classContainer.getPlainTextClass()) {
 			return DisplayType.PLAIN_TEXT;
-		} else if (parameter.getClass() == this.classContainer.getHtmlTextClass()) {
+		} else if (parameter == this.classContainer.getHtmlTextClass()) {
 			return DisplayType.HTML_TEXT;
-		} else if (parameter.getClass() == this.classContainer.getXYPlotClass()) {
+		} else if (parameter == this.classContainer.getXYPlotClass()) {
 			return DisplayType.XY_PLOT;
-		} else if (parameter.getClass() == this.classContainer.getMeterGaugeClass()) {
+		} else if (parameter == this.classContainer.getMeterGaugeClass()) {
 			return DisplayType.METER_GAUGE;
 		} else {
 			return null;
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitBean.java
index ce40a877..3a83ee7f 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitBean.java
@@ -19,6 +19,7 @@ package kieker.webgui.web.beans.view;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import javax.faces.application.Application;
 import javax.faces.application.FacesMessage;
@@ -464,21 +465,27 @@ public class CurrentCockpitBean {
 		try {
 			final Object displayObj = this.projectService.getDisplay(this.projectName, this.activeView.getName(), displayConnectorName);
 
-			final List<Number> intervals = (List<Number>) new Mirror().on(displayObj).invoke().method("getIntervals").withoutArgs();
-			final Number value = (Number) new Mirror().on(displayObj).invoke().method("getValue").withoutArgs();
-
-			if (intervals.isEmpty()) {
+			final Set<String> keys = (Set<String>) new Mirror().on(displayObj).invoke().method("getKeys").withoutArgs();
+			if (keys.isEmpty()) {
 				meterGaugeChartModel.setIntervals(Arrays.asList((Number) 50));
 				meterGaugeChartModel.setValue(0);
 			} else {
-				meterGaugeChartModel.setIntervals(intervals);
-				meterGaugeChart.setShadow(true);
-				meterGaugeChart.setSeriesColors("66cc66, 93b75f, E7E658, cc6666");
-				final Number maxInterval = intervals.get(intervals.size() - 1);
-				if (value.doubleValue() <= maxInterval.doubleValue()) {
-					meterGaugeChartModel.setValue(value);
+				final List<Number> intervals = (List<Number>) new Mirror().on(displayObj).invoke().method("getIntervals").withArgs(keys.iterator().next());
+				final Number value = (Number) new Mirror().on(displayObj).invoke().method("getValue").withArgs(keys.iterator().next());
+
+				if (intervals.isEmpty()) {
+					meterGaugeChartModel.setIntervals(Arrays.asList((Number) 50));
+					meterGaugeChartModel.setValue(0);
 				} else {
-					meterGaugeChartModel.setValue(maxInterval);
+					meterGaugeChartModel.setIntervals(intervals);
+					meterGaugeChart.setShadow(true);
+					meterGaugeChart.setSeriesColors("66cc66, 93b75f, E7E658, cc6666");
+					final Number maxInterval = intervals.get(intervals.size() - 1);
+					if (value.doubleValue() <= maxInterval.doubleValue()) {
+						meterGaugeChartModel.setValue(value);
+					} else {
+						meterGaugeChartModel.setValue(maxInterval);
+					}
 				}
 			}
 		} catch (final DisplayNotFoundException ex) {
@@ -526,12 +533,18 @@ public class CurrentCockpitBean {
 
 		try {
 			final Object displayObj = this.projectService.getDisplay(this.projectName, this.activeView.getName(), displayConnectorName);
-			final Map<Object, Number> entries = (Map<Object, Number>) new Mirror().on(displayObj).invoke().method("getEntries").withoutArgs();
+			final Set<String> keys = (Set<String>) new Mirror().on(displayObj).invoke().method("getKeys").withoutArgs();
 
-			if (entries.isEmpty()) {
+			if (keys.isEmpty()) {
 				lineChartSeries.set(0, 0);
 			} else {
-				lineChartSeries.setData(entries);
+				final Map<Object, Number> entries = (Map<Object, Number>) new Mirror().on(displayObj).invoke().method("getEntries").withArgs(keys.iterator().next());
+
+				if (entries.isEmpty()) {
+					lineChartSeries.set(0, 0);
+				} else {
+					lineChartSeries.setData(entries);
+				}
 			}
 		} catch (final DisplayNotFoundException ex) {
 			CurrentCockpitBean.LOG.warn("Display not found.", ex);
-- 
GitLab