]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.charts/src/org/simantics/charts/query/ChartDataQuery.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.charts / src / org / simantics / charts / query / ChartDataQuery.java
diff --git a/bundles/org.simantics.charts/src/org/simantics/charts/query/ChartDataQuery.java b/bundles/org.simantics.charts/src/org/simantics/charts/query/ChartDataQuery.java
new file mode 100644 (file)
index 0000000..5636f6a
--- /dev/null
@@ -0,0 +1,88 @@
+package org.simantics.charts.query;\r
+\r
+import java.util.Arrays;\r
+\r
+import org.simantics.charts.ontology.ChartResource;\r
+import org.simantics.charts.ui.ChartData;\r
+import org.simantics.charts.ui.ChartData.ItemKey;\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.NamedResource;\r
+import org.simantics.db.common.request.ObjectsWithType;\r
+import org.simantics.db.common.request.ResourceRead;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.layer0.Layer0;\r
+import org.simantics.trend.configuration.TrendItem;\r
+import org.simantics.trend.configuration.YAxisMode;\r
+\r
+public class ChartDataQuery extends ResourceRead<ChartData> {\r
+\r
+    public ChartDataQuery(Resource resource) {\r
+        super(resource);\r
+    }\r
+\r
+    @Override\r
+    public ChartData perform(ReadGraph g) throws DatabaseException {\r
+        Resource chart = resource;\r
+        ChartData data = new ChartData();\r
+\r
+        Layer0 L0 = Layer0.getInstance(g);\r
+        ChartResource CHART = ChartResource.getInstance(g);\r
+\r
+        data.name = g.getPossibleRelatedValue(chart, L0.HasName, Bindings.STRING);\r
+\r
+        Resource am = g.getPossibleObject(chart, CHART.Chart_YAxisMode);\r
+        if ( CHART.YAxisMode_SingleAxis.equals(am) ) data.axisMode = YAxisMode.SingleAxis;\r
+        else if ( CHART.YAxisMode_MultiAxis.equals(am) ) data.axisMode = YAxisMode.MultiAxis;\r
+        else {\r
+            data.axisMode = YAxisMode.SingleAxis;\r
+        }\r
+\r
+        Double increment = g.getPossibleRelatedAdapter(chart, CHART.Chart_TimeWindowIncrement, Double.class);\r
+        if ( increment!=null ) data.timeIncrement = increment;\r
+        Double length = g.getPossibleRelatedAdapter(chart, CHART.Chart_TimeWindowLength, Double.class);\r
+        if ( length !=null ) data.timeLength = length;\r
+        Double start = g.getPossibleRelatedAdapter(chart, CHART.Chart_TimeWindowStart, Double.class);\r
+        if ( start!=null ) data.timeStart = start;\r
+\r
+        Boolean showMilestones = g.getPossibleRelatedValue(chart, CHART.Chart_ShowMilestones, Bindings.BOOLEAN);\r
+        if ( showMilestones!=null ) data.showMilestones = showMilestones;\r
+        Boolean showGrid = g.getPossibleRelatedValue(chart, CHART.Chart_showGrid, Bindings.BOOLEAN);\r
+        if ( showGrid!=null ) data.showGrid = showGrid;\r
+        Boolean trackExperimentTime = g.getPossibleRelatedValue(chart, CHART.Chart_trackExperimentTime, Bindings.BOOLEAN);\r
+        if ( trackExperimentTime!=null ) data.trackExperimentTime = trackExperimentTime;\r
+\r
+        for (Resource chartItem : g.syncRequest(new ObjectsWithType(chart, L0.ConsistsOf, CHART.Chart_Item))) {\r
+            TrendItem ti = g.syncRequest(new TrendItemQuery(chartItem));\r
+            NamedResource nr = new NamedResource(ti.label, chartItem);\r
+            ItemKey key = new ItemKey(ti.renderer, ti.index, nr);\r
+            data.allItems.put(key, ti);\r
+            Boolean hidden = g.getPossibleRelatedValue(chartItem, CHART.Chart_Item_hidden, Bindings.BOOLEAN);\r
+            if (Boolean.TRUE.equals(hidden))\r
+                data.hiddenItems.add(key);\r
+        }\r
+\r
+        float[] bgColor = g.getPossibleRelatedValue(chart, CHART.Chart_backgroundColor, Bindings.FLOAT_ARRAY);\r
+        if (bgColor != null && bgColor.length >= 3) {\r
+            int len = bgColor.length;\r
+            if (len >= 6) {\r
+                data.backgroundGradient = true;\r
+                data.backgroundColor1 = Arrays.copyOfRange(bgColor, 0, 3);\r
+                data.backgroundColor2 = Arrays.copyOfRange(bgColor, 3, 6);\r
+            } else if (len >= 3) {\r
+                data.backgroundGradient = false;\r
+                data.backgroundColor1 = Arrays.copyOfRange(bgColor, 0, 3);\r
+                data.backgroundColor2 = data.backgroundColor1;\r
+            }\r
+        }\r
+\r
+        float[] gridColor = g.getPossibleRelatedValue(chart, CHART.Chart_gridColor, Bindings.FLOAT_ARRAY);\r
+        if (gridColor != null && gridColor.length >= 3) {\r
+            data.gridColor = gridColor;\r
+        }\r
+\r
+        return data;\r
+    }\r
+\r
+}\r