]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/VariableBean.java
Merge commit 'ad8333027322fda6b9a8a524c7a7e15a54c52f38'
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / variable / VariableBean.java
1 package org.simantics.db.layer0.variable;\r
2 \r
3 import org.simantics.databoard.util.Bean;\r
4 import org.simantics.db.ReadGraph;\r
5 import org.simantics.db.Resource;\r
6 import org.simantics.db.exception.DatabaseException;\r
7 import org.simantics.db.service.SerialisationSupport;\r
8 \r
9 public class VariableBean extends Bean {\r
10 \r
11         final public long context;\r
12         final public String rvi;\r
13         final transient public Variable variable;\r
14         \r
15         public VariableBean(ReadGraph graph, Variable variable) throws DatabaseException {\r
16                 \r
17                 Variable context = Variables.getPossibleContext(graph, variable);\r
18                 if(context != null) {\r
19                         RVI rvi = variable.getRVI(graph);\r
20                         Resource contextResource = context.getRepresents(graph);\r
21                         this.context = contextResource.getResourceId();\r
22                         this.rvi = rvi.toString();\r
23                 } else {\r
24                         this.context = 0;\r
25                         this.rvi = variable.getURI(graph);\r
26                 }\r
27 \r
28                 this.variable = variable;\r
29 \r
30         }\r
31         \r
32         public Variable getVariable(ReadGraph graph) throws DatabaseException {\r
33                 if(context != 0) {\r
34                         Resource contextResource = graph.getService(SerialisationSupport.class).getResource(context);\r
35                         Variable context = Variables.getVariable(graph, contextResource);\r
36                         RVI rvi = RVI.fromResourceFormat(graph, this.rvi);\r
37                         return rvi.resolve(graph, context);\r
38                 } else {\r
39                         return Variables.getVariable(graph, rvi);\r
40                 }\r
41         }\r
42         \r
43         public Variable getVariable() {\r
44                 return variable;\r
45         }\r
46         \r
47 }\r