X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fhandler%2FPaster.java;h=75b0473a1bc4991be688799f7a23799a5136457e;hp=0f243db4816d72976fee02048a961531a21c6677;hb=f2f1f3fe7b467654a0afa4e586ebcd06a54ebfea;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07 diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/handler/Paster.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/handler/Paster.java index 0f243db48..75b0473a1 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/handler/Paster.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/handler/Paster.java @@ -1,8 +1,6 @@ package org.simantics.diagram.handler; import static org.simantics.diagram.handler.Paster.ComposedCutProcedure.compose; -import gnu.trove.map.hash.THashMap; -import gnu.trove.set.hash.THashSet; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; @@ -14,6 +12,7 @@ import java.util.HashSet; import java.util.Map; import java.util.Queue; import java.util.Set; +import java.util.function.BiFunction; import org.simantics.databoard.Bindings; import org.simantics.db.ReadGraph; @@ -29,6 +28,7 @@ import org.simantics.db.common.utils.CommonDBUtils; import org.simantics.db.common.utils.NameUtils; import org.simantics.db.common.utils.OrderedSetUtils; import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.util.Layer0Utils; import org.simantics.db.layer0.util.RemoverUtil; import org.simantics.db.request.Write; import org.simantics.diagram.content.ConnectionUtil; @@ -62,9 +62,11 @@ import org.simantics.structural.stubs.StructuralResource2; import org.simantics.structural2.modelingRules.CPTerminal; import org.simantics.structural2.modelingRules.ConnectionJudgement; import org.simantics.structural2.modelingRules.IConnectionPoint; -import org.simantics.utils.datastructures.BinaryFunction; import org.simantics.utils.datastructures.map.Tuple; +import gnu.trove.map.hash.THashMap; +import gnu.trove.set.hash.THashSet; + /** * @author Tuukka Lehtonen */ @@ -273,7 +275,7 @@ public class Paster { return noParentElementReturnValue; } - private void cut() throws Exception { + protected void cut() throws Exception { final GraphLayerManager glm = targetContext.get(GraphSynchronizationHints.GRAPH_LAYER_MANAGER); final THashSet cutElements = new THashSet(); @@ -688,10 +690,10 @@ public class Paster { * Diagram mapping will have problems and potentially break the * configuration if the type is not the same as in the source. */ - BinaryFunction statementAdvisor = - new BinaryFunction() { + BiFunction statementAdvisor = + new BiFunction() { @Override - public StatementEvaluation call(ReadGraph graph, Statement stm) { + public StatementEvaluation apply(ReadGraph graph, Statement stm) { if (DIA.HasFlagType.equals(stm.getPredicate())) return StatementEvaluation.INCLUDE; return StatementEvaluation.USE_DEFAULT; @@ -747,7 +749,7 @@ public class Paster { } }; - private void copy() throws Exception { + protected void copy() throws Exception { nodeMap = new NodeMap(); CommonDBUtils.selectClusterSet(graph, targetDiagram); @@ -862,6 +864,11 @@ public class Paster { graph.claim(copy, L0.ConsistsOf, L0.PartOf, relationCopy); graph.claim(copy, MOD.HasReferenceRelation, MOD.HasReferenceRelation_Inverse, relationCopy); + // #7348: renew reference relation GUID identifiers properly + Layer0Utils.renewIdentifier(graph, relationCopy); + for (Resource invRel : graph.getObjects(relationCopy, L0.ConsistsOf)) + Layer0Utils.renewIdentifier(graph, invRel); + return copy; } @@ -1359,5 +1366,12 @@ public class Paster { public NodeMap getNodeMap() { return nodeMap; } - + + protected PasteOperation getOperation() { + return op; + } + + public WriteGraph getGraph() { + return graph; + } }