From 117e40bbf65acd06c77d56e2959bbdac67e460db Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Thu, 9 Sep 2021 10:28:45 +0300 Subject: [PATCH] CB-1240 Object rename + delete feature in nav node --- .../schema/service.navigator.graphqls | 4 +++- .../service/navigator/WebNavigatorNodeInfo.java | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/server/bundles/io.cloudbeaver.server/schema/service.navigator.graphqls b/server/bundles/io.cloudbeaver.server/schema/service.navigator.graphqls index 8abb1d6a3c..0379f9156e 100644 --- a/server/bundles/io.cloudbeaver.server/schema/service.navigator.graphqls +++ b/server/bundles/io.cloudbeaver.server/schema/service.navigator.graphqls @@ -45,7 +45,8 @@ type DatabaseObjectInfo { uniqueName: String state: String - # Features: script, scriptExtended, dataContainer, dataManipulator, entity, schema, catalog + # Features: script, scriptExtended, dataContainer, dataManipulator, + # entity, schema, catalog features: [ String! ] # Supported editors: ddl, permissions, sourceDeclaration, sourceDefinition @@ -70,6 +71,7 @@ type NavigatorNodeInfo { object: DatabaseObjectInfo # Supported features: item, container, leaf + # canDelete, canRename features: [ String! ] # Object detailed info. diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/navigator/WebNavigatorNodeInfo.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/navigator/WebNavigatorNodeInfo.java index 073750fec1..cc09dd4444 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/navigator/WebNavigatorNodeInfo.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/navigator/WebNavigatorNodeInfo.java @@ -23,12 +23,15 @@ import io.cloudbeaver.model.session.WebSession; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.model.DBPObject; import org.jkiss.dbeaver.model.DBPObjectWithDetails; +import org.jkiss.dbeaver.model.edit.DBEObjectMaker; +import org.jkiss.dbeaver.model.edit.DBEObjectRenamer; import org.jkiss.dbeaver.model.meta.Association; import org.jkiss.dbeaver.model.meta.Property; import org.jkiss.dbeaver.model.navigator.*; import org.jkiss.dbeaver.model.struct.DBSEntity; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.model.struct.rdb.DBSProcedure; +import org.jkiss.dbeaver.runtime.DBWorkbench; import java.util.ArrayList; import java.util.List; @@ -127,6 +130,19 @@ public class WebNavigatorNodeInfo { if (isShared) { features.add("shared"); } + + if (node instanceof DBNDatabaseNode) { + DBSObject object = ((DBNDatabaseNode) node).getObject(); + DBEObjectMaker objectManager = DBWorkbench.getPlatform().getEditorsRegistry().getObjectManager( + object.getClass(), DBEObjectMaker.class); + if (objectManager != null && objectManager.canDeleteObject(object.getParentObject())) { + features.add("canDelete"); + } + if (objectManager instanceof DBEObjectRenamer && ((DBEObjectRenamer) objectManager).canRenameObject(object)) { + features.add("canRename"); + } + } + return features.toArray(new String[0]); }