1 package org.simantics.db.layer0.request;
\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
11 public class ResourceToPossibleVariable extends ResourceRead<Variable> {
\r
13 public ResourceToPossibleVariable(Resource resource) {
\r
18 public Variable perform(ReadGraph graph) throws DatabaseException {
\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
26 Variable parentVariable = graph.syncRequest(new ResourceToPossibleVariable(parent));
\r
27 if(parentVariable == null) return null;
\r
28 return parentVariable.browsePossible(graph, resource);
\r