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