1 /*******************************************************************************
2 * Copyright (c) 2007, 2011 Association for Decentralized Information Management in
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * VTT Technical Research Centre of Finland - initial API and implementation
11 *******************************************************************************/
12 package org.simantics.modeling.subscription;
14 import java.util.UUID;
16 import org.simantics.databoard.Bindings;
17 import org.simantics.databoard.Databoard;
18 import org.simantics.databoard.binding.Binding;
19 import org.simantics.databoard.type.Datatype;
20 import org.simantics.db.Resource;
21 import org.simantics.db.WriteGraph;
22 import org.simantics.db.common.CommentMetadata;
23 import org.simantics.db.common.request.WriteRequest;
24 import org.simantics.db.exception.DatabaseException;
25 import org.simantics.db.layer0.variable.RVI;
26 import org.simantics.layer0.Layer0;
27 import org.simantics.modeling.ModelingResources;
30 * Request to create new subscription item
32 * @author toni.kalajainen
34 public class NewSubscriptionItem extends WriteRequest {
36 Resource subscription;
37 Double interval, deadband, gain, bias;
41 public Resource subscriptionItem;
43 public NewSubscriptionItem(Resource subscription, Double interval,
44 Double deadband, Double gain, Double bias, String unit,
45 String label, RVI variableId, Datatype datatype) {
47 this.subscription = subscription;
48 this.interval = interval;
49 this.deadband = deadband;
54 this.variableId = variableId;
55 this.datatype = datatype;
59 public void perform(WriteGraph graph) throws DatabaseException
61 ModelingResources mr = ModelingResources.getInstance(graph);
62 Layer0 l0 = Layer0.getInstance(graph);
63 subscriptionItem = graph.newResource();
64 graph.claim(subscriptionItem, l0.InstanceOf, null, mr.Subscription_Item);
65 graph.claim(subscription, l0.ConsistsOf, subscriptionItem);
66 graph.claimLiteral(subscriptionItem, l0.HasName, UUID.randomUUID().toString(), Bindings.STRING);
67 graph.claimLiteral(subscriptionItem, l0.HasLabel, label, Bindings.STRING);
70 graph.claimLiteral(subscriptionItem, mr.Subscription_Item_Datatype,
71 l0.DataType, datatype,
72 Bindings.getBindingUnchecked(Datatype.class));
74 if (interval!=null) graph.claimLiteral(subscriptionItem, mr.Subscription_Item_SamplingInterval, interval, Bindings.DOUBLE);
75 if (deadband!=null) graph.claimLiteral(subscriptionItem, mr.Subscription_Item_Deadband, deadband, Bindings.DOUBLE);
76 if (unit!=null) graph.claimLiteral(subscriptionItem, mr.Subscription_Item_Unit, unit, Bindings.STRING);
77 if (gain!=null) graph.claimLiteral(subscriptionItem, mr.Subscription_Item_Gain, gain, Bindings.DOUBLE);
78 if (bias!=null) graph.claimLiteral(subscriptionItem, mr.Subscription_Item_Bias, bias, Bindings.DOUBLE);
80 Binding rviBinding = graph.getService(Databoard.class).getBindingUnchecked( RVI.class );
81 graph.claimLiteral(subscriptionItem, mr.Subscription_Item_VariableId, l0.RVI, variableId, rviBinding);
83 CommentMetadata cm = graph.getMetadata(CommentMetadata.class);
84 graph.addMetadata(cm.add("Added new subscription " + label + " " + subscriptionItem + " "));