]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/handler/Paster.java
Fixed diagram copy/paste implementations to re-identify diagram elements
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / handler / Paster.java
index 03edda6bdbc428762fc84516f52404c1eeb2aea2..75b0473a1bc4991be688799f7a23799a5136457e 100644 (file)
@@ -28,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;
@@ -274,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<Resource> cutElements = new THashSet<Resource>();
@@ -748,7 +749,7 @@ public class Paster {
         }
     };
 
-    private void copy() throws Exception {
+    protected void copy() throws Exception {
         nodeMap = new NodeMap();
         
         CommonDBUtils.selectClusterSet(graph, targetDiagram);
@@ -863,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;
             }
 
@@ -1360,5 +1366,12 @@ public class Paster {
     public NodeMap getNodeMap() {
         return nodeMap;
     }
-
+    
+    protected PasteOperation getOperation() {
+       return op;
+    }
+    
+    public WriteGraph getGraph() {
+               return graph;
+       }
 }