From 2ee4ce7f7cb1df434c7552d4fce34fd7330352e5 Mon Sep 17 00:00:00 2001 From: Jani Simomaa Date: Thu, 26 Jul 2018 12:30:57 +0300 Subject: [PATCH] Prevent paste to resources that are `L0.Entity_published` gitlab #57 Change-Id: Ie4728421bca56ba0c10ae03d08f99123faffa1f1 --- .../layer0/adapter/impl/DefaultPasteHandler.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/adapter/impl/DefaultPasteHandler.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/adapter/impl/DefaultPasteHandler.java index ccef12ebf..067ed9207 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/adapter/impl/DefaultPasteHandler.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/adapter/impl/DefaultPasteHandler.java @@ -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 result = new ArrayList<>(); + + // Check if root resource is allowed for pasting + checkIfRootAllowsPaste(graph); + Map 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) { -- 2.43.2