From ecc00ded907b1aa190aadb9ad1049814b4b819aa Mon Sep 17 00:00:00 2001
From: Simon Eismann <eismannsimon@googlemail.com>
Date: Mon, 22 Aug 2016 11:02:55 +0200
Subject: [PATCH] fixed visualization for statTypes using the eclipse display

---
 .../eclipse/views/QueryResultTableViewer.java |  2 ++
 .../platform/eclipse/views/TableRowBean.java  | 25 ++++++++++++---
 .../eclipse/views/ViewContentProvider.java    | 32 +++++++++++--------
 .../eclipse/views/ViewLabelProvider.java      |  2 ++
 4 files changed, 43 insertions(+), 18 deletions(-)

diff --git a/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/QueryResultTableViewer.java b/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/QueryResultTableViewer.java
index bf26d3ca..3c48dff9 100644
--- a/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/QueryResultTableViewer.java
+++ b/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/QueryResultTableViewer.java
@@ -31,6 +31,7 @@ import static tools.descartes.dql.core.platform.eclipse.views.TableRowBean.ALIGN
 import static tools.descartes.dql.core.platform.eclipse.views.TableRowBean.HEADINGS;
 import static tools.descartes.dql.core.platform.eclipse.views.TableRowBean.IDENTIFIER_POS;
 import static tools.descartes.dql.core.platform.eclipse.views.TableRowBean.METRIC_POS;
+import static tools.descartes.dql.core.platform.eclipse.views.TableRowBean.STATTYPE_POS;
 import static tools.descartes.dql.core.platform.eclipse.views.TableRowBean.TYPE_POS;
 import static tools.descartes.dql.core.platform.eclipse.views.TableRowBean.VALID_POS;
 import static tools.descartes.dql.core.platform.eclipse.views.TableRowBean.VALUE_POS;
@@ -109,6 +110,7 @@ public class QueryResultTableViewer extends ViewPart {
 		createColumn(viewer, layout, ALIAS_POS);
 		createColumn(viewer, layout, IDENTIFIER_POS);
 		createColumn(viewer, layout, METRIC_POS);
+		createColumn(viewer, layout, STATTYPE_POS);
 		createColumn(viewer, layout, VALID_POS);
 		createColumn(viewer, layout, VALUE_POS);
 
diff --git a/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/TableRowBean.java b/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/TableRowBean.java
index 8343528c..8bb65f02 100644
--- a/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/TableRowBean.java
+++ b/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/TableRowBean.java
@@ -37,21 +37,24 @@ public class TableRowBean implements Comparable<TableRowBean> {
 	public static final String ALIAS_HEADING = "Entity Alias";
 	public static final String IDENTIFIER_HEADING = "Entity Identifier";
 	public static final String METRIC_HEADING = "Metric Name";
+	public static final String STATTYPE_HEADING = "StatType Name";
 	public static final String VALID_HEADING = "Result Valid?";
 	public static final String VALUE_HEADING = "Result Value";
 
 	public static final String[] HEADINGS = new String[] { TYPE_HEADING, ALIAS_HEADING, IDENTIFIER_HEADING,
-			METRIC_HEADING, VALID_HEADING, VALUE_HEADING };
+			METRIC_HEADING, STATTYPE_HEADING, VALID_HEADING, VALUE_HEADING };
 
 	public static final int TYPE_WIDTH = 100;
 	public static final int ALIAS_WIDTH = 200;
 	public static final int IDENTIFIER_WIDTH = 200;
 	public static final int METRIC_WIDTH = 200;
+	public static final int STATTYPE_WIDTH = 200;
 	public static final int VALID_WIDTH = 100;
 	public static final int VALUE_WIDTH = 150;
 	public static final int ACCURACY_WIDTH = 100;
 
 	public static final int[] WIDTHS = new int[] { TYPE_WIDTH, ALIAS_WIDTH, IDENTIFIER_WIDTH, METRIC_WIDTH,
+			STATTYPE_WIDTH,
 			VALID_WIDTH, VALUE_WIDTH, ACCURACY_WIDTH };
 
 	public static final int TOTAL_WIDTH = sum(WIDTHS);
@@ -60,23 +63,26 @@ public class TableRowBean implements Comparable<TableRowBean> {
 	public static final int ALIAS_POS = 1;
 	public static final int IDENTIFIER_POS = 2;
 	public static final int METRIC_POS = 3;
-	public static final int VALID_POS = 4;
-	public static final int VALUE_POS = 5;
+	public static final int STATTYPE_POS = 4;
+	public static final int VALID_POS = 5;
+	public static final int VALUE_POS = 6;
 
 	public static final int TYPE_ALIGNMENT = SWT.LEFT;
 	public static final int ALIAS_ALIGNMENT = SWT.LEFT;
 	public static final int IDENTIFIER_ALIGNMENT = SWT.LEFT;
 	public static final int METRIC_ALIGNMENT = SWT.LEFT;
+	public static final int STATTYPE_ALIGNMENT = SWT.LEFT;
 	public static final int VALID_ALIGNMENT = SWT.LEFT;
 	public static final int VALUE_ALIGNMENT = SWT.RIGHT;
 	public static final int ACCURACY_ALIGNMENT = SWT.RIGHT;
 
 	static final int[] WEIGHTS = new int[] { weight(WIDTHS[TYPE_POS]), weight(WIDTHS[ALIAS_POS]),
-			weight(WIDTHS[IDENTIFIER_POS]), weight(WIDTHS[METRIC_POS]), weight(WIDTHS[VALID_POS]),
+			weight(WIDTHS[IDENTIFIER_POS]), weight(WIDTHS[METRIC_POS]), weight(WIDTHS[STATTYPE_POS]),
+			weight(WIDTHS[VALID_POS]),
 			weight(WIDTHS[VALUE_POS]) };
 
 	public static final int[] ALIGNMENT = new int[] { TYPE_ALIGNMENT, ALIAS_ALIGNMENT, IDENTIFIER_ALIGNMENT,
-			METRIC_ALIGNMENT, VALID_ALIGNMENT, VALUE_ALIGNMENT, ACCURACY_ALIGNMENT };
+			METRIC_ALIGNMENT, STATTYPE_ALIGNMENT, VALID_ALIGNMENT, VALUE_ALIGNMENT, ACCURACY_ALIGNMENT };
 
 	private static int sum(final int[] widths2) {
 		int totalWidth = 0;
@@ -96,6 +102,7 @@ public class TableRowBean implements Comparable<TableRowBean> {
 	private String alias = VALUE_NOT_SET;
 	private String identifier = VALUE_NOT_SET;
 	private String metricName = VALUE_NOT_SET;
+	private String statTypeName = VALUE_NOT_SET;
 	private String valid = VALUE_NOT_SET;
 	private String value = VALUE_NOT_SET;
 
@@ -227,6 +234,14 @@ public class TableRowBean implements Comparable<TableRowBean> {
 		this.type = type;
 	}
 
+	public String getStatTypeName() {
+		return statTypeName;
+	}
+
+	public void setStatTypeName(String statTypeName) {
+		this.statTypeName = statTypeName;
+	}
+
 	public void setValid(final String valid) {
 		this.valid = valid;
 	}
diff --git a/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/ViewContentProvider.java b/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/ViewContentProvider.java
index 9ccd8980..1a2d5058 100644
--- a/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/ViewContentProvider.java
+++ b/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/ViewContentProvider.java
@@ -38,8 +38,10 @@ import tools.descartes.dql.models.mapping.domain.DoF;
 import tools.descartes.dql.models.mapping.domain.Entity;
 import tools.descartes.dql.models.mapping.domain.Probe;
 import tools.descartes.dql.models.mapping.domain.Resource;
+import tools.descartes.dql.models.mapping.domain.Result;
 import tools.descartes.dql.models.mapping.domain.SeriesResult;
 import tools.descartes.dql.models.mapping.domain.Service;
+import tools.descartes.dql.models.mapping.domain.StatType;
 import tools.descartes.dql.models.mapping.domain.StringResult;
 import tools.descartes.dql.models.mapping.mapping.EntityMapping;
 import tools.descartes.dql.models.mapping.mapping.impl.EntityMappingImpl;
@@ -97,13 +99,16 @@ class ViewContentProvider implements IStructuredContentProvider {
 			rowWithProbe = new TableRowBean(row.getType(), row.getAlias(), row.getIdentifier());
 
 			for (final Probe probe : entity.getProbes()) {
-				processProbe(rowWithProbe, probe);
+				rowWithProbe.setMetricName(probe.getMetricName());
+				for (final StatType st : probe.getStatTypes()) {
+					processProbe(rowWithProbe, probe, st);
 
-				rows.add(rowWithProbe);
-				rowWithProbe = new TableRowBean(rowWithProbe.getType(), rowWithProbe.getAlias(),
-						rowWithProbe.getIdentifier());
+					rows.add(rowWithProbe);
+					rowWithProbe = new TableRowBean(rowWithProbe.getType(), rowWithProbe.getAlias(),
+							rowWithProbe.getIdentifier());
 
-				hasProbes = true;
+					hasProbes = true;
+				}
 			}
 
 			if (!hasProbes) {
@@ -131,14 +136,15 @@ class ViewContentProvider implements IStructuredContentProvider {
 		row.setIdentifier(entity.getIdentifier());
 	}
 
-	private void processProbe(final TableRowBean row, final Probe probe) {
+	private void processProbe(final TableRowBean row, final Probe probe, StatType st) {
 		row.setMetricName(probe.getMetricName());
-
-		if (probe instanceof SeriesResult)
-			System.out.println("Recieved Series " + ((SeriesResult) probe).getMetricName()
+		row.setStatTypeName(st.getTypeName());
+		Result r = st.getResult();
+		if (r instanceof SeriesResult)
+			System.out.println("Recieved Series " + probe.getMetricName() + "." + st.getTypeName()
 					+ ", visualization not yet implemented");
-		if (probe instanceof DecimalResult) {
-			final DecimalResult result = (DecimalResult) probe;
+		if (r instanceof DecimalResult) {
+			final DecimalResult result = (DecimalResult) r;
 
 			row.setValid(result.getValid().toString());
 
@@ -146,8 +152,8 @@ class ViewContentProvider implements IStructuredContentProvider {
 			row.setValue(scaledResult.toString());
 		}
 
-		if (probe instanceof StringResult) {
-			final StringResult result = (StringResult) probe;
+		if (r instanceof StringResult) {
+			final StringResult result = (StringResult) r;
 
 			row.setValid(result.getValid().toString());
 			row.setValue(result.getValue());
diff --git a/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/ViewLabelProvider.java b/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/ViewLabelProvider.java
index f7161cf1..49e51ff4 100644
--- a/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/ViewLabelProvider.java
+++ b/core/tools.descartes.dql.core.platform.eclipse/src/tools/descartes/dql/core/platform/eclipse/views/ViewLabelProvider.java
@@ -87,6 +87,8 @@ class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {
 			return row.getValid();
 		case TableRowBean.VALUE_POS:
 			return row.getValue();
+		case TableRowBean.STATTYPE_POS:
+			return row.getStatTypeName();
 		}
 
 		return "Unknown Column Index...";
-- 
GitLab