]> gerrit.simantics Code Review - simantics/platform.git/commitdiff
Prevent paste to resources that are `L0.Entity_published` 53/1953/3
authorJani Simomaa <jani.simomaa@gmail.com>
Thu, 26 Jul 2018 09:30:57 +0000 (12:30 +0300)
committerJani Simomaa <jani.simomaa@semantum.fi>
Thu, 26 Jul 2018 12:22:13 +0000 (12:22 +0000)
gitlab #57

Change-Id: Ie4728421bca56ba0c10ae03d08f99123faffa1f1

bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/adapter/impl/DefaultPasteHandler.java

index ccef12ebf07c3b18b016db876656f0ca3f1a1df8..067ed9207fe4d224f2add76b0ae00d71e098b51d 100644 (file)
@@ -21,6 +21,7 @@ import java.util.Set;
 import org.simantics.db.ReadGraph;
 import org.simantics.db.Resource;
 import org.simantics.db.WriteGraph;
+import org.simantics.db.common.utils.NameUtils;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.layer0.adapter.PasteHandlerAdapter;
 import org.simantics.db.layer0.internal.SimanticsInternal;
@@ -146,6 +147,10 @@ public class DefaultPasteHandler extends PasteHandlerAdapter {
         
        Collection<Resource> result = new ArrayList<>();
        
+       
+       // Check if root resource is allowed for pasting
+       checkIfRootAllowsPaste(graph);
+       
        Map<String,Object> hints = Collections.singletonMap(ClipboardUtils.HINT_TARGET_RESOURCE, resource);
        
         onPasteBegin(graph);
@@ -179,6 +184,15 @@ public class DefaultPasteHandler extends PasteHandlerAdapter {
         
     }
 
+    protected void checkIfRootAllowsPaste(ReadGraph graph) throws DatabaseException {
+        Layer0 L0 = Layer0.getInstance(graph);
+        // check if root is published
+        Boolean published = graph.getPossibleRelatedValue(resource, L0.Entity_published);
+        if (published != null && published) {
+            throw new DatabaseException("Target resource " + NameUtils.getSafeName(graph, resource) + " is published and does not allow paste.");
+        }
+    }
+
     @SuppressWarnings("rawtypes")
     @Override
     public Object getAdapter(Class adapter) {