]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/request/ResourceToPossibleVariable.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / request / ResourceToPossibleVariable.java
1 package org.simantics.db.layer0.request;\r
2 \r
3 import org.simantics.db.ReadGraph;\r
4 import org.simantics.db.Resource;\r
5 import org.simantics.db.common.request.ResourceRead;\r
6 import org.simantics.db.exception.DatabaseException;\r
7 import org.simantics.db.layer0.variable.StandardGraphChildVariable;\r
8 import org.simantics.db.layer0.variable.Variable;\r
9 import org.simantics.layer0.Layer0;\r
10 \r
11 public class ResourceToPossibleVariable extends ResourceRead<Variable> {\r
12 \r
13         public ResourceToPossibleVariable(Resource resource) {\r
14                 super(resource);\r
15         }\r
16         \r
17         @Override\r
18         public Variable perform(ReadGraph graph) throws DatabaseException {\r
19                 \r
20                 Layer0 L0 = Layer0.getInstance(graph);\r
21                 Resource parent = graph.getPossibleObject(resource, L0.PartOf);\r
22                 if(parent == null) {\r
23                         if(graph.getRootLibrary().equals(resource)) return new StandardGraphChildVariable(null, null, graph.getRootLibrary());\r
24                         else return null;\r
25                 }\r
26                 Variable parentVariable = graph.syncRequest(new ResourceToPossibleVariable(parent));\r
27                 if(parentVariable == null) return null;\r
28                 return parentVariable.browsePossible(graph, resource);\r
29                 \r
30         }\r
31 \r
32 }\r