import org.simantics.db.exception.AssumptionException;
import org.simantics.db.exception.DatabaseException;
import org.simantics.db.layer0.exception.InvalidVariableException;
-import org.simantics.db.layer0.exception.VariableException;
import org.simantics.db.layer0.function.All;
import org.simantics.db.layer0.request.ClassificationsRequest;
import org.simantics.db.layer0.request.VariableURI;
import org.simantics.layer0.Layer0;
import org.simantics.simulator.variable.exceptions.NodeManagerException;
-public class StandardGraphChildVariable extends AbstractChildVariable {
+public class StandardGraphChildVariable extends AbstractChildVariable implements ProxyVariableSupport {
/*
* Extension points
return node.support.manager.getName(node.node);
}
String unescapedName = graph.getPossibleRelatedValue(resource, graph.getService(Layer0.class).HasName, Bindings.STRING);
- if(unescapedName == null) return "r" + resource.getResourceId();
+ if(unescapedName == null) return VariableUtils.unnamedResourceName(resource);
return unescapedName;
}
@Override
final public Resource getRepresents(ReadGraph graph) throws DatabaseException {
if(resource == null)
- throw new VariableException("Variable is not represented by any resource (URI=" + getPossibleURI(graph) + ").");
+ throw new InvalidVariableException("Variable is not represented by any resource (URI=" + getPossibleURI(graph) + ").");
return resource;
// Layer0X L0X = Layer0X.getInstance(graph);
// Resource represents = graph.getPossibleObject(resource, L0X.Represents);
protected VariableMap getPossibleChildVariableMap(ReadGraph graph) throws DatabaseException {
if(resource == null) return All.standardChildDomainChildren;
- return graph.getPossibleRelatedValue2(resource, Layer0.getInstance(graph).domainChildren, this);
+ Resource domainChildren = Layer0.getInstance(graph).domainChildren;
+ return graph.getPossibleRelatedValue2(resource, domainChildren,
+ new StandardGraphPropertyVariable(graph, this, domainChildren));
}
@Override
public Resource getPossiblePredicateResource(ReadGraph graph) throws DatabaseException {
return null;
}
-
+
+ @Override
+ public Variable attachTo(ReadGraph graph, Variable parent) {
+ return new StandardGraphChildVariable(parent, node, resource);
+ }
+
+ @Override
+ public Variable attachToRenamed(ReadGraph graph, Variable parent, String name) {
+ return new StandardGraphChildVariable(parent, node, resource) {
+ @Override
+ public String getName(ReadGraph graph) throws DatabaseException {
+ return name;
+ }
+ };
+ }
+
}