X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Fadapter%2Fimpl%2FDefaultPasteHandler.java;h=067ed9207fe4d224f2add76b0ae00d71e098b51d;hp=ccef12ebf07c3b18b016db876656f0ca3f1a1df8;hb=2ee4ce7f7cb1df434c7552d4fce34fd7330352e5;hpb=664f37a026967c90a9a8a4ef3c5336ee426f67aa 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) {