]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/src/org/simantics/modeling/mapping/ElementCopyAdvisor.java
Fixed diagram copy/paste implementations to re-identify diagram elements
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / mapping / ElementCopyAdvisor.java
index be13d8cf8ebd42c9a7c65084966f8eeea0856d54..d666d63d5f24b9ba33b47a0fef6d363831dcecc3 100644 (file)
@@ -11,9 +11,8 @@
  *******************************************************************************/
 package org.simantics.modeling.mapping;
 
-import gnu.trove.map.hash.THashMap;
-
 import java.util.Map;
+import java.util.function.BiFunction;
 
 import org.simantics.db.ReadGraph;
 import org.simantics.db.Resource;
@@ -24,6 +23,7 @@ import org.simantics.db.common.utils.OrderedSetUtils;
 import org.simantics.db.exception.CancelTransactionException;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.layer0.request.PossibleModel;
+import org.simantics.db.layer0.util.Layer0Utils;
 import org.simantics.diagram.stubs.DiagramResource;
 import org.simantics.diagram.stubs.G2DResource;
 import org.simantics.diagram.synchronization.ISynchronizationContext;
@@ -33,7 +33,8 @@ import org.simantics.diagram.synchronization.graph.CopyAdvisorUtil;
 import org.simantics.diagram.synchronization.graph.GraphCopyAdvisor;
 import org.simantics.diagram.synchronization.graph.GraphSynchronizationHints;
 import org.simantics.layer0.Layer0;
-import org.simantics.utils.datastructures.BinaryFunction;
+
+import gnu.trove.map.hash.THashMap;
 
 /**
  * @author Tuukka Lehtonen
@@ -48,10 +49,10 @@ public class ElementCopyAdvisor extends GraphCopyAdvisor {
      * Diagram mapping will have problems and potentially break the
      * configuration if the type is not the same as in the source.
      */
-    BinaryFunction<StatementEvaluation, ReadGraph, Statement> statementAdvisor =
-            new BinaryFunction<StatementEvaluation, ReadGraph, Statement>() {
+    BiFunction<ReadGraph, Statement, StatementEvaluation> statementAdvisor =
+            new BiFunction<ReadGraph, Statement, StatementEvaluation>() {
         @Override
-        public StatementEvaluation call(ReadGraph graph, Statement stm) {
+        public StatementEvaluation apply(ReadGraph graph, Statement stm) {
             if (DIA.HasFlagType.equals(stm.getPredicate()))
                 return StatementEvaluation.INCLUDE;
             if (G2D.HasFontStyle.equals(stm.getPredicate()))
@@ -89,6 +90,8 @@ public class ElementCopyAdvisor extends GraphCopyAdvisor {
         if (graph.hasStatement(sourceContainer, L0.ConsistsOf, source))
             graph.claim(targetContainer, L0.ConsistsOf, copy);
 
+        Layer0Utils.claimNewIdentifier(graph, copy, false);
+
         return copy;
     }