]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.charts.ui;\r
2 \r
3 import java.util.Collections;\r
4 import java.util.List;\r
5 \r
6 import org.simantics.databoard.Bindings;\r
7 import org.simantics.databoard.Databoard;\r
8 import org.simantics.databoard.binding.Binding;\r
9 import org.simantics.databoard.binding.error.BindingException;\r
10 import org.simantics.databoard.util.Bean;\r
11 import org.simantics.databoard.util.URIStringUtils;\r
12 import org.simantics.db.ReadGraph;\r
13 import org.simantics.db.Resource;\r
14 import org.simantics.db.common.request.PossibleTypedParent;\r
15 import org.simantics.db.common.request.ReadRequest;\r
16 import org.simantics.db.exception.DatabaseException;\r
17 import org.simantics.db.layer0.variable.RVI;\r
18 import org.simantics.db.layer0.variable.Variable;\r
19 import org.simantics.db.layer0.variable.Variables;\r
20 import org.simantics.history.HistoryException;\r
21 import org.simantics.history.HistoryManager;\r
22 import org.simantics.history.ItemManager;\r
23 import org.simantics.history.csv.CSVFormatter;\r
24 import org.simantics.history.util.subscription.SamplingFormat;\r
25 import org.simantics.layer0.Layer0;\r
26 import org.simantics.modeling.ModelingResources;\r
27 import org.simantics.modeling.subscription.SubscriptionItemLabel;\r
28 import org.simantics.simulation.ontology.SimulationResource;\r
29 \r
30 /**\r
31  * This query adds items to the given CSVFormatter.\r
32  */\r
33 class CSVParamsQuery extends ReadRequest {\r
34         CSVFormatter csv;\r
35         List<Resource> subscriptionItems;\r
36         ItemManager im;\r
37         HistoryManager history;\r
38         \r
39         public CSVParamsQuery(HistoryManager history, CSVFormatter csv, List<Resource> subscriptionItems) throws HistoryException {\r
40                 super();\r
41                 this.csv = csv;\r
42                 this.subscriptionItems = subscriptionItems;             \r
43                 this.history = history;\r
44                 im = new ItemManager( history.getItems() );\r
45         }\r
46 \r
47         @Override\r
48         public void run(ReadGraph graph) throws DatabaseException {\r
49         Layer0 L0 = Layer0.getInstance(graph);\r
50         ModelingResources MOD = ModelingResources.getInstance(graph);\r
51         SimulationResource SIM = SimulationResource.getInstance(graph);\r
52 \r
53                 for (Resource si : subscriptionItems) {\r
54             //Resource subscription = graph.syncRequest( new PossibleTypedParent(si, MOD.Subscription) );\r
55                         String unit = graph.getPossibleRelatedValue(si, MOD.Subscription_Item_Unit, Bindings.STRING);\r
56                         //String name = graph.getRelatedValue(subject, relation)\r
57                         String subscriptionItemLabel = graph.getPossibleRelatedValue(si, L0.HasLabel, Bindings.STRING);\r
58                         String label2 = null;\r
59                         String groupItemId = graph.getPossibleRelatedValue(si, L0.HasName, Bindings.STRING);\r
60                         if (groupItemId == null)\r
61                                 continue;\r
62                         //String groupId = graph.getPossibleRelatedValue(subscription, L0.HasName, Bindings.STRING);\r
63 \r
64                 Binding rviBinding = graph.getService(Databoard.class).getBindingUnchecked( RVI.class );\r
65             RVI rvi = graph.getPossibleRelatedValue(si, MOD.Subscription_Item_VariableId, rviBinding);\r
66             if (rvi != null) {\r
67                 Resource model = graph.syncRequest( new PossibleTypedParent(si, SIM.Model) );\r
68                 Variable configuration = null;\r
69                 if (model!=null) configuration = Variables.getConfigurationContext(graph, model);\r
70 \r
71                 // Label\r
72                 if ((subscriptionItemLabel == null || subscriptionItemLabel.isEmpty()) && configuration!=null) {\r
73                     subscriptionItemLabel = rvi.asPossibleString(graph, configuration);\r
74                     if (subscriptionItemLabel == null)\r
75                         subscriptionItemLabel = rvi.toPossibleString(graph, configuration);\r
76                     if (subscriptionItemLabel != null) {\r
77                         subscriptionItemLabel = SubscriptionItemLabel.removeVariablePrefixPath(subscriptionItemLabel);\r
78                         subscriptionItemLabel = URIStringUtils.unescape(subscriptionItemLabel);\r
79                     }\r
80                 }\r
81 \r
82                 // Variable name\r
83                 if (configuration != null) {\r
84                     label2 = rvi.toPossibleString(graph, configuration);\r
85                     if (label2 == null)\r
86                         continue;\r
87                     label2 = URIStringUtils.unescape( label2 );\r
88                 } else {\r
89                     label2 = rvi.toString();\r
90                 }\r
91             }\r
92 \r
93             List<Bean> streams;\r
94                         try {\r
95                                 streams = im.search("groupItemId", groupItemId);\r
96                     Collections.sort(streams, SamplingFormat.INTERVAL_COMPARATOR);\r
97                     if (!streams.isEmpty()) {                   \r
98                         Bean config = streams.get(0);\r
99                         String id = (String) config.getFieldUnchecked("id");\r
100                         csv.addItem( history, id, subscriptionItemLabel, label2, unit);\r
101                     }\r
102                         } catch (BindingException e) {\r
103                                 // There is no id\r
104                         }\r
105                 }\r
106         }\r
107 \r
108 }