]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graph.db/src/org/simantics/graph/db/StreamingTransferableGraphImportProcess.java
Fail-safe import can now be disabled with a system property
[simantics/platform.git] / bundles / org.simantics.graph.db / src / org / simantics / graph / db / StreamingTransferableGraphImportProcess.java
index 9a819635463a8703651465c312bc688b3622326f..6d3f7e48e7d421a0e5fe7e444e453f585ce2dfd5 100644 (file)
@@ -244,18 +244,27 @@ public class StreamingTransferableGraphImportProcess implements TransferableGrap
                                        handles[identity.resource] = builder.handle(graph.syncRequest(new UnescapedChildMapOfResource(parent)).get(def.name));                          
                        }
                }               
-               
-               //if(!missingExternals.isEmpty()) throw new MissingDependencyException(this);
-               
+
+               if (!missingExternals.isEmpty() && failOnMissingEntities())
+                       throw new MissingDependencyException(this);
+       }
+
+       private boolean failOnMissingEntities() {
+               return "true".equalsIgnoreCase(
+                               System.getProperty(
+                                               "org.simantics.tg.import.failOnMissingEntities",
+                                               "false") );
        }
 
        @Override
        public Resource createChild(WriteOnlyGraph graph, Resource parent, Resource child, String name) throws DatabaseException {
+               //System.err.println("child " + parent + " - " + child + " = " + name);
            if(child == null) child = graph.newResource();
                Resource nameResource = graph.newResource();
                graph.claim(nameResource, InstanceOf, null, String);
                graph.claimValue(nameResource, name, WriteBindings.STRING);
                graph.claim(child, HasName, NameOf, nameResource);
+               graph.claim(parent,  ConsistsOf, PartOf, child);
                return child;
        }
 
@@ -347,7 +356,7 @@ public class StreamingTransferableGraphImportProcess implements TransferableGrap
                                Resource parent = resolvedParents.get(parts[0]);
                                // TODO: proper exception message
                                if(parent == null) {
-                                       throw new IllegalStateException("!!");
+                                       throw new IllegalStateException("Missing URI: " + uri);
                                }
 
                                Resource childResource = graph.newResource();
@@ -457,7 +466,6 @@ public class StreamingTransferableGraphImportProcess implements TransferableGrap
                        }
                        else if(definition instanceof Internal) {
                                Internal def = (Internal)definition;
-                               
                                Resource external = existingInternalMap.get(identity.resource);
                                if(external != null) {
                                        handles[identity.resource] = builder.handle(external);