diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreCommandGrantPrivilege.java b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreCommandGrantPrivilege.java index 91c024fa2856e4c5bbf5930ee0bff4385ce08d7d..79f83f08b0e158029da172353565033d7d83e72c 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreCommandGrantPrivilege.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreCommandGrantPrivilege.java @@ -1,7 +1,6 @@ /* * DBeaver - Universal Database Manager * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) - * Copyright (C) 2011-2012 Eugene Fradkin (eugene.fradkin@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgrePrivilege.java b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgrePrivilege.java index 67549da988ca6620c120e4fd4c863d2f3e1a2841..54514317434724a2aebe114fdbea2f580f1b1d37 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgrePrivilege.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgrePrivilege.java @@ -48,6 +48,17 @@ public class PostgrePrivilege { this.withHierarchy = JDBCUtils.safeGetBoolean(dbResult, "with_hierarchy"); } + public PostgrePrivilege(String grantor, String grantee, String tableCatalog, String tableSchema, String tableName, PostgrePrivilegeType privilegeType, boolean isGrantable, boolean withHierarchy) { + this.grantor = grantor; + this.grantee = grantee; + this.tableCatalog = tableCatalog; + this.tableSchema = tableSchema; + this.tableName = tableName; + this.privilegeType = privilegeType; + this.isGrantable = isGrantable; + this.withHierarchy = withHierarchy; + } + public String getGrantor() { return grantor; } 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 59618f1ddbe1d3387f67bb92155232ffefe0230c..aa878ca3d5f0cbc6d2e501b74b24e0dd10fbc231 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 @@ -64,9 +64,7 @@ import org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorTree; import org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorTreeFilter; import java.lang.reflect.InvocationTargetException; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * PostgresRolePrivilegesEditor @@ -84,58 +82,6 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor

permissionMap = new HashMap<>(); public void createPartControl(Composite parent) { - - { -/* - actionGrant = new Action("Grant " + (isRoleEditor() ? "object" : "role"), DBeaverIcons.getImageDescriptor(getObjectAddIcon())) { - @Override - public void run() { - try { - VoidProgressMonitor monitor = new VoidProgressMonitor(); - if (isRoleEditor()) { - DBNDatabaseNode dbNode = NavigatorUtils.getNodeByObject(getDatabaseObject().getDatabase()); - DBNDatabaseNode schemasNode = NavigatorUtils.getChildFolder(monitor, dbNode, PostgreSchema.class); - - List tableNodes = BrowseObjectDialog.selectObjects(getSite().getShell(), "Select object", schemasNode, null, - new Class[]{Object.class}, new Class[]{PostgreTableBase.class}); - if (tableNodes != null) { - for (DBNNode node : tableNodes) { - - } - } - } else { - List allRoles = new ArrayList<>(getDatabaseObject().getDatabase().getAuthIds(monitor)); - if (currentPrivs != null) { - for (PostgrePermission p : currentPrivs) { - allRoles.remove(p.getTargetObject(monitor)); - } - } - SelectObjectDialog roleSelector = new SelectObjectDialog<>( - getSite().getShell(), - "Select role", - true, - "Permissions/Role/Selector", - allRoles, - null); - if (roleSelector.open() == IDialogConstants.OK_ID) { - - } - } - } catch (DBException e) { - DBeaverUI.getInstance().showError("Load object", "Error loading permission objects", e); - } - } - }; - - actionRevoke = new Action("Revoke " + (isRoleEditor() ? "object" : "role"), DBeaverIcons.getImageDescriptor(getObjectRemoveIcon())) { - @Override - public void run() { - super.run(); - } - }; -*/ - } - this.pageControl = new PageControl(parent); SashForm composite = UIUtils.createPartDivider(getSite().getPart(), this.pageControl, SWT.HORIZONTAL); @@ -192,7 +138,6 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor

privileges = new ArrayList<>(); +// privileges.add(new PostgrePrivilege( +// getDatabaseObject().getDataSource().getContainer().getConnectionConfiguration().getUserName(), +// getDatabaseObject().getName(), +// table.getSchema().getDatabase().getName(), +// table.getSchema().getName(), +// table.getName(), +// privilegeType, +// false, +// false)); + + currentPermission = new PostgreRolePermission(getDatabaseObject(), table.getSchema().getName(), table.getName(), privileges); + } else { + List privileges = new ArrayList<>(); + currentPermission = new PostgreTablePermission(getDatabaseObject(), currentObject.getName(), privileges); + } + // Add to map + permissionMap.put(currentPermission.getName(), currentPermission); + } // Add command addChangeCommand( new PostgreCommandGrantPrivilege( @@ -395,6 +367,7 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor

privs) { super.completeLoading(privs); + permissionMap.clear(); for (PostgrePermission perm : privs) { permissionMap.put(perm.getName(), perm); }