X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.graph.db%2Fsrc%2Forg%2Fsimantics%2Fgraph%2Fdb%2FStreamingTransferableGraphImportProcess.java;h=c9b48b32591fce602c7a5aacec56c23f3b7fe9c9;hb=refs%2Fchanges%2F02%2F1402%2F2;hp=4894467e3d1260aa25d4239349942542000ede22;hpb=d26148afe7f72dad8eee04764a866b6bdd201c8e;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.graph.db/src/org/simantics/graph/db/StreamingTransferableGraphImportProcess.java b/bundles/org.simantics.graph.db/src/org/simantics/graph/db/StreamingTransferableGraphImportProcess.java index 4894467e3..c9b48b325 100644 --- a/bundles/org.simantics.graph.db/src/org/simantics/graph/db/StreamingTransferableGraphImportProcess.java +++ b/bundles/org.simantics.graph.db/src/org/simantics/graph/db/StreamingTransferableGraphImportProcess.java @@ -163,8 +163,8 @@ public class StreamingTransferableGraphImportProcess implements TransferableGrap void addMissing(int handleIndex, String external) { allMissingExternals.put(external, handleIndex); Set removals = new HashSet<>(); - for(String ext : missingExternals) if(ext.startsWith(external)) return; - for(String ext : missingExternals) if(external.startsWith(ext)) removals.add(ext); + for(String ext : missingExternals) if(ext.startsWith(external + "/")) return; + for(String ext : missingExternals) if(external.startsWith(ext + "/")) removals.add(ext); missingExternals.removeAll(removals); missingExternals.add(external); } @@ -210,18 +210,18 @@ public class StreamingTransferableGraphImportProcess implements TransferableGrap TransientCacheAsyncListener.instance()); Resource child = childMap.get(def.name); if(child == null) { - addMissing(identity.resource, graph.getURI(parent) + "/" + def.name); + addMissing(identity.resource, graph.getURI(parent) + "/" + URIStringUtils.escape(def.name)); } else { handles[identity.resource] = builder.handle(child); } } else { - addMissing(identity.resource, TransferableGraphUtils.getURI(resourceCount, identityMap, def.parent) + "/" + def.name); + addMissing(identity.resource, TransferableGraphUtils.getURI(resourceCount, identityMap, def.parent) + "/" + URIStringUtils.escape(def.name)); } } } } else if(definition instanceof Internal) { - String uri = TransferableGraphUtils.getTrueURI(resourceCount, identityMap, identity.resource); + String uri = TransferableGraphUtils.getURI(resourceCount, identityMap, identity.resource); Resource existing = graph.getPossibleResource(uri); if(existing != null) { existingInternalMap.put(identity.resource, existing); @@ -251,11 +251,13 @@ public class StreamingTransferableGraphImportProcess implements TransferableGrap @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 +349,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(); @@ -355,7 +357,7 @@ public class StreamingTransferableGraphImportProcess implements TransferableGrap Resource nameResource = graph.newResource(); graph.claim(nameResource, InstanceOf, null, String); - graph.claimValue(nameResource, parts[1], WriteBindings.STRING); + graph.claimValue(nameResource, URIStringUtils.unescape(parts[1]), WriteBindings.STRING); graph.claim(childResource, HasName, NameOf, nameResource); graph.claim(parent, ConsistsOf, PartOf, childResource); @@ -457,7 +459,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);