1 package org.simantics.modeling.query;
\r
3 import java.util.Collection;
\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
10 public class QueryProxyChildVariable extends ProxyChildVariable {
\r
12 public QueryProxyChildVariable(Variable base, Variable parent, Variable other, String name) {
\r
13 super(base, parent, other, name);
\r
17 public Variable create(Variable base, Variable parent, Variable other, String name) {
\r
18 return new QueryProxyChildVariable(base, parent, other, name);
\r
21 public Variable getPossibleChild(ReadGraph graph, String name) throws DatabaseException {
\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
28 return new QueryRootVariable(this, base.getRepresents(graph));
\r
32 return super.getPossibleChild(graph, name);
\r
36 public Collection<Variable> getChildren(ReadGraph graph) throws DatabaseException {
\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