From dc39f9f31e58f2bd37003575075caea8b1e6f672 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Fri, 5 Jan 2018 13:16:58 +0300 Subject: [PATCH] #1712 Batch objects processing support --- .../editors/PostgresRolePrivilegesEditor.java | 55 +++++++++++++------ 1 file changed, 39 insertions(+), 16 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/ui/editors/PostgresRolePrivilegesEditor.java b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/ui/editors/PostgresRolePrivilegesEditor.java index aa878ca3d5..1bd00df9c0 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/ui/editors/PostgresRolePrivilegesEditor.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/ui/editors/PostgresRolePrivilegesEditor.java @@ -31,10 +31,10 @@ import org.eclipse.swt.graphics.Font; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; +import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IWorkbenchCommandConstants; import org.eclipse.ui.IWorkbenchSite; import org.jkiss.dbeaver.DBException; @@ -62,6 +62,7 @@ import org.jkiss.dbeaver.ui.navigator.NavigatorUtils; import org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorLabelProvider; import org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorTree; import org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorTreeFilter; +import org.jkiss.utils.CommonUtils; import java.lang.reflect.InvocationTargetException; import java.util.*; @@ -80,6 +81,7 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor

permissionMap = new HashMap<>(); + private Text objectDescriptionText; public void createPartControl(Composite parent) { this.pageControl = new PageControl(parent); @@ -87,7 +89,7 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor

{ - DBSObject selectedObject = NavigatorUtils.getSelectedObject(treeViewer.getSelection()); - if (selectedObject == null) { - updateObjectPermissions(null, null); + List selectedObjects = NavigatorUtils.getSelectedObjects(treeViewer.getSelection()); + if (CommonUtils.isEmpty(selectedObjects)) { + updateObjectPermissions(null); } else { - updateObjectPermissions(getObjectPermissions(selectedObject), selectedObject); + updateObjectPermissions(selectedObjects); } }); treeViewer.addFilter(new ViewerFilter() { @@ -199,10 +201,13 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor

objects) { + boolean hasBadObjects = CommonUtils.isEmpty(objects); + StringBuilder objectNames = new StringBuilder(); + if (!hasBadObjects) { + for (DBSObject object : objects) { + if (!(object instanceof PostgreTableBase) && !(object instanceof PostgreRole)) { + hasBadObjects = true; + break; + } + if (objectNames.length() > 0) objectNames.append(", "); + objectNames.append(DBUtils.getObjectFullName(object.getDataSource(), object, DBPEvaluationContext.DML)); + } + } + if (hasBadObjects) { + objectDescriptionText.setText(""); + + this.currentPermission = null; + this.currentObject = null; } else { - this.currentObject = curObject = null; + objectDescriptionText.setText(objectNames.toString()); + + this.currentObject = objects.get(0); + this.currentPermission = getObjectPermissions(this.currentObject); } - if (data == null) { - permissionTable.setEnabled(curObject != null); + if (currentPermission == null) { + // We have object(s) but no permissions for them + permissionTable.setEnabled(!CommonUtils.isEmpty(objects)); for (TableItem item : permissionTable.getItems()) { item.setChecked(false); item.setText(1, ""); @@ -284,7 +307,7 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor

{ - updateObjectPermissions(null, null); + updateObjectPermissions(null); }); activatePart(); } -- GitLab