提交 810d3742 编写于 作者: S Serge Rider

PG: permissions model

上级 49b339ee
......@@ -34,15 +34,17 @@ import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IWorkbenchCommandConstants;
import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.MultiPageEditorSite;
import org.eclipse.ui.progress.UIJob;
import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.ProxyProgressMonitor;
import org.jkiss.dbeaver.model.runtime.load.ILoadVisualizer;
import org.jkiss.dbeaver.ui.*;
import org.jkiss.dbeaver.ui.controls.folders.ITabbedFolderEditorSite;
import org.jkiss.utils.CommonUtils;
import java.util.ArrayList;
......@@ -137,6 +139,26 @@ public class ProgressPageControl extends Composite implements ISearchContextProv
this.ownerPageControl = externalPageControl;
}
public void createOrSubstituteProgressPanel(IWorkbenchPartSite site) {
ProgressPageControl progressControl = findOwnerPageControl(site);
if (progressControl != null) {
substituteProgressPanel(progressControl);
} else {
createProgressPanel();
}
}
private ProgressPageControl findOwnerPageControl(IWorkbenchPartSite site) {
if (site instanceof ITabbedFolderEditorSite && ((ITabbedFolderEditorSite) site).getFolderEditor() instanceof IProgressControlProvider) {
return ((IProgressControlProvider)((ITabbedFolderEditorSite) site).getFolderEditor()).getProgressControl();
} else if (site instanceof MultiPageEditorSite && ((MultiPageEditorSite) site).getMultiPageEditor() instanceof IProgressControlProvider) {
return ((IProgressControlProvider)((MultiPageEditorSite) site).getMultiPageEditor()).getProgressControl();
} else {
return null;
}
}
private void setChildControl(ProgressPageControl progressPageControl)
{
if (progressPageControl == this.childPageControl) {
......
......@@ -118,18 +118,7 @@ public abstract class SQLEditorNested<T extends DBSObject>
}
// Create new or substitute progress control
ProgressPageControl progressControl = null;
IWorkbenchPartSite site = getSite();
if (site instanceof ITabbedFolderEditorSite && ((ITabbedFolderEditorSite) site).getFolderEditor() instanceof IProgressControlProvider) {
progressControl = ((IProgressControlProvider)((ITabbedFolderEditorSite) site).getFolderEditor()).getProgressControl();
} else if (site instanceof MultiPageEditorSite && ((MultiPageEditorSite) site).getMultiPageEditor() instanceof IProgressControlProvider) {
progressControl = ((IProgressControlProvider)((MultiPageEditorSite) site).getMultiPageEditor()).getProgressControl();
}
if (progressControl != null) {
pageControl.substituteProgressPanel(progressControl);
} else {
pageControl.createProgressPanel();
}
pageControl.createOrSubstituteProgressPanel(getSite());
pageControl.setInfo("Source");
if (hasCompiler) {
......
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2016 Serge Rieder (serge@jkiss.org)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License (version 2)
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.jkiss.dbeaver.ext.postgresql.model;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.struct.DBSObject;
import java.util.List;
/**
* PostgrePermission
*/
public abstract class PostgrePermission implements DBSObject {
public static final short NONE = 0;
public static final short GRANTED = 1;
public static final short WITH_GRANT_OPTION = 2;
public static final short WITH_HIERARCHY = 4;
public static class PrivilegePermission {
@NotNull
private PostgrePrivilegeType privilegeType;
@NotNull
private String grantor;
private short permissions;
public PrivilegePermission(@NotNull PostgrePrivilegeType privilegeType, @NotNull String grantor, short permissions) {
this.privilegeType = privilegeType;
this.grantor = grantor;
this.permissions = permissions;
}
@NotNull
public PostgrePrivilegeType getPrivilegeType() {
return privilegeType;
}
@NotNull
public String getGrantor() {
return grantor;
}
public short getPermissions() {
return permissions;
}
@Override
public String toString() {
return privilegeType.toString();
}
}
private final PostgrePermissionsOwner owner;
private PrivilegePermission[] permissions;
public PostgrePermission(PostgrePermissionsOwner owner, List<PostgrePrivilege> privileges) {
this.owner = owner;
this.permissions = new PrivilegePermission[privileges.size()];
for (int i = 0 ; i < privileges.size(); i++) {
final PostgrePrivilege privilege = privileges.get(i);
short permission = GRANTED;
if (privilege.isGrantable()) permission |= WITH_GRANT_OPTION;
if (privilege.isWithHierarchy()) permission |= WITH_HIERARCHY;
this.permissions[i] = new PrivilegePermission(privilege.getPrivilegeType(), privilege.getGrantor(), permission);
}
}
@NotNull
@Override
public String getName() {
return toString();
}
@Override
public boolean isPersisted() {
return true;
}
@Nullable
@Override
public String getDescription() {
return null;
}
@Nullable
@Override
public DBSObject getParentObject() {
return owner;
}
@NotNull
@Override
public DBPDataSource getDataSource() {
return owner.getDataSource();
}
public PrivilegePermission[] getPermissions() {
return permissions;
}
public short getPermission(PostgrePrivilegeType privilegeType) {
for (int i = 0; i < permissions.length; i++) {
if (permissions[i].privilegeType == privilegeType) {
return permissions[i].permissions;
}
}
return NONE;
}
}
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2016 Serge Rieder (serge@jkiss.org)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License (version 2)
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.jkiss.dbeaver.ext.postgresql.model;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import java.util.List;
/**
* PostgrePermissionsOwner
*/
public interface PostgrePermissionsOwner extends PostgreObject {
List<? extends PostgrePermission> getPermissions(DBRProgressMonitor monitor) throws DBException;
}
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2016 Serge Rieder (serge@jkiss.org)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License (version 2)
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.jkiss.dbeaver.ext.postgresql.model;
import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* PostgrePrivilege
*/
public class PostgrePrivilege {
private String grantor;
private String grantee;
private String tableCatalog;
private String tableSchema;
private String tableName;
private PostgrePrivilegeType privilegeType;
private boolean isGrantable;
private boolean withHierarchy;
public PostgrePrivilege(ResultSet dbResult)
throws SQLException
{
this.grantor = JDBCUtils.safeGetString(dbResult, "grantor");
this.grantee = JDBCUtils.safeGetString(dbResult, "grantee");
this.tableCatalog = JDBCUtils.safeGetString(dbResult, "table_catalog");
this.tableSchema = JDBCUtils.safeGetString(dbResult, "table_schema");
this.tableName = JDBCUtils.safeGetString(dbResult, "table_name");
this.privilegeType = PostgrePrivilegeType.fromString(JDBCUtils.safeGetString(dbResult, "privilege_type"));
this.isGrantable = JDBCUtils.safeGetBoolean(dbResult, "is_grantable");
this.withHierarchy = JDBCUtils.safeGetBoolean(dbResult, "with_hierarchy");
}
public String getGrantor() {
return grantor;
}
public String getGrantee() {
return grantee;
}
public String getTableCatalog() {
return tableCatalog;
}
public String getTableSchema() {
return tableSchema;
}
public String getTableName() {
return tableName;
}
public PostgrePrivilegeType getPrivilegeType() {
return privilegeType;
}
public boolean isGrantable() {
return isGrantable;
}
public boolean isWithHierarchy() {
return withHierarchy;
}
@Override
public String toString() {
return privilegeType.toString();
}
}
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2016 Serge Rieder (serge@jkiss.org)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License (version 2)
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.jkiss.dbeaver.ext.postgresql.model;
/**
* PostgrePrivilegeType
*/
public enum PostgrePrivilegeType {
SELECT,
INSERT,
UPDATE,
DELETE,
TRUNCATE,
REFERENCES,
TRIGGER,
UNKNOWN;
public static PostgrePrivilegeType fromString(String type) {
try {
return valueOf(type);
} catch (IllegalArgumentException e) {
return UNKNOWN;
}
}
}
......@@ -20,6 +20,7 @@ package org.jkiss.dbeaver.ext.postgresql.model;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession;
......@@ -33,14 +34,12 @@ import org.jkiss.dbeaver.model.struct.DBSObject;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.*;
/**
* PostgreRole
*/
public class PostgreRole implements PostgreObject {
public class PostgreRole implements PostgreObject, PostgrePermissionsOwner {
public static final String CAT_SETTINGS = "Settings";
public static final String CAT_FLAGS = "Flags";
......@@ -213,8 +212,44 @@ public class PostgreRole implements PostgreObject {
return belongsCache.getAllObjects(monitor, this);
}
public List<PostgreRolePrivilege> getPrivileges(DBRProgressMonitor monitor) throws DBException {
return null;
@Override
public List<PostgreRolePermission> getPermissions(DBRProgressMonitor monitor) throws DBException {
try (JDBCSession session = DBUtils.openMetaSession(monitor, getDataSource(), "Read role privileges")) {
try (JDBCPreparedStatement dbStat = session.prepareStatement(
"SELECT * FROM information_schema.table_privileges WHERE table_catalog=? AND grantee=?"))
{
dbStat.setString(1, getDatabase().getName());
dbStat.setString(2, getName());
try (JDBCResultSet dbResult = dbStat.executeQuery()) {
Map<String, List<PostgrePrivilege>> privs = new LinkedHashMap<>();
while (dbResult.next()) {
PostgrePrivilege privilege = new PostgrePrivilege(dbResult);
String tableId = privilege.getTableSchema() + "." + privilege.getTableName();
List<PostgrePrivilege> privList = privs.get(tableId);
if (privList == null) {
privList = new ArrayList<>();
privs.put(tableId, privList);
}
privList.add(privilege);
}
// Pack to permission list
List<PostgreRolePermission> result = new ArrayList<>(privs.size());
for (List<PostgrePrivilege> priv : privs.values()) {
result.add(new PostgreRolePermission(this, priv.get(0).getTableSchema(), priv.get(0).getTableName(), priv));
}
Collections.sort(result, new Comparator<PostgreRolePermission>() {
@Override
public int compare(PostgreRolePermission o1, PostgreRolePermission o2) {
final int res = o1.getSchemaName().compareTo(o2.getSchemaName());
return res != 0 ? res : o1.getTableName().compareTo(o2.getTableName());
}
});
return result;
}
} catch (SQLException e) {
throw new DBException(e, getDataSource());
}
}
}
@Override
......
......@@ -17,66 +17,46 @@
*/
package org.jkiss.dbeaver.ext.postgresql.model;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
/**
* PostgreRolePrivilege
* PostgreRolePermission
*/
public class PostgreRolePrivilege implements DBSObject {
public class PostgreRolePermission extends PostgrePermission {
private final PostgreDatabase database;
private String schemaName;
private String tableName;
public PostgreRolePrivilege(PostgreDatabase database, ResultSet dbResult)
throws SQLException
{
this.database = database;
public PostgreRolePermission(PostgrePermissionsOwner owner, String schemaName, String tableName, List<PostgrePrivilege> privileges) {
super(owner, privileges);
this.schemaName = schemaName;
this.tableName = tableName;
}
@Nullable
@Override
public String getDescription() {
return null;
public String getSchemaName() {
return schemaName;
}
@Nullable
@Override
public DBSObject getParentObject() {
return database;
}
@NotNull
@Override
public PostgreDataSource getDataSource() {
return database.getDataSource();
public String getTableName() {
return tableName;
}
@Override
public boolean isPersisted() {
return true;
}
@NotNull
@Override
@Property(viewable = true, order = 1)
public String getName()
{
return "";
public String getFullTableName() {
return DBUtils.getQuotedIdentifier(getDataSource(), schemaName) + "." +
DBUtils.getQuotedIdentifier(getDataSource(), tableName);
}
@NotNull
public PostgreDatabase getDatabase() {
return database;
public Object getTable(DBRProgressMonitor monitor) throws DBException {
return getFullTableName();
}
@Override
public String toString() {
return getName();
return getFullTableName();
}
}
......@@ -17,20 +17,27 @@
*/
package org.jkiss.dbeaver.ext.postgresql.ui.editors;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.postgresql.model.PostgreRole;
import org.jkiss.dbeaver.ext.postgresql.model.PostgreRolePrivilege;
import org.jkiss.dbeaver.ext.postgresql.model.*;
import org.jkiss.dbeaver.model.DBIcon;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.load.DatabaseLoadService;
import org.jkiss.dbeaver.ui.DBeaverIcons;
import org.jkiss.dbeaver.ui.LoadingJob;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.controls.ObjectEditorPageControl;
import org.jkiss.dbeaver.ui.controls.ProgressPageControl;
import org.jkiss.dbeaver.ui.controls.TreeContentProvider;
import org.jkiss.dbeaver.ui.controls.ViewerColumnController;
import org.jkiss.dbeaver.ui.editors.AbstractDatabaseObjectEditor;
import java.lang.reflect.InvocationTargetException;
......@@ -39,7 +46,7 @@ import java.util.List;
/**
* PostgresRolePrivilegesEditor
*/
public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<PostgreRole>
public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<PostgrePermissionsOwner>
{
private static final Log log = Log.getLog(PostgresRolePrivilegesEditor.class);
......@@ -47,6 +54,8 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
private Font boldFont;
private boolean isLoaded;
private TreeViewer permissionTable;
private ViewerColumnController columnController;
@Override
public void createPartControl(Composite parent)
......@@ -54,87 +63,60 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
boldFont = UIUtils.makeBoldFont(parent.getFont());
pageControl = new PageControl(parent);
final Composite contentContainer = pageControl.createContentContainer();
Composite container = UIUtils.createPlaceholder(pageControl, 2, 5);
GridData gd = new GridData(GridData.FILL_BOTH);
container.setLayoutData(gd);
Composite leftPane = UIUtils.createPlaceholder(container, 2);
leftPane.setLayoutData(new GridData(GridData.FILL_BOTH));
leftPane.setLayout(new GridLayout(2, true));
/*
{
Composite catalogGroup = UIUtils.createControlGroup(leftPane, MySQLMessages.editors_user_editor_privileges_group_catalogs, 1, GridData.FILL_BOTH, 0);
this.permissionTable = new TreeViewer(contentContainer, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
this.permissionTable.getTree().setHeaderVisible(true);
this.permissionTable.setContentProvider(new TreeContentProvider() {
@Override
public Object[] getChildren(Object parentElement) {
return null;
}
catalogsTable = new Table(catalogGroup, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
catalogsTable.setHeaderVisible(true);
gd = new GridData(GridData.FILL_BOTH);
catalogsTable.setLayoutData(gd);
catalogsTable.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
int selIndex = catalogsTable.getSelectionIndex();
if (selIndex <= 0) {
selectedCatalog = null;
} else {
selectedCatalog = (MySQLCatalog) catalogsTable.getItem(selIndex).getData();
}
showCatalogTables();
showGrants();
public boolean hasChildren(Object element) {
return false;
}
});
UIUtils.createTableColumn(catalogsTable, SWT.LEFT, MySQLMessages.editors_user_editor_privileges_column_catalog);
{
TableItem item = new TableItem(catalogsTable, SWT.NONE);
item.setText("% (All)"); //$NON-NLS-1$
item.setImage(DBeaverIcons.getImage(DBIcon.TREE_DATABASE));
}
for (MySQLCatalog catalog : getDatabaseObject().getDataSource().getCatalogs()) {
TableItem item = new TableItem(catalogsTable, SWT.NONE);
item.setText(catalog.getName());
item.setImage(DBeaverIcons.getImage(DBIcon.TREE_DATABASE));
item.setData(catalog);
}
UIUtils.packColumns(catalogsTable);
}
{
Composite tablesGroup = UIUtils.createControlGroup(leftPane, MySQLMessages.editors_user_editor_privileges_group_tables, 1, GridData.FILL_BOTH, 0);
final boolean roleEditor = isRoleEditor();
columnController = new ViewerColumnController("PostgreSQL/Permissions/" + (roleEditor ? "Role" : "Object"), permissionTable);
if (roleEditor) {
columnController.addColumn("Object", "Granted object", SWT.LEFT, true, true, new ColumnLabelProvider() {
@Override
public Image getImage(Object element) {
return DBeaverIcons.getImage(DBIcon.TREE_TABLE);
}
tablesTable = new Table(tablesGroup, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
tablesTable.setHeaderVisible(true);
gd = new GridData(GridData.FILL_BOTH);
tablesTable.setLayoutData(gd);
tablesTable.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
int selIndex = tablesTable.getSelectionIndex();
if (selIndex <= 0) {
selectedTable = null;
} else {
selectedTable = (MySQLTableBase) tablesTable.getItem(selIndex).getData();
@Override
public String getText(Object element) {
return ((PostgreRolePermission) element).getFullTableName();
}
});
} else {
columnController.addColumn("Role", "Granted role", SWT.LEFT, true, true, new ColumnLabelProvider() {
@Override
public Image getImage(Object element) {
return DBeaverIcons.getImage(DBIcon.TREE_USER);
}
showGrants();
@Override
public String getText(Object element) {
return ((PostgrePermission) element).toString();
}
});
}
columnController.addColumn("SELECT", "SELECT permissions", SWT.LEFT, true, true, new ColumnLabelProvider() {
@Override
public String getText(Object element) {
return "NO";
}
});
UIUtils.createTableColumn(tablesTable, SWT.LEFT, MySQLMessages.editors_user_editor_privileges_column_table);
UIUtils.packColumns(tablesTable);
}
Composite ph = UIUtils.createPlaceholder(container, 1);
ph.setLayoutData(new GridData(GridData.FILL_BOTH));
tablePrivilegesTable = new PrivilegeTableControl(ph, MySQLMessages.editors_user_editor_privileges_control_table_privileges);
gd = new GridData(GridData.FILL_BOTH);
tablePrivilegesTable.setLayoutData(gd);
otherPrivilegesTable = new PrivilegeTableControl(ph, MySQLMessages.editors_user_editor_privileges_control_other_privileges);
gd = new GridData(GridData.FILL_BOTH);
otherPrivilegesTable.setLayoutData(gd);
catalogsTable.setSelection(0);
showCatalogTables();
pageControl.createProgressPanel();
columnController.createColumns(true);
pageControl.createOrSubstituteProgressPanel(getSite());
parent.addDisposeListener(new DisposeListener() {
@Override
......@@ -144,11 +126,11 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
}
});
addGrantListener(tablePrivilegesTable);
addGrantListener(otherPrivilegesTable);
*/
}
private boolean isRoleEditor() {
return getDatabaseObject() instanceof PostgreRole;
}
@Override
public void setFocus() {
......@@ -161,12 +143,16 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
return;
}
isLoaded = true;
loadPrivileges();
}
private void loadPrivileges() {
LoadingJob.createService(
new DatabaseLoadService<List<PostgreRolePrivilege>>("Load privileges", getExecutionContext()) {
new DatabaseLoadService<List<? extends PostgrePermission>>("Load privileges", getExecutionContext()) {
@Override
public List<PostgreRolePrivilege> evaluate(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
public List<? extends PostgrePermission> evaluate(DBRProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
try {
return getDatabaseObject().getPrivileges(monitor);
return getDatabaseObject().getPermissions(monitor);
} catch (DBException e) {
throw new InvocationTargetException(e);
}
......@@ -179,36 +165,20 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
@Override
public void refreshPart(Object source, boolean force)
{
// do nothing
loadPrivileges();
}
private class PageControl extends ProgressPageControl {
private class PageControl extends ObjectEditorPageControl {
public PageControl(Composite parent) {
super(parent, SWT.NONE);
super(parent, SWT.SHEET, PostgresRolePrivilegesEditor.this);
}
public ProgressPageControl.ProgressVisualizer<List<PostgreRolePrivilege>> createPrivilegesLoadVisualizer() {
return new ProgressPageControl.ProgressVisualizer<List<PostgreRolePrivilege>>() {
public ProgressPageControl.ProgressVisualizer<List<? extends PostgrePermission>> createPrivilegesLoadVisualizer() {
return new ProgressPageControl.ProgressVisualizer<List<? extends PostgrePermission>>() {
@Override
public void completeLoading(List<PostgreRolePrivilege> privs) {
public void completeLoading(List<? extends PostgrePermission> privs) {
super.completeLoading(privs);
/*
List<MySQLPrivilege> otherPrivs = new ArrayList<>();
List<MySQLPrivilege> tablePrivs = new ArrayList<>();
for (MySQLPrivilege priv : privs) {
if (priv.getKind() == MySQLPrivilege.Kind.ADMIN) {
continue;
}
if (priv.getContext().contains("Table")) {
tablePrivs.add(priv);
} else {
otherPrivs.add(priv);
}
}
tablePrivilegesTable.fillPrivileges(tablePrivs);
otherPrivilegesTable.fillPrivileges(otherPrivs);
loadGrants();
*/
permissionTable.setInput(privs);
}
};
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册