]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/StandardRVIResolver.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / variable / StandardRVIResolver.java
index 562fbfcbf1e0cc6e50bfdf36ef81e4e1eed385f4..7c632f3f43b26bdc4c40f5f161cad268f962ff98 100644 (file)
-package org.simantics.db.layer0.variable;\r
-\r
-import org.simantics.databoard.Bindings;\r
-import org.simantics.databoard.Databoard;\r
-import org.simantics.databoard.binding.Binding;\r
-import org.simantics.datatypes.literal.GUID;\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.exception.MissingVariableException;\r
-import org.simantics.db.layer0.request.VariablePossibleRVIRequest;\r
-import org.simantics.db.layer0.request.VariableRVIRequest;\r
-import org.simantics.db.layer0.variable.RVI.GuidRVIPart;\r
-import org.simantics.db.layer0.variable.RVI.RVIPart;\r
-import org.simantics.db.layer0.variable.RVI.ResourceRVIPart;\r
-import org.simantics.db.layer0.variable.RVI.StringRVIPart;\r
-import org.simantics.db.layer0.variable.Variables.Role;\r
-import org.simantics.layer0.Layer0;\r
-\r
-public class StandardRVIResolver implements RVIResolver {\r
-\r
-    public static final StandardRVIResolver INSTANCE = new StandardRVIResolver();\r
-\r
-    protected RVIPart getRVIPart(ReadGraph graph, Variable variable) throws DatabaseException {\r
-        if(variable instanceof AbstractVariable) {\r
-            AbstractVariable abst = (AbstractVariable)variable;\r
-            return abst.getRVIPart(graph);\r
-        }\r
-        Role role = variable.getRole(graph);\r
-        return new StringRVIPart(role, variable.getName(graph));\r
-    }\r
-    \r
-    @Override\r
-    public RVI getRVI(ReadGraph graph, Variable variable) throws DatabaseException {\r
-        Databoard databoard = graph.getService( Databoard.class );\r
-        Binding rviBinding = databoard.getBindingUnchecked( RVI.class );\r
-        if(Variables.isContext(graph, variable)) {\r
-            return RVI.empty( rviBinding );\r
-        } else {\r
-            Variable parent = variable.getParent(graph);\r
-            if (parent == null)\r
-                // TODO: consider using a more suitable exception here to better convey the situation.\r
-                throw new MissingVariableException("no parent for variable " + variable + " (URI=" + variable.getURI(graph) + ")");\r
-            RVI base = graph.syncRequest(new VariableRVIRequest(parent));\r
-            RVIPart part = getRVIPart(graph, variable);\r
-            return new RVIBuilder(base).append(part).toRVI();\r
-        }\r
-    }\r
-\r
-    @Override\r
-    public RVI getPossibleRVI(ReadGraph graph, Variable variable) throws DatabaseException {\r
-        Databoard databoard = graph.getService( Databoard.class );\r
-        Binding rviBinding = databoard.getBindingUnchecked( RVI.class );\r
-        if(Variables.isContext(graph, variable)) {\r
-            return RVI.empty( rviBinding );\r
-        } else {\r
-            Variable parent = variable.getParent(graph);\r
-            if (parent == null) return null;\r
-            RVI base = graph.syncRequest(new VariablePossibleRVIRequest(parent));\r
-            if (base == null) return null;\r
-            RVIPart part = getRVIPart(graph, variable);\r
-            return new RVIBuilder(base).append(part).toRVI();\r
-        }\r
-    }\r
-\r
-    protected Variable resolveChild(ReadGraph graph, Variable variable, Resource resource) throws DatabaseException {\r
-        String rName = graph.getRelatedValue(resource, Layer0.getInstance(graph).HasName, Bindings.STRING);\r
-        return variable.getChild(graph, rName);\r
-    }\r
-    \r
-    protected Variable resolveProperty(ReadGraph graph, Variable variable, Resource resource) throws DatabaseException {\r
-        String rName = graph.getRelatedValue(resource, Layer0.getInstance(graph).HasName, Bindings.STRING);\r
-        return variable.getProperty(graph, rName);\r
-    }\r
-    \r
-    protected Variable resolveChild(ReadGraph graph, Variable variable, GuidRVIPart part) throws DatabaseException {\r
-       return resolveChildDefault(graph, variable, part);\r
-    }\r
-\r
-    protected Variable resolveProperty(ReadGraph graph, Variable variable, GuidRVIPart part) throws DatabaseException {\r
-       return resolvePropertyDefault(graph, variable, part);\r
-    }\r
-\r
-    public static Variable resolveChildDefault(ReadGraph graph, Variable variable, GuidRVIPart part) throws DatabaseException {\r
-               Layer0 L0 = Layer0.getInstance(graph);\r
-       for(Variable child : variable.getChildren(graph)) {\r
-               GUID id = child.getPossiblePropertyValue(graph, L0.identifier, GUID.BINDING);\r
-               if(id != null) {\r
-                       if(id.mostSignificant == part.mostSignificant && id.leastSignificant == part.leastSignificant)\r
-                               return child;\r
-               }\r
-       }\r
-       throw new DatabaseException("Could not resolve child " + part);\r
-    }\r
-\r
-    public static Variable resolvePropertyDefault(ReadGraph graph, Variable variable, GuidRVIPart part) throws DatabaseException {\r
-               Layer0 L0 = Layer0.getInstance(graph);\r
-       for(Variable child : variable.getProperties(graph)) {\r
-               GUID id = child.getPossiblePropertyValue(graph, L0.identifier, GUID.BINDING);\r
-               if(id != null) {\r
-                       if(id.mostSignificant == part.mostSignificant && id.leastSignificant == part.leastSignificant)\r
-                               return child;\r
-               }\r
-       }\r
-       throw new DatabaseException("Could not resolve property " + part);\r
-    }\r
-\r
-    @Override\r
-    public Variable getVariable(ReadGraph graph, Variable context, RVIPart part) throws DatabaseException {\r
-        if(part instanceof StringRVIPart) {\r
-            StringRVIPart srp = (StringRVIPart)part;\r
-            if(Role.CHILD.equals(srp.getRole())) return context.getChild(graph, srp.string);\r
-            else if(Role.PROPERTY.equals(srp.getRole())) return context.getProperty(graph, srp.string);\r
-        } else if(part instanceof ResourceRVIPart) {\r
-            ResourceRVIPart rrp = (ResourceRVIPart)part;\r
-            if(Role.CHILD.equals(rrp.getRole())) return resolveChild(graph, context, rrp.resource);\r
-            else if(Role.PROPERTY.equals(rrp.getRole())) return resolveProperty(graph, context, rrp.resource);\r
-        } else if(part instanceof GuidRVIPart) {\r
-            GuidRVIPart grp = (GuidRVIPart)part;\r
-            if(Role.CHILD.equals(grp.getRole())) return resolveChild(graph, context, grp);\r
-            else if(Role.PROPERTY.equals(grp.getRole())) return resolveProperty(graph, context, grp);\r
-        }\r
-        throw new DatabaseException("Unrecognized RVIPart: " + part);\r
-    }\r
-\r
-}\r
+package org.simantics.db.layer0.variable;
+
+import org.simantics.databoard.Bindings;
+import org.simantics.databoard.Databoard;
+import org.simantics.databoard.binding.Binding;
+import org.simantics.datatypes.literal.GUID;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.exception.MissingVariableException;
+import org.simantics.db.layer0.request.VariablePossibleRVIRequest;
+import org.simantics.db.layer0.request.VariableRVIRequest;
+import org.simantics.db.layer0.variable.RVI.GuidRVIPart;
+import org.simantics.db.layer0.variable.RVI.RVIPart;
+import org.simantics.db.layer0.variable.RVI.ResourceRVIPart;
+import org.simantics.db.layer0.variable.RVI.StringRVIPart;
+import org.simantics.db.layer0.variable.Variables.Role;
+import org.simantics.layer0.Layer0;
+
+public class StandardRVIResolver implements RVIResolver {
+
+    public static final StandardRVIResolver INSTANCE = new StandardRVIResolver();
+
+    protected RVIPart getRVIPart(ReadGraph graph, Variable variable) throws DatabaseException {
+        if(variable instanceof AbstractVariable) {
+            AbstractVariable abst = (AbstractVariable)variable;
+            return abst.getRVIPart(graph);
+        }
+        Role role = variable.getRole(graph);
+        return new StringRVIPart(role, variable.getName(graph));
+    }
+    
+    @Override
+    public RVI getRVI(ReadGraph graph, Variable variable) throws DatabaseException {
+        Databoard databoard = graph.getService( Databoard.class );
+        Binding rviBinding = databoard.getBindingUnchecked( RVI.class );
+        if(Variables.isContext(graph, variable)) {
+            return RVI.empty( rviBinding );
+        } else {
+            Variable parent = variable.getParent(graph);
+            if (parent == null)
+                // TODO: consider using a more suitable exception here to better convey the situation.
+                throw new MissingVariableException("no parent for variable " + variable + " (URI=" + variable.getURI(graph) + ")");
+            RVI base = graph.syncRequest(new VariableRVIRequest(parent));
+            RVIPart part = getRVIPart(graph, variable);
+            return new RVIBuilder(base).append(part).toRVI();
+        }
+    }
+
+    @Override
+    public RVI getPossibleRVI(ReadGraph graph, Variable variable) throws DatabaseException {
+        Databoard databoard = graph.getService( Databoard.class );
+        Binding rviBinding = databoard.getBindingUnchecked( RVI.class );
+        if(Variables.isContext(graph, variable)) {
+            return RVI.empty( rviBinding );
+        } else {
+            Variable parent = variable.getParent(graph);
+            if (parent == null) return null;
+            RVI base = graph.syncRequest(new VariablePossibleRVIRequest(parent));
+            if (base == null) return null;
+            RVIPart part = getRVIPart(graph, variable);
+            return new RVIBuilder(base).append(part).toRVI();
+        }
+    }
+
+    protected Variable resolveChild(ReadGraph graph, Variable variable, Resource resource) throws DatabaseException {
+        String rName = graph.getRelatedValue(resource, Layer0.getInstance(graph).HasName, Bindings.STRING);
+        return variable.getChild(graph, rName);
+    }
+    
+    protected Variable resolveProperty(ReadGraph graph, Variable variable, Resource resource) throws DatabaseException {
+        String rName = graph.getRelatedValue(resource, Layer0.getInstance(graph).HasName, Bindings.STRING);
+        return variable.getProperty(graph, rName);
+    }
+    
+    protected Variable resolveChild(ReadGraph graph, Variable variable, GuidRVIPart part) throws DatabaseException {
+       return resolveChildDefault(graph, variable, part);
+    }
+
+    protected Variable resolveProperty(ReadGraph graph, Variable variable, GuidRVIPart part) throws DatabaseException {
+       return resolvePropertyDefault(graph, variable, part);
+    }
+
+    public static Variable resolveChildDefault(ReadGraph graph, Variable variable, GuidRVIPart part) throws DatabaseException {
+               Layer0 L0 = Layer0.getInstance(graph);
+       for(Variable child : variable.getChildren(graph)) {
+               GUID id = child.getPossiblePropertyValue(graph, L0.identifier, GUID.BINDING);
+               if(id != null) {
+                       if(id.mostSignificant == part.mostSignificant && id.leastSignificant == part.leastSignificant)
+                               return child;
+               }
+       }
+       throw new DatabaseException("Could not resolve child " + part);
+    }
+
+    public static Variable resolvePropertyDefault(ReadGraph graph, Variable variable, GuidRVIPart part) throws DatabaseException {
+               Layer0 L0 = Layer0.getInstance(graph);
+       for(Variable child : variable.getProperties(graph)) {
+               GUID id = child.getPossiblePropertyValue(graph, L0.identifier, GUID.BINDING);
+               if(id != null) {
+                       if(id.mostSignificant == part.mostSignificant && id.leastSignificant == part.leastSignificant)
+                               return child;
+               }
+       }
+       throw new DatabaseException("Could not resolve property " + part);
+    }
+
+    @Override
+    public Variable getVariable(ReadGraph graph, Variable context, RVIPart part) throws DatabaseException {
+        if(part instanceof StringRVIPart) {
+            StringRVIPart srp = (StringRVIPart)part;
+            if(Role.CHILD.equals(srp.getRole())) return context.getChild(graph, srp.string);
+            else if(Role.PROPERTY.equals(srp.getRole())) return context.getProperty(graph, srp.string);
+        } else if(part instanceof ResourceRVIPart) {
+            ResourceRVIPart rrp = (ResourceRVIPart)part;
+            if(Role.CHILD.equals(rrp.getRole())) return resolveChild(graph, context, rrp.resource);
+            else if(Role.PROPERTY.equals(rrp.getRole())) return resolveProperty(graph, context, rrp.resource);
+        } else if(part instanceof GuidRVIPart) {
+            GuidRVIPart grp = (GuidRVIPart)part;
+            if(Role.CHILD.equals(grp.getRole())) return resolveChild(graph, context, grp);
+            else if(Role.PROPERTY.equals(grp.getRole())) return resolveProperty(graph, context, grp);
+        }
+        throw new DatabaseException("Unrecognized RVIPart: " + part);
+    }
+
+}