]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graph.db/src/org/simantics/graph/db/TGToGraphMap.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.graph.db / src / org / simantics / graph / db / TGToGraphMap.java
index 5e27f6755ca96287082a32e19018586c5a5613e0..bc1c4eb5223ae12cda19f542b5536384f5cd8ae5 100644 (file)
-package org.simantics.graph.db;\r
-\r
-import java.util.Map;\r
-\r
-import org.simantics.databoard.Bindings;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.WriteGraph;\r
-import org.simantics.db.WriteOnlyGraph;\r
-import org.simantics.db.common.procedure.adapter.TransientCacheAsyncListener;\r
-import org.simantics.db.common.uri.UnescapedChildMapOfResource;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.exception.ResourceNotFoundException;\r
-import org.simantics.db.service.SerialisationSupport;\r
-import org.simantics.graph.representation.External;\r
-import org.simantics.graph.representation.Identity;\r
-import org.simantics.graph.representation.IdentityDefinition;\r
-import org.simantics.graph.representation.Internal;\r
-import org.simantics.graph.representation.Root;\r
-import org.simantics.graph.representation.TransferableGraph1;\r
-import org.simantics.graph.representation.Value;\r
-\r
-public class TGToGraphMap {\r
-       private TransferableGraph1 tg;\r
-       private Resource[] resources;\r
-       \r
-       private Resource RootLibrary;\r
-       private Resource String;\r
-       //private Resource Library;\r
-       \r
-       private Resource InstanceOf;\r
-       private Resource ConsistsOf;\r
-       private Resource PartOf;\r
-       private Resource HasName;\r
-       private Resource NameOf;\r
-       \r
-       private void findBuiltins(WriteOnlyGraph g) throws DatabaseException {\r
-               RootLibrary = g.getBuiltin("http:/");\r
-               String = g.getBuiltin(CoreInitialization.LAYER0 + "String");\r
-               //Library = g.getBuiltin(CoreInitialization.LAYER0 + "Library");\r
-               InstanceOf = g.getBuiltin(CoreInitialization.LAYER0 + "InstanceOf");\r
-               ConsistsOf = g.getBuiltin(CoreInitialization.LAYER0 + "ConsistsOf");\r
-               PartOf = g.getBuiltin(CoreInitialization.LAYER0 + "PartOf");\r
-               HasName = g.getBuiltin(CoreInitialization.LAYER0 + "HasName");\r
-               NameOf = g.getBuiltin(CoreInitialization.LAYER0 + "NameOf");\r
-       }\r
-       \r
-       private void findBuiltins(ReadGraph g) throws DatabaseException {\r
-               RootLibrary = g.getBuiltin("http:/");\r
-               String = g.getBuiltin(CoreInitialization.LAYER0 + "String");\r
-               //Library = g.getBuiltin(CoreInitialization.LAYER0 + "Library");\r
-               InstanceOf = g.getBuiltin(CoreInitialization.LAYER0 + "InstanceOf");\r
-               ConsistsOf = g.getBuiltin(CoreInitialization.LAYER0 + "ConsistsOf");\r
-               PartOf = g.getBuiltin(CoreInitialization.LAYER0 + "PartOf");\r
-               HasName = g.getBuiltin(CoreInitialization.LAYER0 + "HasName");\r
-               NameOf = g.getBuiltin(CoreInitialization.LAYER0 + "NameOf");\r
-       }\r
-       \r
-       public TGToGraphMap(TransferableGraph1 tg) {\r
-               this.tg = tg;\r
-               this.resources = new Resource[tg.resourceCount];\r
-       }       \r
-       \r
-       public long[] getResources(SerialisationSupport serializer) throws DatabaseException {\r
-               final int count = resources.length;\r
-               long[] resourceIds = new long[count];\r
-               for(int i=0;i<count;++i)\r
-                       resourceIds[i] = serializer.getRandomAccessId(resources[i]);\r
-               return resourceIds;\r
-       }       \r
-       \r
-       public Resource[] getResources() {\r
-               return resources;\r
-       }\r
-       \r
-       private void claimChild(WriteOnlyGraph graph, Resource parent, String name, Resource child) throws DatabaseException {\r
-               //graph.claim(parent, ConsistsOf, PartOf, child);\r
-               Resource nameResource = graph.newResource();\r
-               graph.claim(nameResource, InstanceOf, null, String);\r
-               graph.claimValue(nameResource, name, Bindings.STRING);\r
-               graph.claim(child, HasName, NameOf, nameResource);\r
-       }\r
-       \r
-       public void addMappedOldResources(\r
-                       SerialisationSupport serializer,\r
-                       int[] oldToNew,\r
-                       Resource[] oldResources) throws DatabaseException {\r
-               assert(oldToNew.length == oldResources.length);\r
-               for(int i=0;i<oldToNew.length;++i) {\r
-                       int id = oldToNew[i];\r
-                       if(id >= 0)\r
-                               resources[id] = oldResources[i];\r
-               }\r
-       }\r
-       \r
-       public void addOldResources(\r
-                       SerialisationSupport serializer, \r
-                       long[] oldResources) throws DatabaseException {\r
-               assert(oldResources.length == resources.length);\r
-               for(int i=0;i<oldResources.length;++i) {\r
-                       resources[i] = serializer.getResource(oldResources[i]);\r
-               }\r
-       }\r
-\r
-       public void prepare(ReadGraph graph) throws DatabaseException {\r
-               if(RootLibrary == null)\r
-                       findBuiltins(graph);\r
-               Resource[] resources = this.resources;          \r
-               \r
-               for(Identity identity : tg.identities) {\r
-                       IdentityDefinition definition = identity.definition;\r
-                       if(definition instanceof External) {\r
-                               External def = (External)definition;\r
-                               Resource parent = resources[def.parent];\r
-                               Resource child = graph.syncRequest(\r
-                                               new UnescapedChildMapOfResource(parent), \r
-                                               new TransientCacheAsyncListener<Map<String, Resource>>())\r
-                                               .get(def.name);\r
-                               if(child == null)\r
-                                       throw new ResourceNotFoundException(def.name);\r
-                               resources[identity.resource] = child;\r
-                       }\r
-                       else if(definition instanceof Root) {\r
-                               resources[identity.resource] = RootLibrary;             \r
-                       }\r
-               }\r
-       }\r
-       \r
-       public void claim(WriteOnlyGraph graph) throws DatabaseException {\r
-               if(RootLibrary == null)\r
-                       findBuiltins(graph);\r
-               Resource[] resources = this.resources;\r
-                       \r
-               // Create blank resources\r
-               for(int i=0;i<resources.length;++i)\r
-                       if(resources[i] == null)\r
-                               resources[i] = graph.newResource();\r
-               \r
-               // Internal identities          \r
-               for(Identity identity : tg.identities) {\r
-                       IdentityDefinition definition = identity.definition;\r
-                       if(definition instanceof Internal) {\r
-                               Internal def = (Internal)definition;\r
-                               claimChild(graph, resources[def.parent], def.name, resources[identity.resource]);\r
-                       }                       \r
-               }               \r
-               \r
-               // Write statements\r
-               int[] statements = tg.statements;\r
-               for(int i=0;i<statements.length;i+=4) {\r
-                       int inv = statements[i+2];\r
-                       graph.claim(\r
-                                       resources[statements[i]],\r
-                                       resources[statements[i+1]],\r
-                                       inv < 0 ? null : resources[inv],\r
-                                       resources[statements[i+3]]\r
-                                       );\r
-               }\r
-                               \r
-               // Write values\r
-               for(Value value : tg.values)\r
-                   graph.claimValue(resources[value.resource], \r
-                           value.value.getValue(), value.value.getBinding());\r
-       }\r
-       \r
-       public boolean checkClaim(ReadGraph graph) throws DatabaseException {\r
-               \r
-               if(RootLibrary == null)\r
-                       findBuiltins(graph);\r
-               \r
-               Resource[] resources = this.resources;\r
-                       \r
-               // Create blank resources\r
-               for(int i=0;i<resources.length;++i)\r
-                       if(resources[i] == null)\r
-                               return true;\r
-               \r
-               // Internal identities          \r
-               for(Identity identity : tg.identities) {\r
-                       IdentityDefinition definition = identity.definition;\r
-                       if(definition instanceof Internal) {\r
-                               return true;\r
-                       }                       \r
-               }               \r
-               \r
-               if(tg.statements.length > 0) return true;\r
-               if(tg.values.length > 0) return true;\r
-               \r
-               return false;\r
-               \r
-       }\r
-\r
-       public void deny(WriteGraph graph) throws DatabaseException {\r
-               if(RootLibrary == null)\r
-                       findBuiltins((ReadGraph)graph);\r
-               Resource[] resources = this.resources;\r
-               \r
-               // Internal identities          \r
-               for(Identity identity : tg.identities) {\r
-                       IdentityDefinition definition = identity.definition;\r
-                       if(definition instanceof Internal) {\r
-//                             Internal def = (Internal)definition;\r
-                               /*graph.deny(resources[identity.resource],\r
-                                               PartOf,\r
-                                               resources[def.parent]\r
-                                               );*/\r
-                               graph.deny(resources[identity.resource], HasName);\r
-                       }\r
-               }               \r
-               \r
-               // Deny statements\r
-               int[] statements = tg.statements;\r
-               for(int i=0;i<statements.length;i+=4) {\r
-                       int inv = statements[i+2];\r
-                       graph.deny(\r
-                                       resources[statements[i]],\r
-                                       resources[statements[i+1]],\r
-                                       inv < 0 ? null : resources[inv],\r
-                                       resources[statements[i+3]]\r
-                                       );\r
-               }\r
-                               \r
-               // Deny values\r
-               for(Value value : tg.values)\r
-                       graph.denyValue(resources[value.resource]);\r
-       }\r
-\r
-       public boolean checkDeny(ReadGraph graph) throws DatabaseException {\r
-               \r
-               if(RootLibrary == null)\r
-                       findBuiltins((ReadGraph)graph);\r
-               \r
-               // Internal identities          \r
-               for(Identity identity : tg.identities) {\r
-                       IdentityDefinition definition = identity.definition;\r
-                       if(definition instanceof Internal) {\r
-                               return true;\r
-                       }\r
-               }               \r
-               \r
-               if(tg.statements.length > 0) return true;\r
-               if(tg.values.length > 0) return true;\r
-               \r
-               return false;\r
-                               \r
-       }\r
-       \r
-}\r
+package org.simantics.graph.db;
+
+import java.util.Map;
+
+import org.simantics.databoard.Bindings;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.WriteGraph;
+import org.simantics.db.WriteOnlyGraph;
+import org.simantics.db.common.procedure.adapter.TransientCacheAsyncListener;
+import org.simantics.db.common.uri.UnescapedChildMapOfResource;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.exception.ResourceNotFoundException;
+import org.simantics.db.service.SerialisationSupport;
+import org.simantics.graph.representation.External;
+import org.simantics.graph.representation.Identity;
+import org.simantics.graph.representation.IdentityDefinition;
+import org.simantics.graph.representation.Internal;
+import org.simantics.graph.representation.Root;
+import org.simantics.graph.representation.TransferableGraph1;
+import org.simantics.graph.representation.Value;
+
+public class TGToGraphMap {
+       private TransferableGraph1 tg;
+       private Resource[] resources;
+       
+       private Resource RootLibrary;
+       private Resource String;
+       //private Resource Library;
+       
+       private Resource InstanceOf;
+       private Resource ConsistsOf;
+       private Resource PartOf;
+       private Resource HasName;
+       private Resource NameOf;
+       
+       private void findBuiltins(WriteOnlyGraph g) throws DatabaseException {
+               RootLibrary = g.getBuiltin("http:/");
+               String = g.getBuiltin(CoreInitialization.LAYER0 + "String");
+               //Library = g.getBuiltin(CoreInitialization.LAYER0 + "Library");
+               InstanceOf = g.getBuiltin(CoreInitialization.LAYER0 + "InstanceOf");
+               ConsistsOf = g.getBuiltin(CoreInitialization.LAYER0 + "ConsistsOf");
+               PartOf = g.getBuiltin(CoreInitialization.LAYER0 + "PartOf");
+               HasName = g.getBuiltin(CoreInitialization.LAYER0 + "HasName");
+               NameOf = g.getBuiltin(CoreInitialization.LAYER0 + "NameOf");
+       }
+       
+       private void findBuiltins(ReadGraph g) throws DatabaseException {
+               RootLibrary = g.getBuiltin("http:/");
+               String = g.getBuiltin(CoreInitialization.LAYER0 + "String");
+               //Library = g.getBuiltin(CoreInitialization.LAYER0 + "Library");
+               InstanceOf = g.getBuiltin(CoreInitialization.LAYER0 + "InstanceOf");
+               ConsistsOf = g.getBuiltin(CoreInitialization.LAYER0 + "ConsistsOf");
+               PartOf = g.getBuiltin(CoreInitialization.LAYER0 + "PartOf");
+               HasName = g.getBuiltin(CoreInitialization.LAYER0 + "HasName");
+               NameOf = g.getBuiltin(CoreInitialization.LAYER0 + "NameOf");
+       }
+       
+       public TGToGraphMap(TransferableGraph1 tg) {
+               this.tg = tg;
+               this.resources = new Resource[tg.resourceCount];
+       }       
+       
+       public long[] getResources(SerialisationSupport serializer) throws DatabaseException {
+               final int count = resources.length;
+               long[] resourceIds = new long[count];
+               for(int i=0;i<count;++i)
+                       resourceIds[i] = serializer.getRandomAccessId(resources[i]);
+               return resourceIds;
+       }       
+       
+       public Resource[] getResources() {
+               return resources;
+       }
+       
+       private void claimChild(WriteOnlyGraph graph, Resource parent, String name, Resource child) throws DatabaseException {
+               //graph.claim(parent, ConsistsOf, PartOf, child);
+               Resource nameResource = graph.newResource();
+               graph.claim(nameResource, InstanceOf, null, String);
+               graph.claimValue(nameResource, name, Bindings.STRING);
+               graph.claim(child, HasName, NameOf, nameResource);
+       }
+       
+       public void addMappedOldResources(
+                       SerialisationSupport serializer,
+                       int[] oldToNew,
+                       Resource[] oldResources) throws DatabaseException {
+               assert(oldToNew.length == oldResources.length);
+               for(int i=0;i<oldToNew.length;++i) {
+                       int id = oldToNew[i];
+                       if(id >= 0)
+                               resources[id] = oldResources[i];
+               }
+       }
+       
+       public void addOldResources(
+                       SerialisationSupport serializer, 
+                       long[] oldResources) throws DatabaseException {
+               assert(oldResources.length == resources.length);
+               for(int i=0;i<oldResources.length;++i) {
+                       resources[i] = serializer.getResource(oldResources[i]);
+               }
+       }
+
+       public void prepare(ReadGraph graph) throws DatabaseException {
+               if(RootLibrary == null)
+                       findBuiltins(graph);
+               Resource[] resources = this.resources;          
+               
+               for(Identity identity : tg.identities) {
+                       IdentityDefinition definition = identity.definition;
+                       if(definition instanceof External) {
+                               External def = (External)definition;
+                               Resource parent = resources[def.parent];
+                               Resource child = graph.syncRequest(
+                                               new UnescapedChildMapOfResource(parent), 
+                                               new TransientCacheAsyncListener<Map<String, Resource>>())
+                                               .get(def.name);
+                               if(child == null)
+                                       throw new ResourceNotFoundException(def.name);
+                               resources[identity.resource] = child;
+                       }
+                       else if(definition instanceof Root) {
+                               resources[identity.resource] = RootLibrary;             
+                       }
+               }
+       }
+       
+       public void claim(WriteOnlyGraph graph) throws DatabaseException {
+               if(RootLibrary == null)
+                       findBuiltins(graph);
+               Resource[] resources = this.resources;
+                       
+               // Create blank resources
+               for(int i=0;i<resources.length;++i)
+                       if(resources[i] == null)
+                               resources[i] = graph.newResource();
+               
+               // Internal identities          
+               for(Identity identity : tg.identities) {
+                       IdentityDefinition definition = identity.definition;
+                       if(definition instanceof Internal) {
+                               Internal def = (Internal)definition;
+                               claimChild(graph, resources[def.parent], def.name, resources[identity.resource]);
+                       }                       
+               }               
+               
+               // Write statements
+               int[] statements = tg.statements;
+               for(int i=0;i<statements.length;i+=4) {
+                       int inv = statements[i+2];
+                       graph.claim(
+                                       resources[statements[i]],
+                                       resources[statements[i+1]],
+                                       inv < 0 ? null : resources[inv],
+                                       resources[statements[i+3]]
+                                       );
+               }
+                               
+               // Write values
+               for(Value value : tg.values)
+                   graph.claimValue(resources[value.resource], 
+                           value.value.getValue(), value.value.getBinding());
+       }
+       
+       public boolean checkClaim(ReadGraph graph) throws DatabaseException {
+               
+               if(RootLibrary == null)
+                       findBuiltins(graph);
+               
+               Resource[] resources = this.resources;
+                       
+               // Create blank resources
+               for(int i=0;i<resources.length;++i)
+                       if(resources[i] == null)
+                               return true;
+               
+               // Internal identities          
+               for(Identity identity : tg.identities) {
+                       IdentityDefinition definition = identity.definition;
+                       if(definition instanceof Internal) {
+                               return true;
+                       }                       
+               }               
+               
+               if(tg.statements.length > 0) return true;
+               if(tg.values.length > 0) return true;
+               
+               return false;
+               
+       }
+
+       public void deny(WriteGraph graph) throws DatabaseException {
+               if(RootLibrary == null)
+                       findBuiltins((ReadGraph)graph);
+               Resource[] resources = this.resources;
+               
+               // Internal identities          
+               for(Identity identity : tg.identities) {
+                       IdentityDefinition definition = identity.definition;
+                       if(definition instanceof Internal) {
+//                             Internal def = (Internal)definition;
+                               /*graph.deny(resources[identity.resource],
+                                               PartOf,
+                                               resources[def.parent]
+                                               );*/
+                               graph.deny(resources[identity.resource], HasName);
+                       }
+               }               
+               
+               // Deny statements
+               int[] statements = tg.statements;
+               for(int i=0;i<statements.length;i+=4) {
+                       int inv = statements[i+2];
+                       graph.deny(
+                                       resources[statements[i]],
+                                       resources[statements[i+1]],
+                                       inv < 0 ? null : resources[inv],
+                                       resources[statements[i+3]]
+                                       );
+               }
+                               
+               // Deny values
+               for(Value value : tg.values)
+                       graph.denyValue(resources[value.resource]);
+       }
+
+       public boolean checkDeny(ReadGraph graph) throws DatabaseException {
+               
+               if(RootLibrary == null)
+                       findBuiltins((ReadGraph)graph);
+               
+               // Internal identities          
+               for(Identity identity : tg.identities) {
+                       IdentityDefinition definition = identity.definition;
+                       if(definition instanceof Internal) {
+                               return true;
+                       }
+               }               
+               
+               if(tg.statements.length > 0) return true;
+               if(tg.values.length > 0) return true;
+               
+               return false;
+                               
+       }
+       
+}