]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/src/org/simantics/modeling/query/QueryProxyChildVariable.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / query / QueryProxyChildVariable.java
1 package org.simantics.modeling.query;\r
2 \r
3 import java.util.Collection;\r
4 \r
5 import org.simantics.db.ReadGraph;\r
6 import org.simantics.db.exception.DatabaseException;\r
7 import org.simantics.db.layer0.variable.ProxyChildVariable;\r
8 import org.simantics.db.layer0.variable.Variable;\r
9 \r
10 public class QueryProxyChildVariable extends ProxyChildVariable {\r
11 \r
12     public QueryProxyChildVariable(Variable base, Variable parent, Variable other, String name) {\r
13         super(base, parent, other, name);\r
14     }\r
15 \r
16     @Override\r
17     public Variable create(Variable base, Variable parent, Variable other, String name) {\r
18         return new QueryProxyChildVariable(base, parent, other, name);\r
19     }\r
20     \r
21     public Variable getPossibleChild(ReadGraph graph, String name) throws DatabaseException {\r
22         \r
23         if(CONTEXT_END.equals(name)) {\r
24                 if(other instanceof ProxyChildVariable) {\r
25                         // The context is also a proxy - let it do the job\r
26                 return super.getPossibleChild(graph, name);\r
27                 } else {\r
28                 return new QueryRootVariable(this, base.getRepresents(graph));\r
29                 }\r
30         }\r
31         \r
32         return super.getPossibleChild(graph, name);\r
33         \r
34     }\r
35     \r
36     public Collection<Variable> getChildren(ReadGraph graph) throws DatabaseException {\r
37 \r
38         Collection<Variable> result = super.getChildren(graph);\r
39         if(!(base instanceof ProxyChildVariable)) {\r
40                 result.add(new QueryRootVariable(this, base.getRepresents(graph)));\r
41         }\r
42         return result;\r
43         \r
44     }       \r
45     \r
46 }