]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.server/src/org/simantics/document/server/VariableStructuralContext.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.document.server / src / org / simantics / document / server / VariableStructuralContext.java
1 package org.simantics.document.server;\r
2 \r
3 import java.util.List;\r
4 import java.util.Map;\r
5 \r
6 import org.simantics.databoard.adapter.AdaptException;\r
7 import org.simantics.databoard.binding.Binding;\r
8 import org.simantics.db.ReadGraph;\r
9 import org.simantics.db.Resource;\r
10 import org.simantics.db.exception.DatabaseException;\r
11 import org.simantics.db.layer0.request.VariableRead;\r
12 import org.simantics.db.layer0.variable.Variable;\r
13 import org.simantics.db.service.CollectionSupport;\r
14 import org.simantics.document.base.ontology.DocumentationResource;\r
15 import org.simantics.structural2.scl.StructuralComponent;\r
16 \r
17 public class VariableStructuralContext extends StructuralComponent<Variable> {\r
18 \r
19         final private Variable selfVariable;\r
20         final private Variable variable;\r
21         final private DocumentationResource DOC;\r
22         \r
23         public VariableStructuralContext(ReadGraph graph, Variable selfVariable) throws DatabaseException {\r
24                 this.selfVariable = selfVariable;\r
25                 this.variable = selfVariable.getParent(graph).getParent(graph);\r
26                 this.DOC = DocumentationResource.getInstance(graph);\r
27         }\r
28         \r
29         @Override\r
30         public Resource getType(ReadGraph g) throws DatabaseException {\r
31                 throw new UnsupportedOperationException();\r
32         }\r
33         \r
34         static class MapRequest extends VariableRead<Map<Resource,Variable>> {\r
35 \r
36                 public MapRequest(Variable component) {\r
37                         super(component);\r
38                 }\r
39 \r
40                 @Override\r
41                 public Map<Resource, Variable> perform(ReadGraph graph) throws DatabaseException {\r
42                         \r
43                         CollectionSupport cs = graph.getService(CollectionSupport.class);\r
44                         Map<Resource, Variable> result = cs.createMap(Variable.class);\r
45                         for(Variable property : variable.getProperties(graph)) {\r
46                                 Resource predicate = property.getPossiblePredicateResource(graph);\r
47                                 if(predicate != null)\r
48                                         result.put(predicate, property);\r
49                         }\r
50                         return result;\r
51                         \r
52                 }\r
53                 \r
54         }\r
55 \r
56         @Override\r
57         public Object getValue(ReadGraph g, Resource attribute, Binding binding) throws DatabaseException, AdaptException {\r
58                 \r
59                 Map<Resource,Variable> map = g.syncRequest(new MapRequest(variable));\r
60                 Variable p = map.get(attribute);\r
61                 if(p != null) {\r
62                         if(binding != null)\r
63                                 return p.getValue(g, binding);\r
64                         else\r
65                                 return p.getValue(g);\r
66                 }\r
67                 \r
68                 return null;\r
69                 \r
70         }\r
71 \r
72         @Override\r
73         public boolean isParametrized(ReadGraph g) throws DatabaseException {\r
74                 throw new UnsupportedOperationException();\r
75         }\r
76 \r
77         @Override\r
78         public Variable getConnection(ReadGraph g, Resource connectionPoint) throws DatabaseException {\r
79                 throw new UnsupportedOperationException();\r
80         }\r
81 \r
82         @SuppressWarnings({ "unchecked", "rawtypes" })\r
83         @Override\r
84         public List getConnections(ReadGraph g, Resource connectionPoint) throws DatabaseException {\r
85                 throw new UnsupportedOperationException();\r
86         }\r
87 \r
88         @Override\r
89         public Resource getResource() {\r
90                 throw new UnsupportedOperationException();\r
91         }\r
92 \r
93     @Override\r
94     public StructuralComponent<Variable> getContext() {\r
95         return null;\r
96     }\r
97 \r
98 }\r