提交 e5b55d3b 编写于 作者: J jurgen

Custom statement delimiters

上级 612dafaa
......@@ -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$
......
......@@ -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;
......
......@@ -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)
......
......@@ -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);
......
......@@ -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);
}
......
......@@ -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();
}
}
......
......@@ -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,");
......
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册