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