]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - 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
diff --git a/bundles/org.simantics.document.server/src/org/simantics/document/server/VariableStructuralContext.java b/bundles/org.simantics.document.server/src/org/simantics/document/server/VariableStructuralContext.java
new file mode 100644 (file)
index 0000000..e3f7e37
--- /dev/null
@@ -0,0 +1,98 @@
+package org.simantics.document.server;\r
+\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import org.simantics.databoard.adapter.AdaptException;\r
+import org.simantics.databoard.binding.Binding;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.request.VariableRead;\r
+import org.simantics.db.layer0.variable.Variable;\r
+import org.simantics.db.service.CollectionSupport;\r
+import org.simantics.document.base.ontology.DocumentationResource;\r
+import org.simantics.structural2.scl.StructuralComponent;\r
+\r
+public class VariableStructuralContext extends StructuralComponent<Variable> {\r
+\r
+       final private Variable selfVariable;\r
+       final private Variable variable;\r
+       final private DocumentationResource DOC;\r
+       \r
+       public VariableStructuralContext(ReadGraph graph, Variable selfVariable) throws DatabaseException {\r
+               this.selfVariable = selfVariable;\r
+               this.variable = selfVariable.getParent(graph).getParent(graph);\r
+               this.DOC = DocumentationResource.getInstance(graph);\r
+       }\r
+       \r
+       @Override\r
+       public Resource getType(ReadGraph g) throws DatabaseException {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+       \r
+       static class MapRequest extends VariableRead<Map<Resource,Variable>> {\r
+\r
+               public MapRequest(Variable component) {\r
+                       super(component);\r
+               }\r
+\r
+               @Override\r
+               public Map<Resource, Variable> perform(ReadGraph graph) throws DatabaseException {\r
+                       \r
+                       CollectionSupport cs = graph.getService(CollectionSupport.class);\r
+                       Map<Resource, Variable> result = cs.createMap(Variable.class);\r
+                       for(Variable property : variable.getProperties(graph)) {\r
+                               Resource predicate = property.getPossiblePredicateResource(graph);\r
+                               if(predicate != null)\r
+                                       result.put(predicate, property);\r
+                       }\r
+                       return result;\r
+                       \r
+               }\r
+               \r
+       }\r
+\r
+       @Override\r
+       public Object getValue(ReadGraph g, Resource attribute, Binding binding) throws DatabaseException, AdaptException {\r
+               \r
+               Map<Resource,Variable> map = g.syncRequest(new MapRequest(variable));\r
+               Variable p = map.get(attribute);\r
+               if(p != null) {\r
+                       if(binding != null)\r
+                               return p.getValue(g, binding);\r
+                       else\r
+                               return p.getValue(g);\r
+               }\r
+               \r
+               return null;\r
+               \r
+       }\r
+\r
+       @Override\r
+       public boolean isParametrized(ReadGraph g) throws DatabaseException {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+\r
+       @Override\r
+       public Variable getConnection(ReadGraph g, Resource connectionPoint) throws DatabaseException {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+\r
+       @SuppressWarnings({ "unchecked", "rawtypes" })\r
+       @Override\r
+       public List getConnections(ReadGraph g, Resource connectionPoint) throws DatabaseException {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+\r
+       @Override\r
+       public Resource getResource() {\r
+               throw new UnsupportedOperationException();\r
+       }\r
+\r
+    @Override\r
+    public StructuralComponent<Variable> getContext() {\r
+        return null;\r
+    }\r
+\r
+}\r