]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/AbstractChildVariable.java
Merge commit 'ad8333027322fda6b9a8a524c7a7e15a54c52f38'
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / variable / AbstractChildVariable.java
1 package org.simantics.db.layer0.variable;\r
2 \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
7 \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
18 \r
19 public abstract class AbstractChildVariable extends AbstractVariable {\r
20         \r
21         public AbstractChildVariable() {\r
22                 this(null);\r
23         }\r
24         \r
25         public AbstractChildVariable(VariableNode node) {\r
26                 super(node);\r
27         }\r
28 \r
29     @Override\r
30     public Role getRole(ReadGraph graph) throws DatabaseException {\r
31         return Role.CHILD;\r
32     }\r
33     \r
34     @Override\r
35     public <T> T getValue(ReadGraph graph) throws DatabaseException {\r
36         throw new MissingVariableValueException("No value in child variable.");\r
37     }\r
38     \r
39     @Override\r
40     public <T> T getValue(ReadGraph graph, Binding binding) throws DatabaseException {\r
41         throw new MissingVariableValueException("No value in child variable.");\r
42     }\r
43     \r
44     @Override\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
48     }\r
49 \r
50     \r
51     @Override\r
52     public Resource getRepresents(ReadGraph graph) throws DatabaseException {\r
53         Variable parent = getParent(graph);\r
54         if(!(parent instanceof AbstractChildVariable))\r
55             return null;\r
56         Resource parentRepresents = \r
57             ((AbstractChildVariable)parent).getRepresentsForBrowsingChildResources(graph);\r
58         if(parentRepresents == null)\r
59             return 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
63         return result; \r
64     }\r
65     \r
66     public Resource getRepresentsForBrowsingChildResources(ReadGraph graph) throws DatabaseException {\r
67         return getRepresents(graph);\r
68     }\r
69     \r
70     @Override\r
71     public Variable getPossibleExtraProperty(ReadGraph graph, String name) throws DatabaseException {\r
72         return null;\r
73     }\r
74     \r
75     @Override\r
76     public void collectExtraProperties(ReadGraph graph, Map<String, Variable> properties) throws DatabaseException {\r
77     }\r
78     \r
79     @Override\r
80     protected Variable getPossibleDomainProperty(ReadGraph graph, String name) throws DatabaseException {\r
81         return null;\r
82     }\r
83     \r
84     @Override\r
85     public Variable getPossibleChild(ReadGraph graph, String name) throws DatabaseException {\r
86         return null;\r
87     }\r
88     \r
89     @Override\r
90     public Map<String, Variable> collectDomainProperties(ReadGraph graph, Map<String, Variable> map) throws DatabaseException {\r
91         return map;\r
92     }\r
93     \r
94     @Override\r
95     public Collection<Variable> getChildren(ReadGraph graph) throws DatabaseException {\r
96         return Collections.emptyList();\r
97     }\r
98     \r
99     @Override\r
100     public RVIPart getRVIPart(ReadGraph graph) throws DatabaseException {\r
101         return new StringRVIPart(Role.CHILD, getName(graph));\r
102     }\r
103 \r
104     @Override\r
105     public Set<String> getClassifications(ReadGraph graph) throws DatabaseException {\r
106         return Collections.emptySet();\r
107     }\r
108 \r
109 }\r