X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Futil%2FTGRepresentationUtils.java;h=f02b8eb9e29252d2cc36c86ad12d77883db0b495;hb=b844ca924d129072e11f7e4c18918dd388a37e8c;hp=82c20514c1aa858f625f89e7c0d028be3a9829cf;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/TGRepresentationUtils.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/TGRepresentationUtils.java index 82c20514c..f02b8eb9e 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/TGRepresentationUtils.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/TGRepresentationUtils.java @@ -14,6 +14,7 @@ package org.simantics.db.layer0.util; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Set; import org.simantics.datatypes.literal.GUID; import org.simantics.db.ReadGraph; @@ -22,9 +23,13 @@ import org.simantics.db.Statement; import org.simantics.db.common.request.PossibleIndexRoot; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.adapter.impl.EntityInstances.QueryIndex; +import org.simantics.db.layer0.genericrelation.IndexQueries; +import org.simantics.db.layer0.util.ConsistsOfProcess.ConsistsOfProcessEntry; import org.simantics.db.layer0.util.DomainProcessor3.ExclusionDecision; +import org.simantics.db.layer0.util.TransferableGraphConfiguration2.SeedSpec; import org.simantics.layer0.Layer0; import org.simantics.scl.runtime.function.Function1; +import org.simantics.utils.datastructures.Pair; /** * @author Antti Villberg @@ -37,7 +42,7 @@ public class TGRepresentationUtils { Layer0 L0 = Layer0.getInstance(graph); GUID guid = graph.getPossibleRelatedValue(source, L0.identifier, GUID.BINDING); if(guid != null) { - List exist = graph.syncRequest(new QueryIndex(targetIndex, L0.Entity, "GUID:" + guid.indexString())); + List exist = graph.syncRequest(new QueryIndex(targetIndex, L0.Entity, "GUID:" + IndexQueries.quoteTerm(guid.indexString()))); return !exist.isEmpty(); } return false; @@ -62,8 +67,10 @@ public class TGRepresentationUtils { return new GUIDExclusionFunction(graph); // The root is OK - check everything beneath - for(Resource part : ConsistsOfProcess.walk(graph, Collections.singleton(r), Collections.emptySet(), true)) { - if(findByIdentifier(graph, targetRoot, part)) + Pair,Set> pair = ConsistsOfProcess.walk(graph, Collections.singleton(SeedSpec.internal(r)), true); + List entries = pair.first; + for(ConsistsOfProcessEntry entry : entries) { + if(findByIdentifier(graph, targetRoot, entry.resource)) return new GUIDExclusionFunction(graph); } }