diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql.ui/plugin.xml b/plugins/org.jkiss.dbeaver.ext.postgresql.ui/plugin.xml index bb598da906a923217c7a5cd75e39d824ff169458..e8fc23ba88d36c93d1c422acd6b447cef6515bb1 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql.ui/plugin.xml +++ b/plugins/org.jkiss.dbeaver.ext.postgresql.ui/plugin.xml @@ -78,6 +78,7 @@ + { private final boolean members; MembersCache(boolean members) { @@ -292,6 +295,45 @@ public class PostgreRole implements PostgreObject, PostgrePrivilegeOwner, DBPPer return this; } + @Override + public void setObjectDefinitionText(String sourceText) throws DBException { + + } + + @Override + public String getObjectDefinitionText(DBRProgressMonitor monitor, Map options) throws DBException { + final String lineBreak = System.getProperty(StandardConstants.ENV_LINE_SEPARATOR); + StringBuilder ddl = new StringBuilder(); + ddl.append("-- DROP ROLE ").append(getName()).append(";\n\n"); //$NON-NLS-1$ //$NON-NLS-2$ + ddl.append("CREATE ROLE ").append(getName()).append(" WITH "); + addOptionToDDL(ddl, isSuperUser(), "SUPERUSER"); + addOptionToDDL(ddl, isCreateDatabase(), "CREATEDB"); + addOptionToDDL(ddl, isCreateRole(), "CREATEROLE"); + addOptionToDDL(ddl, isInherit(), "INHERIT"); + addOptionToDDL(ddl, isCanLogin(), "LOGIN"); + addOptionToDDL(ddl, isReplication(), "REPLICATION"); + addOptionToDDL(ddl, isBypassRls(), "BYPASSRLS"); + if (getConnLimit() > 0) { + ddl.append(lineBreak); + ddl.append("\tCONNECTION LIMIT ").append(getClass()); + } + if (getValidUntil() != null) { + ddl.append(lineBreak); + ddl.append("\tVALID UNTIL '").append(getValidUntil().toString()).append("'"); + } + ddl.append(";"); + return ddl.toString(); + } + + private void addOptionToDDL(StringBuilder ddl, boolean isOptionOn, String option) { + ddl.append(lineBreak).append("\t"); + if (isOptionOn) { + ddl.append(option); + } else { + ddl.append("NO").append(option); + } + } + @Override public List getPrivileges(DBRProgressMonitor monitor, boolean includeNestedObjects) { try (JDBCSession session = DBUtils.openMetaSession(monitor, this, "Read role privileges")) {