1 package org.simantics.charts.ui;
\r
3 import java.util.Collections;
\r
4 import java.util.List;
\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
31 * This query adds items to the given CSVFormatter.
\r
33 class CSVParamsQuery extends ReadRequest {
\r
35 List<Resource> subscriptionItems;
\r
37 HistoryManager history;
\r
39 public CSVParamsQuery(HistoryManager history, CSVFormatter csv, List<Resource> subscriptionItems) throws HistoryException {
\r
42 this.subscriptionItems = subscriptionItems;
\r
43 this.history = history;
\r
44 im = new ItemManager( history.getItems() );
\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
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
62 //String groupId = graph.getPossibleRelatedValue(subscription, L0.HasName, Bindings.STRING);
\r
64 Binding rviBinding = graph.getService(Databoard.class).getBindingUnchecked( RVI.class );
\r
65 RVI rvi = graph.getPossibleRelatedValue(si, MOD.Subscription_Item_VariableId, rviBinding);
\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
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
83 if (configuration != null) {
\r
84 label2 = rvi.toPossibleString(graph, configuration);
\r
87 label2 = URIStringUtils.unescape( label2 );
\r
89 label2 = rvi.toString();
\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
102 } catch (BindingException e) {
\r