1 package org.simantics.db.layer0.variable;
\r
3 import java.util.Collection;
\r
4 import java.util.Collections;
\r
5 import java.util.Map;
\r
6 import java.util.Set;
\r
8 import org.simantics.databoard.binding.Binding;
\r
9 import org.simantics.db.ReadGraph;
\r
10 import org.simantics.db.Resource;
\r
11 import org.simantics.db.WriteGraph;
\r
12 import org.simantics.db.common.uri.UnescapedChildMapOfResource;
\r
13 import org.simantics.db.exception.DatabaseException;
\r
14 import org.simantics.db.layer0.exception.MissingVariableValueException;
\r
15 import org.simantics.db.layer0.variable.RVI.RVIPart;
\r
16 import org.simantics.db.layer0.variable.RVI.StringRVIPart;
\r
17 import org.simantics.db.layer0.variable.Variables.Role;
\r
19 public abstract class AbstractChildVariable extends AbstractVariable {
\r
21 public AbstractChildVariable() {
\r
25 public AbstractChildVariable(VariableNode node) {
\r
30 public Role getRole(ReadGraph graph) throws DatabaseException {
\r
35 public <T> T getValue(ReadGraph graph) throws DatabaseException {
\r
36 throw new MissingVariableValueException("No value in child variable.");
\r
40 public <T> T getValue(ReadGraph graph, Binding binding) throws DatabaseException {
\r
41 throw new MissingVariableValueException("No value in child variable.");
\r
45 public void setValue(WriteGraph graph, Object value, Binding binding)
\r
46 throws DatabaseException {
\r
47 throw new DatabaseException("Cannot write value to a child variable.");
\r
52 public Resource getRepresents(ReadGraph graph) throws DatabaseException {
\r
53 Variable parent = getParent(graph);
\r
54 if(!(parent instanceof AbstractChildVariable))
\r
56 Resource parentRepresents =
\r
57 ((AbstractChildVariable)parent).getRepresentsForBrowsingChildResources(graph);
\r
58 if(parentRepresents == null)
\r
60 Resource result = graph.syncRequest(new UnescapedChildMapOfResource(parentRepresents))
\r
61 .get(getName(graph));
\r
62 // System.err.println("getRepresents " + getURI(graph) + " -> parent " + parentRepresents + " " + this + " => " + result + " " + getName(graph));
\r
66 public Resource getRepresentsForBrowsingChildResources(ReadGraph graph) throws DatabaseException {
\r
67 return getRepresents(graph);
\r
71 public Variable getPossibleExtraProperty(ReadGraph graph, String name) throws DatabaseException {
\r
76 public void collectExtraProperties(ReadGraph graph, Map<String, Variable> properties) throws DatabaseException {
\r
80 protected Variable getPossibleDomainProperty(ReadGraph graph, String name) throws DatabaseException {
\r
85 public Variable getPossibleChild(ReadGraph graph, String name) throws DatabaseException {
\r
90 public Map<String, Variable> collectDomainProperties(ReadGraph graph, Map<String, Variable> map) throws DatabaseException {
\r
95 public Collection<Variable> getChildren(ReadGraph graph) throws DatabaseException {
\r
96 return Collections.emptyList();
\r
100 public RVIPart getRVIPart(ReadGraph graph) throws DatabaseException {
\r
101 return new StringRVIPart(Role.CHILD, getName(graph));
\r
105 public Set<String> getClassifications(ReadGraph graph) throws DatabaseException {
\r
106 return Collections.emptySet();
\r