--- /dev/null
+package org.simantics.charts.ui;\r
+\r
+import java.util.Collections;\r
+import java.util.List;\r
+\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.databoard.Databoard;\r
+import org.simantics.databoard.binding.Binding;\r
+import org.simantics.databoard.binding.error.BindingException;\r
+import org.simantics.databoard.util.Bean;\r
+import org.simantics.databoard.util.URIStringUtils;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.request.PossibleTypedParent;\r
+import org.simantics.db.common.request.ReadRequest;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.variable.RVI;\r
+import org.simantics.db.layer0.variable.Variable;\r
+import org.simantics.db.layer0.variable.Variables;\r
+import org.simantics.history.HistoryException;\r
+import org.simantics.history.HistoryManager;\r
+import org.simantics.history.ItemManager;\r
+import org.simantics.history.csv.CSVFormatter;\r
+import org.simantics.history.util.subscription.SamplingFormat;\r
+import org.simantics.layer0.Layer0;\r
+import org.simantics.modeling.ModelingResources;\r
+import org.simantics.modeling.subscription.SubscriptionItemLabel;\r
+import org.simantics.simulation.ontology.SimulationResource;\r
+\r
+/**\r
+ * This query adds items to the given CSVFormatter.\r
+ */\r
+class CSVParamsQuery extends ReadRequest {\r
+ CSVFormatter csv;\r
+ List<Resource> subscriptionItems;\r
+ ItemManager im;\r
+ HistoryManager history;\r
+ \r
+ public CSVParamsQuery(HistoryManager history, CSVFormatter csv, List<Resource> subscriptionItems) throws HistoryException {\r
+ super();\r
+ this.csv = csv;\r
+ this.subscriptionItems = subscriptionItems; \r
+ this.history = history;\r
+ im = new ItemManager( history.getItems() );\r
+ }\r
+\r
+ @Override\r
+ public void run(ReadGraph graph) throws DatabaseException {\r
+ Layer0 L0 = Layer0.getInstance(graph);\r
+ ModelingResources MOD = ModelingResources.getInstance(graph);\r
+ SimulationResource SIM = SimulationResource.getInstance(graph);\r
+\r
+ for (Resource si : subscriptionItems) {\r
+ //Resource subscription = graph.syncRequest( new PossibleTypedParent(si, MOD.Subscription) );\r
+ String unit = graph.getPossibleRelatedValue(si, MOD.Subscription_Item_Unit, Bindings.STRING);\r
+ //String name = graph.getRelatedValue(subject, relation)\r
+ String subscriptionItemLabel = graph.getPossibleRelatedValue(si, L0.HasLabel, Bindings.STRING);\r
+ String label2 = null;\r
+ String groupItemId = graph.getPossibleRelatedValue(si, L0.HasName, Bindings.STRING);\r
+ if (groupItemId == null)\r
+ continue;\r
+ //String groupId = graph.getPossibleRelatedValue(subscription, L0.HasName, Bindings.STRING);\r
+\r
+ Binding rviBinding = graph.getService(Databoard.class).getBindingUnchecked( RVI.class );\r
+ RVI rvi = graph.getPossibleRelatedValue(si, MOD.Subscription_Item_VariableId, rviBinding);\r
+ if (rvi != null) {\r
+ Resource model = graph.syncRequest( new PossibleTypedParent(si, SIM.Model) );\r
+ Variable configuration = null;\r
+ if (model!=null) configuration = Variables.getConfigurationContext(graph, model);\r
+\r
+ // Label\r
+ if ((subscriptionItemLabel == null || subscriptionItemLabel.isEmpty()) && configuration!=null) {\r
+ subscriptionItemLabel = rvi.asPossibleString(graph, configuration);\r
+ if (subscriptionItemLabel == null)\r
+ subscriptionItemLabel = rvi.toPossibleString(graph, configuration);\r
+ if (subscriptionItemLabel != null) {\r
+ subscriptionItemLabel = SubscriptionItemLabel.removeVariablePrefixPath(subscriptionItemLabel);\r
+ subscriptionItemLabel = URIStringUtils.unescape(subscriptionItemLabel);\r
+ }\r
+ }\r
+\r
+ // Variable name\r
+ if (configuration != null) {\r
+ label2 = rvi.toPossibleString(graph, configuration);\r
+ if (label2 == null)\r
+ continue;\r
+ label2 = URIStringUtils.unescape( label2 );\r
+ } else {\r
+ label2 = rvi.toString();\r
+ }\r
+ }\r
+\r
+ List<Bean> streams;\r
+ try {\r
+ streams = im.search("groupItemId", groupItemId);\r
+ Collections.sort(streams, SamplingFormat.INTERVAL_COMPARATOR);\r
+ if (!streams.isEmpty()) { \r
+ Bean config = streams.get(0);\r
+ String id = (String) config.getFieldUnchecked("id");\r
+ csv.addItem( history, id, subscriptionItemLabel, label2, unit);\r
+ }\r
+ } catch (BindingException e) {\r
+ // There is no id\r
+ }\r
+ }\r
+ }\r
+\r
+}
\ No newline at end of file