diff --git a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java index b4e895d6aab28e9a8c183b2074ca79aabd404a6e..a35c1ce05be6dde1144e04b406acadbddad4d76f 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java @@ -160,6 +160,8 @@ public class SQLEditor extends SQLEditorBase implements public static final String VAR_FILE_NAME = "fileName"; public static final String VAR_FILE_EXT = "fileExt"; public static final String VAR_DRIVER_NAME = "driverName"; + public static final String VAR_ACTIVE_DATABASE = "database"; + public static final String VAR_ACTIVE_SCHEMA = "schema"; public static final String DEFAULT_TITLE_PATTERN = "<${" + VAR_CONNECTION_NAME + "}> ${" + VAR_FILE_NAME + "}"; @@ -1567,11 +1569,23 @@ public class SQLEditor extends SQLEditorBase implements scriptPath = ""; } } - return - "Script: " + scriptPath + - " \nConnection: " + dataSourceContainer.getName() + - " \nType: " + (dataSourceContainer.getDriver().getFullName()) + - " \nURL: " + dataSourceContainer.getConnectionConfiguration().getUrl(); + + StringBuilder tip = new StringBuilder(); + tip + .append("Script: ").append(scriptPath) + .append(" \nConnection: ").append(dataSourceContainer.getName()) + .append(" \nType: ").append(dataSourceContainer.getDriver().getFullName()) + .append(" \nURL: ").append(dataSourceContainer.getConnectionConfiguration().getUrl()); + + Map vars = getScriptVariables(null, scriptPath); + if (vars.containsKey(VAR_ACTIVE_DATABASE)) { + tip.append(" \nDatabase: ").append(vars.get(VAR_ACTIVE_DATABASE)); + } + if (vars.containsKey(VAR_ACTIVE_SCHEMA)) { + tip.append(" \nSchema: ").append(vars.get(VAR_ACTIVE_SCHEMA)); + } + + return tip.toString(); } private String getEditorName() { @@ -1588,16 +1602,32 @@ public class SQLEditor extends SQLEditorBase implements } } - DBPDataSourceContainer dataSourceContainer = getDataSourceContainer(); + Map vars = getScriptVariables(file, scriptName); + DBPPreferenceStore preferenceStore = getActivePreferenceStore(); String pattern = preferenceStore.getString(SQLPreferenceConstants.SCRIPT_TITLE_PATTERN); + return GeneralUtils.replaceVariables(pattern, new GeneralUtils.MapResolver(vars)); + } + + @NotNull + private Map getScriptVariables(IFile file, String scriptName) { + DBPDataSourceContainer dataSourceContainer = getDataSourceContainer(); Map vars = new HashMap<>(); vars.put(VAR_CONNECTION_NAME, dataSourceContainer == null ? "none" : dataSourceContainer.getName()); vars.put(VAR_FILE_NAME, scriptName); vars.put(VAR_FILE_EXT, file == null ? "" : file.getFullPath().getFileExtension()); vars.put(VAR_DRIVER_NAME, dataSourceContainer == null ? "?" : dataSourceContainer.getDriver().getFullName()); - return GeneralUtils.replaceVariables(pattern, new GeneralUtils.MapResolver(vars)); + + final DBCExecutionContext executionContext = getExecutionContext(); + if (executionContext != null) { + DBCExecutionContextDefaults contextDefaults = executionContext.getContextDefaults(); + if (contextDefaults != null) { + vars.put(VAR_ACTIVE_DATABASE, contextDefaults.getDefaultCatalog()); + vars.put(VAR_ACTIVE_SCHEMA, contextDefaults.getDefaultSchema()); + } + } + return vars; } @Override @@ -2461,6 +2491,9 @@ public class SQLEditor extends SQLEditorBase implements } return; } + case SQLPreferenceConstants.SCRIPT_TITLE_PATTERN: + setPartName(getEditorName()); + return; } super.preferenceChange(event); } diff --git a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/preferences/PrefPageSQLResources.java b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/preferences/PrefPageSQLResources.java index 942dc2f51078eded2e6554a1c4e6329b29d77687..766f279cf5760f37adaef7b1a428ab4de3852aa4 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/preferences/PrefPageSQLResources.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/preferences/PrefPageSQLResources.java @@ -120,9 +120,12 @@ public class PrefPageSQLResources extends AbstractPrefPage implements IWorkbench GeneralUtils.variablePattern(SQLEditor.VAR_CONNECTION_NAME), GeneralUtils.variablePattern(SQLEditor.VAR_DRIVER_NAME), GeneralUtils.variablePattern(SQLEditor.VAR_FILE_NAME), - GeneralUtils.variablePattern(SQLEditor.VAR_FILE_EXT))); + GeneralUtils.variablePattern(SQLEditor.VAR_FILE_EXT), + GeneralUtils.variablePattern(SQLEditor.VAR_ACTIVE_DATABASE), + GeneralUtils.variablePattern(SQLEditor.VAR_ACTIVE_SCHEMA))); UIUtils.setContentProposalToolTip(scriptTitlePattern, "Output file name patterns", - SQLEditor.VAR_CONNECTION_NAME, SQLEditor.VAR_DRIVER_NAME, SQLEditor.VAR_FILE_NAME, SQLEditor.VAR_FILE_EXT); + SQLEditor.VAR_CONNECTION_NAME, SQLEditor.VAR_DRIVER_NAME, SQLEditor.VAR_FILE_NAME, SQLEditor.VAR_FILE_EXT, + SQLEditor.VAR_ACTIVE_DATABASE, SQLEditor.VAR_ACTIVE_SCHEMA); } performDefaults();