]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graph.db/src/org/simantics/graph/db/StreamingTransferableGraphImportProcess.java
Added null check to StreamingTransferableGraphImportProcess
[simantics/platform.git] / bundles / org.simantics.graph.db / src / org / simantics / graph / db / StreamingTransferableGraphImportProcess.java
index 524885f5d57a71ba291579c0942f1e0cdff3945f..78c369f96679f9ba467b76df8bdc9f074d28e503 100644 (file)
@@ -221,7 +221,7 @@ public class StreamingTransferableGraphImportProcess implements TransferableGrap
                                }
                        }
                        else if(definition instanceof Internal) {
-                               String uri = TransferableGraphUtils.getURI(resourceCount, identityMap, identity.resource);
+                               String uri = TransferableGraphUtils.getTrueURI(resourceCount, identityMap, identity.resource);
                                Resource existing = graph.getPossibleResource(uri);
                                if(existing != null) {
                                        existingInternalMap.put(identity.resource, existing);
@@ -288,6 +288,14 @@ public class StreamingTransferableGraphImportProcess implements TransferableGrap
        void findClusterSet(WriteOnlyGraph graph, Resource rootLibrary, int[] clustering, int[] clusterSets, long[] clusters, int id) throws DatabaseException {
                ClusteringSupport support = graph.getService(ClusteringSupport.class);
                if(id == Extensions.ROOT_LIBRARY_CLUSTER_SET || id == Extensions.INDEX_ROOT_CLUSTER_SET) return;
+               Resource indexRootClusterSetResource = rootLibrary;
+               if(indexRoot != null && support.isClusterSet(indexRoot)) {
+                       indexRootClusterSetResource = indexRoot;
+               } else {
+                       graph.setClusterSet4NewResource(rootLibrary);
+                       graph.flushCluster();                   
+               }
+               int indexRootCsHandle = builder.handle(indexRootClusterSetResource);
                for(int pos=0,index=0;index<clustering.length;index++) {
                        pos += clustering[index];
                        if(id < pos) {
@@ -297,7 +305,7 @@ public class StreamingTransferableGraphImportProcess implements TransferableGrap
                                        if(cs == Extensions.ROOT_LIBRARY_CLUSTER_SET) csHandle = builder.handle(rootLibrary);
                                        else if(cs == Extensions.INDEX_ROOT_CLUSTER_SET) {
                                                if(indexRoot == null) throw new DatabaseException("No index root was available in TG import.");
-                                               csHandle = builder.handle(indexRoot);
+                                               csHandle = indexRootCsHandle;
                                        }
                                        else {
                                                findClusterSet(graph, rootLibrary, clustering, clusterSets, clusters, cs);
@@ -334,7 +342,9 @@ public class StreamingTransferableGraphImportProcess implements TransferableGrap
 
                                Resource parent = resolvedParents.get(parts[0]);
                                // TODO: proper exception message
-                               if(parent == null) throw new IllegalStateException("!!");
+                               if(parent == null) {
+                                       throw new IllegalStateException("!!");
+                               }
 
                                Resource childResource = graph.newResource();
                                graph.claim(childResource, InstanceOf, null, ExternalEntity);