From 401ff7f95aa3326bf2180490d2d837f09d17404e Mon Sep 17 00:00:00 2001 From: jurgen Date: Wed, 6 May 2015 20:48:51 +0000 Subject: [PATCH] Custom statement delimiters Former-commit-id: e5b55d3b65f182e16b54d408e20c3435bada3ece --- .../src/org/jkiss/dbeaver/DBeaverPreferences.java | 1 + .../src/org/jkiss/dbeaver/core/CoreMessages.java | 1 + .../src/org/jkiss/dbeaver/core/CoreResources.properties | 1 + .../jkiss/dbeaver/core/DBeaverPreferencesInitializer.java | 1 + .../src/org/jkiss/dbeaver/ui/UIUtils.java | 6 +++++- .../src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java | 4 +++- .../dbeaver/ui/editors/sql/syntax/SQLSyntaxManager.java | 4 +++- .../jkiss/dbeaver/ui/preferences/PrefPageSQLExecute.java | 8 +++++++- 8 files changed, 22 insertions(+), 4 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java index 276749f3e3..625b1e846c 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java @@ -44,6 +44,7 @@ public final class DBeaverPreferences public static final String SCRIPT_ERROR_HANDLING = "script.error.handling"; //$NON-NLS-1$ public static final String SCRIPT_FETCH_RESULT_SETS = "script.fetch.resultset"; //$NON-NLS-1$ public static final String SCRIPT_STATEMENT_DELIMITER = "script.sql.delimiter"; //$NON-NLS-1$ + public static final String SCRIPT_IGNORE_NATIVE_DELIMITER = "script.sql.ignoreNativeDelimiter"; //$NON-NLS-1$ public static final String SCRIPT_AUTO_FOLDERS = "script.auto.folders"; //$NON-NLS-1$ public static final String SCRIPT_TITLE_PATTERN = "script.title.pattern"; //$NON-NLS-1$ diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreMessages.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreMessages.java index e6656ff74d..b9275f058a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreMessages.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreMessages.java @@ -1247,6 +1247,7 @@ public class CoreMessages extends NLS { public static String pref_page_sql_editor_checkbox_fetch_resultsets; public static String pref_page_sql_editor_text_statement_delimiter; + public static String pref_page_sql_editor_checkbox_ignore_native_delimiter; public static String pref_page_sql_editor_title_pattern; public static String pref_page_sql_editor_checkbox_put_new_scripts; diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties index 7358b60ec5..57117457a3 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties @@ -829,6 +829,7 @@ pref_page_query_manager_logs_folder=Log files folder pref_page_sql_editor_checkbox_fetch_resultsets=Fetch resultsets pref_page_sql_editor_text_statement_delimiter=Statements delimiter +pref_page_sql_editor_checkbox_ignore_native_delimiter=Ignore native delimiter pref_page_sql_editor_checkbox_put_new_scripts=Put new scripts in folders pref_page_sql_editor_title_pattern=Script title pattern pref_page_sql_editor_combo_item_each_line_autocommit=After each line (autocommit) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverPreferencesInitializer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverPreferencesInitializer.java index 657353af9e..957c629d79 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverPreferencesInitializer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverPreferencesInitializer.java @@ -89,6 +89,7 @@ public class DBeaverPreferencesInitializer extends AbstractPreferenceInitializer RuntimeUtils.setDefaultPreferenceValue(store, DBeaverPreferences.SCRIPT_ERROR_HANDLING, SQLScriptErrorHandling.STOP_ROLLBACK.name()); RuntimeUtils.setDefaultPreferenceValue(store, DBeaverPreferences.SCRIPT_FETCH_RESULT_SETS, false); RuntimeUtils.setDefaultPreferenceValue(store, DBeaverPreferences.SCRIPT_STATEMENT_DELIMITER, SQLConstants.DEFAULT_STATEMENT_DELIMITER); + RuntimeUtils.setDefaultPreferenceValue(store, DBeaverPreferences.SCRIPT_IGNORE_NATIVE_DELIMITER, false); RuntimeUtils.setDefaultPreferenceValue(store, DBeaverPreferences.SCRIPT_AUTO_FOLDERS, false); RuntimeUtils.setDefaultPreferenceValue(store, DBeaverPreferences.SCRIPT_TITLE_PATTERN, SQLEditorInput.DEFAULT_PATTERN); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIUtils.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIUtils.java index 6516da11b3..3620a05a8a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIUtils.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIUtils.java @@ -59,6 +59,7 @@ import org.jkiss.dbeaver.utils.ContentUtils; import org.jkiss.utils.ArrayUtils; import org.jkiss.utils.CommonUtils; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.nio.charset.Charset; import java.text.DecimalFormatSymbols; @@ -1143,7 +1144,10 @@ public class UIUtils { Method activatorMethod = AbstractTextEditor.class.getDeclaredMethod("setActionActivation", Boolean.TYPE); activatorMethod.setAccessible(true); activatorMethod.invoke(hostEditor, enable); - } catch (Exception e) { + } catch (Throwable e) { + if (e instanceof InvocationTargetException) { + e = ((InvocationTargetException) e).getTargetException(); + } log.warn("Can't disable text editor action activations", e); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java index 46c148ef56..aac3b6aa51 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java @@ -875,7 +875,9 @@ public class SQLEditor extends SQLEditorBase @Override public void propertyChange(PropertyChangeEvent event) { - if (event.getProperty().equals(DBeaverPreferences.SCRIPT_STATEMENT_DELIMITER)) { + if (event.getProperty().equals(DBeaverPreferences.SCRIPT_STATEMENT_DELIMITER) || + event.getProperty().equals(DBeaverPreferences.SCRIPT_IGNORE_NATIVE_DELIMITER)) + { reloadSyntaxRules(); } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLSyntaxManager.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLSyntaxManager.java index 591ab9ba2b..e211624be8 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLSyntaxManager.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLSyntaxManager.java @@ -158,7 +158,9 @@ public class SQLSyntaxManager extends RuleBasedScanner { catalogSeparator = sqlDialect.getCatalogSeparator(); sqlDialect.getSearchStringEscape(); escapeChar = '\\'; - statementDelimiters.add(sqlDialect.getScriptDelimiter().toLowerCase()); + if (!this.dataSource.getContainer().getPreferenceStore().getBoolean(DBeaverPreferences.SCRIPT_IGNORE_NATIVE_DELIMITER)) { + statementDelimiters.add(sqlDialect.getScriptDelimiter().toLowerCase()); + } String extraDelimiters = this.dataSource.getContainer().getPreferenceStore().getString(DBeaverPreferences.SCRIPT_STATEMENT_DELIMITER); StringTokenizer st = new StringTokenizer(extraDelimiters, " \t,"); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLExecute.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLExecute.java index 4af40025e2..5118eedfec 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLExecute.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLExecute.java @@ -47,6 +47,7 @@ public class PrefPageSQLExecute extends TargetPrefPage private Spinner commitLinesText; private Button fetchResultSetsCheck; private Text statementDelimiterText; + private Button ignoreNativeDelimiter; public PrefPageSQLExecute() { @@ -64,7 +65,8 @@ public class PrefPageSQLExecute extends TargetPrefPage store.contains(DBeaverPreferences.SCRIPT_ERROR_HANDLING) || store.contains(DBeaverPreferences.SCRIPT_COMMIT_LINES) || store.contains(DBeaverPreferences.SCRIPT_FETCH_RESULT_SETS) || - store.contains(DBeaverPreferences.SCRIPT_STATEMENT_DELIMITER) + store.contains(DBeaverPreferences.SCRIPT_STATEMENT_DELIMITER) || + store.contains(DBeaverPreferences.SCRIPT_IGNORE_NATIVE_DELIMITER) ; } @@ -130,6 +132,7 @@ public class PrefPageSQLExecute extends TargetPrefPage fetchResultSetsCheck = UIUtils.createLabelCheckbox(scriptsGroup, CoreMessages.pref_page_sql_editor_checkbox_fetch_resultsets, false); statementDelimiterText = UIUtils.createLabelText(scriptsGroup, CoreMessages.pref_page_sql_editor_text_statement_delimiter, ""); + ignoreNativeDelimiter = UIUtils.createLabelCheckbox(scriptsGroup, CoreMessages.pref_page_sql_editor_checkbox_ignore_native_delimiter, false); } return composite; @@ -147,6 +150,7 @@ public class PrefPageSQLExecute extends TargetPrefPage commitLinesText.setSelection(store.getInt(DBeaverPreferences.SCRIPT_COMMIT_LINES)); fetchResultSetsCheck.setSelection(store.getBoolean(DBeaverPreferences.SCRIPT_FETCH_RESULT_SETS)); statementDelimiterText.setText(store.getString(DBeaverPreferences.SCRIPT_STATEMENT_DELIMITER)); + ignoreNativeDelimiter.setSelection(store.getBoolean(DBeaverPreferences.SCRIPT_IGNORE_NATIVE_DELIMITER)); } catch (Exception e) { log.warn(e); } @@ -164,6 +168,7 @@ public class PrefPageSQLExecute extends TargetPrefPage store.setValue(DBeaverPreferences.SCRIPT_ERROR_HANDLING, CommonUtils.fromOrdinal(SQLScriptErrorHandling.class, errorHandlingCombo.getSelectionIndex()).name()); store.setValue(DBeaverPreferences.SCRIPT_FETCH_RESULT_SETS, fetchResultSetsCheck.getSelection()); store.setValue(DBeaverPreferences.SCRIPT_STATEMENT_DELIMITER, statementDelimiterText.getText()); + store.setValue(DBeaverPreferences.SCRIPT_IGNORE_NATIVE_DELIMITER, ignoreNativeDelimiter.getSelection()); } catch (Exception e) { log.warn(e); } @@ -181,6 +186,7 @@ public class PrefPageSQLExecute extends TargetPrefPage store.setToDefault(DBeaverPreferences.SCRIPT_ERROR_HANDLING); store.setToDefault(DBeaverPreferences.SCRIPT_FETCH_RESULT_SETS); store.setToDefault(DBeaverPreferences.SCRIPT_STATEMENT_DELIMITER); + store.setToDefault(DBeaverPreferences.SCRIPT_IGNORE_NATIVE_DELIMITER); } @Override -- GitLab