--- /dev/null
+package org.simantics.db.layer0.request;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.request.ResourceRead;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.variable.StandardGraphChildVariable;\r
+import org.simantics.db.layer0.variable.Variable;\r
+import org.simantics.layer0.Layer0;\r
+\r
+public class ResourceToPossibleVariable extends ResourceRead<Variable> {\r
+\r
+ public ResourceToPossibleVariable(Resource resource) {\r
+ super(resource);\r
+ }\r
+ \r
+ @Override\r
+ public Variable perform(ReadGraph graph) throws DatabaseException {\r
+ \r
+ Layer0 L0 = Layer0.getInstance(graph);\r
+ Resource parent = graph.getPossibleObject(resource, L0.PartOf);\r
+ if(parent == null) {\r
+ if(graph.getRootLibrary().equals(resource)) return new StandardGraphChildVariable(null, null, graph.getRootLibrary());\r
+ else return null;\r
+ }\r
+ Variable parentVariable = graph.syncRequest(new ResourceToPossibleVariable(parent));\r
+ if(parentVariable == null) return null;\r
+ return parentVariable.browsePossible(graph, resource);\r
+ \r
+ }\r
+\r
+}\r