]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.charts/src/org/simantics/charts/ui/CSVParamsQuery.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.charts / src / org / simantics / charts / ui / CSVParamsQuery.java
diff --git a/bundles/org.simantics.charts/src/org/simantics/charts/ui/CSVParamsQuery.java b/bundles/org.simantics.charts/src/org/simantics/charts/ui/CSVParamsQuery.java
new file mode 100644 (file)
index 0000000..ba476a9
--- /dev/null
@@ -0,0 +1,108 @@
+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