提交 8557c6f9 编写于 作者: S serge-rider

#2201 Error auto-recover model/prefs

上级 6e389bad
......@@ -18,6 +18,7 @@ pref.page.name.meta = \u041C\u0435\u0442\u0430\u0434\u0430\u04
pref.page.name.navigator = \u041D\u0430\u0432\u0438\u0433\u0430\u0442\u043E\u0440
pref.page.name.query.manager = \u041C\u0435\u043D\u0435\u0434\u0436\u0435\u0440 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432
pref.page.name.resources = \u0420\u0435\u0441\u0443\u0440\u0441\u044B
pref.page.name.errorHandle = \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043E\u0448\u0438\u0431\u043E\u043A
pref.page.name.resultset = \u0414\u0430\u043D\u043D\u044B\u0435
pref.page.name.resultset.editors = \u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u044B \u0434\u0430\u043D\u043D\u044B\u0445
pref.page.name.resultset.presentation = \u041F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435
......
......@@ -13,4 +13,5 @@ pref.page.name.drivers=\u0414\u0440\u0430\u0439\u0432\u0435\u0440\u044B
pref.page.name.connectionTypes=\u0422\u0438\u043F\u044B \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0439
pref.page.name.resources=\u0420\u0435\u0441\u0443\u0440\u0441\u044B
pref.page.name.confirmations=\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F
pref.page.name.resultset=\u0412\u044B\u0431\u043E\u0440\u043A\u0438
\ No newline at end of file
pref.page.name.resultset=\u0412\u044B\u0431\u043E\u0440\u043A\u0438
pref.page.name.errorHandle=\u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043E\u0448\u0438\u0431\u043E\u043A
\ No newline at end of file
......@@ -326,6 +326,14 @@ pref_page_database_resultsets_group_binary=\u0414\u0432\u043E\u0438\u0447\u043D\
pref_page_database_resultsets_label_binary_use_strings=\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0431\u0430\u0439\u0442\u044B \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043E\u043A\u0438
pref_page_database_resultsets_label_binary_strings_max_length=\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0434\u043B\u0438\u043D\u0430 \u0434\u0432\u043E\u0438\u0447\u043D\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0438
pref_page_error_handle_name = \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043E\u0448\u0438\u0431\u043E\u043A
pref_page_error_handle_description = \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u043E\u0448\u0438\u0431\u043E\u043A
pref_page_error_handle_group_execute_title = \u041E\u0448\u0438\u0431\u043A\u0438 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432
pref_page_error_handle_recover_enabled_label = \u0410\u0432\u0442\u043E-\u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0439
pref_page_error_handle_recover_enabled_tip = \u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0442\u044C \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043F\u0440\u0438 \u043E\u0448\u0438\u0431\u043A\u0435
pref_page_error_handle_recover_retry_count_label = \u0427\u0438\u0441\u043B\u043E \u043F\u043E\u043F\u044B\u0442\u043E\u043A \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F
pref_page_error_handle_recover_retry_count_tip = \u0427\u0438\u0441\u043B\u043E \u043F\u043E\u043F\u044B\u0442\u043E\u043A \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u043F\u043E\u0441\u043B\u0435 \u043E\u0448\u0438\u0431\u043A\u0438
pref_page_data_format_button_manage_profiles=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0444\u0438\u043B\u044F\u043C\u0438
pref_page_data_format_group_format=\u0424\u043E\u0440\u043C\u0430\u0442
pref_page_data_format_label_profile=\u041F\u0440\u043E\u0444\u0438\u043B\u044C
......
......@@ -34,6 +34,7 @@ pref.page.name.meta = Metadata
pref.page.name.navigator = Navigator
pref.page.name.query.manager = Query Manager
pref.page.name.resources = Resources
pref.page.name.errorHandle = Error Handle
pref.page.name.resultset = Result Sets
pref.page.name.resultset.editors = Editors
pref.page.name.resultset.presentation = Presentation
......
......@@ -227,6 +227,7 @@
<page id="org.jkiss.dbeaver.preferences.main" class="org.jkiss.dbeaver.ui.preferences.PrefPageDatabaseGeneral" name="%pref.page.name.db.configuration">
<keywordReference id="org.jkiss.dbeaver.core.keyword.pref.db.general"/>
</page>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.main.errorHandle" class="org.jkiss.dbeaver.ui.preferences.PrefPageErrorHandle" name="%pref.page.name.errorHandle"></page>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.main.resultset" class="org.jkiss.dbeaver.ui.preferences.PrefPageResultSetMain" name="%pref.page.name.resultset"></page>
<page category="org.jkiss.dbeaver.preferences.main.resultset" id="org.jkiss.dbeaver.preferences.main.resultset.editors" class="org.jkiss.dbeaver.ui.preferences.PrefPageResultSetEditors" name="%pref.page.name.resultset.editors">
<keywordReference id="org.jkiss.dbeaver.core.keyword.pref.editor.content"/>
......
......@@ -23,6 +23,7 @@ pref.page.name.connectionTypes=Connection Types
pref.page.name.navigator=Navigator
pref.page.name.resources=Resources
pref.page.name.confirmations=Confirmations
pref.page.name.errorHandle=Error Handle
pref.page.name.resultset=Result Sets
pref.page.name.resultset.editors=Editors
pref.page.name.resultset.presentation=Presentation
......
......@@ -48,8 +48,8 @@
<page id="org.jkiss.dbeaver.preferences.main" class="org.jkiss.dbeaver.ui.preferences.PrefPageDatabaseGeneral" name="%pref.page.name.db.configuration">
<keywordReference id="org.jkiss.dbeaver.core.keyword.pref.db.general"/>
</page>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.main.resultset" class="org.jkiss.dbeaver.ui.preferences.PrefPageResultSetMain" name="%pref.page.name.resultset">
</page>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.main.errorHandle" class="org.jkiss.dbeaver.ui.preferences.PrefPageErrorHandle" name="%pref.page.name.errorHandle"/>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.main.resultset" class="org.jkiss.dbeaver.ui.preferences.PrefPageResultSetMain" name="%pref.page.name.resultset"/>
<page category="org.jkiss.dbeaver.preferences.main.resultset" id="org.jkiss.dbeaver.preferences.main.resultset.editors" class="org.jkiss.dbeaver.ui.preferences.PrefPageResultSetEditors" name="%pref.page.name.resultset.editors">
<keywordReference id="org.jkiss.dbeaver.core.keyword.pref.editor.content"/>
</page>
......
......@@ -459,6 +459,8 @@ context.org.jkiss.dbeaver.ui.editors.sql.name = SQL Editor Context
column.org.jkiss.dbeaver.ui.editors.columns.script.position.name = Script position
page.org.jkiss.dbeaver.preferences.main.errorHandle.name = Error Handle
page.org.jkiss.dbeaver.preferences.main.resultset.name = Result Sets
page.org.jkiss.dbeaver.preferences.main.resultset.editors.name = Editors
page.org.jkiss.dbeaver.preferences.main.resultset.presentation.name = Presentation
......
......@@ -2658,6 +2658,15 @@
</extension>
<extension point="org.eclipse.ui.propertyPages">
<page id="org.jkiss.dbeaver.preferences.main.errorHandle" class="org.jkiss.dbeaver.ui.preferences.PrefPageErrorHandle" name="%page.org.jkiss.dbeaver.preferences.main.errorHandle.name">
<enabledWhen>
<or>
<instanceof value="org.jkiss.dbeaver.model.navigator.DBNDataSource"/>
<instanceof value="org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer"/>
<adapt type="org.jkiss.dbeaver.model.DBPDataSourceContainer"/>
</or>
</enabledWhen>
</page>
<page id="org.jkiss.dbeaver.preferences.main.resultset" class="org.jkiss.dbeaver.ui.preferences.PrefPageResultSetMain" name="%page.org.jkiss.dbeaver.preferences.main.resultset.name">
<enabledWhen>
<or>
......
......@@ -819,6 +819,14 @@ public class CoreMessages extends NLS {
public static String pref_page_database_resultsets_checkbox_string_use_editor;
public static String pref_page_database_resultsets_checkbox_string_use_editor_tip;
public static String pref_page_error_handle_name;
public static String pref_page_error_handle_description;
public static String pref_page_error_handle_group_execute_title;
public static String pref_page_error_handle_recover_enabled_label;
public static String pref_page_error_handle_recover_enabled_tip;
public static String pref_page_error_handle_recover_retry_count_label;
public static String pref_page_error_handle_recover_retry_count_tip;
public static String pref_page_query_manager_checkbox_ddl_executions;
public static String pref_page_query_manager_checkbox_metadata_read;
public static String pref_page_query_manager_checkbox_metadata_write;
......
......@@ -810,6 +810,14 @@ pref_page_database_resultsets_group_string = Strings
pref_page_database_resultsets_checkbox_string_use_editor = Open in separate editor
pref_page_database_resultsets_checkbox_string_use_editor_tip = Opens separate string editor instead of dialog
pref_page_error_handle_name = Error handle
pref_page_error_handle_description = Error handle settings
pref_page_error_handle_group_execute_title = Execute errors
pref_page_error_handle_recover_enabled_label = Connection auto-recover enabled
pref_page_error_handle_recover_enabled_tip = Automatically try to reconnect if connection failure error detected
pref_page_error_handle_recover_retry_count_label = Connection auto-recover retry count
pref_page_error_handle_recover_retry_count_tip = Number of connect tries after connection failure error
pref_page_drivers_group_location = Drivers location
pref_page_query_manager_checkbox_ddl_executions = DDL executions
pref_page_query_manager_checkbox_metadata_read = Metadata read
......
......@@ -144,6 +144,7 @@ public class EditConnectionWizard extends ConnectionWizard
}
addPreferencePage(new PrefPageMetaData(), CoreMessages.dialog_connection_edit_wizard_metadata, CoreMessages.dialog_connection_edit_wizard_metadata_description);
addPreferencePage(new PrefPageErrorHandle(), CoreMessages.pref_page_error_handle_name, CoreMessages.pref_page_error_handle_description);
WizardPrefPage rsPage = addPreferencePage(new PrefPageResultSetMain(), CoreMessages.dialog_connection_edit_wizard_resultset, CoreMessages.dialog_connection_edit_wizard_resultset_description);
rsPage.addSubPage(new PrefPageResultSetEditors(), CoreMessages.dialog_connection_edit_wizard_editors, CoreMessages.dialog_connection_edit_wizard_editors_description);
rsPage.addSubPage(new PrefPageDataFormat(), CoreMessages.dialog_connection_edit_wizard_data_format, CoreMessages.dialog_connection_edit_wizard_data_format_description);
......
......@@ -219,18 +219,18 @@ public class PrefPageDatabaseGeneral extends AbstractPrefPage implements IWorkbe
if (curLanguage != language) {
DBeaverCore.getInstance().setPlatformLanguage(language);
}
if (UIUtils.confirmAction(
getShell(),
"Restart " + GeneralUtils.getProductName(),
"You need to restart " + GeneralUtils.getProductName() + " to perform actual language change.\nDo you want to restart?"))
{
DBeaverUI.asyncExec(new Runnable() {
@Override
public void run() {
PlatformUI.getWorkbench().restart();
}
});
if (UIUtils.confirmAction(
getShell(),
"Restart " + GeneralUtils.getProductName(),
"You need to restart " + GeneralUtils.getProductName() + " to perform actual language change.\nDo you want to restart?"))
{
DBeaverUI.asyncExec(new Runnable() {
@Override
public void run() {
PlatformUI.getWorkbench().restart();
}
});
}
}
} catch (DBException e) {
DBeaverUI.getInstance().showError("Change language", "Can't switch language to " + language, e);
......
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
* Copyright (C) 2011-2012 Eugene Fradkin (eugene.fradkin@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jkiss.dbeaver.ui.preferences;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.*;
import org.jkiss.dbeaver.ModelPreferences;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.utils.PrefUtils;
/**
* PrefPageErrorHandle
*/
public class PrefPageErrorHandle extends TargetPrefPage
{
public static final String PAGE_ID = "org.jkiss.dbeaver.preferences.main.errorHandle"; //$NON-NLS-1$
private Button rollbackOnErrorCheck;
private Button connectionAutoRecoverEnabled;
private Spinner connectionAutoRecoverRetryCount;
public PrefPageErrorHandle()
{
super();
}
@Override
protected boolean hasDataSourceSpecificOptions(DBPDataSourceContainer dataSourceDescriptor)
{
DBPPreferenceStore store = dataSourceDescriptor.getPreferenceStore();
return
store.contains(ModelPreferences.QUERY_ROLLBACK_ON_ERROR) ||
store.contains(ModelPreferences.EXECUTE_RECOVER_ENABLED) ||
store.contains(ModelPreferences.EXECUTE_RECOVER_RETRY_COUNT)
;
}
@Override
protected boolean supportsDataSourceSpecificOptions()
{
return true;
}
@Override
protected Control createPreferenceContent(Composite parent)
{
Composite composite = UIUtils.createPlaceholder(parent, 2, 5);
// Misc settings
{
Group errorGroup = UIUtils.createControlGroup(composite, CoreMessages.pref_page_error_handle_group_execute_title, 2, GridData.VERTICAL_ALIGN_BEGINNING, 0);
rollbackOnErrorCheck = UIUtils.createCheckbox(errorGroup, CoreMessages.pref_page_database_general_checkbox_rollback_on_error, null, false, 2);
connectionAutoRecoverEnabled = UIUtils.createCheckbox(errorGroup, CoreMessages.pref_page_error_handle_recover_enabled_label, CoreMessages.pref_page_error_handle_recover_enabled_tip, false, 2);
connectionAutoRecoverRetryCount = UIUtils.createLabelSpinner(errorGroup, CoreMessages.pref_page_error_handle_recover_retry_count_label, CoreMessages.pref_page_error_handle_recover_retry_count_tip, 0, 0, Integer.MAX_VALUE);
}
return composite;
}
@Override
protected void loadPreferences(DBPPreferenceStore store)
{
try {
rollbackOnErrorCheck.setSelection(store.getBoolean(ModelPreferences.QUERY_ROLLBACK_ON_ERROR));
connectionAutoRecoverEnabled.setSelection(store.getBoolean(ModelPreferences.EXECUTE_RECOVER_ENABLED));
connectionAutoRecoverRetryCount.setSelection(store.getInt(ModelPreferences.EXECUTE_RECOVER_RETRY_COUNT));
} catch (Exception e) {
log.warn(e);
}
}
@Override
protected void savePreferences(DBPPreferenceStore store)
{
try {
store.setValue(ModelPreferences.QUERY_ROLLBACK_ON_ERROR, rollbackOnErrorCheck.getSelection());
store.setValue(ModelPreferences.EXECUTE_RECOVER_ENABLED, connectionAutoRecoverEnabled.getSelection());
store.setValue(ModelPreferences.EXECUTE_RECOVER_RETRY_COUNT, connectionAutoRecoverRetryCount.getSelection());
} catch (Exception e) {
log.warn(e);
}
PrefUtils.savePreferenceStore(store);
}
@Override
protected void clearPreferences(DBPPreferenceStore store)
{
store.setToDefault(ModelPreferences.QUERY_ROLLBACK_ON_ERROR);
store.setToDefault(ModelPreferences.EXECUTE_RECOVER_ENABLED);
store.setToDefault(ModelPreferences.EXECUTE_RECOVER_RETRY_COUNT);
}
@Override
protected String getPropertyPageID()
{
return PAGE_ID;
}
}
\ No newline at end of file
......@@ -46,7 +46,6 @@ public class PrefPageResultSetMain extends TargetPrefPage
private Spinner queryCancelTimeout;
private Button keepStatementOpenCheck;
private Button rollbackOnErrorCheck;
private Button alwaysUseAllColumns;
private Button newRowsAfter;
private Button refreshAfterUpdate;
......@@ -68,7 +67,6 @@ public class PrefPageResultSetMain extends TargetPrefPage
store.contains(ModelPreferences.RESULT_SET_MAX_ROWS_USE_SQL) ||
store.contains(DBeaverPreferences.RESULT_SET_READ_METADATA) ||
store.contains(DBeaverPreferences.RESULT_SET_CANCEL_TIMEOUT) ||
store.contains(ModelPreferences.QUERY_ROLLBACK_ON_ERROR) ||
store.contains(DBeaverPreferences.RS_EDIT_USE_ALL_COLUMNS) ||
store.contains(DBeaverPreferences.RS_EDIT_NEW_ROWS_AFTER) ||
store.contains(DBeaverPreferences.RS_EDIT_REFRESH_AFTER_UPDATE) ||
......@@ -117,7 +115,6 @@ public class PrefPageResultSetMain extends TargetPrefPage
Group miscGroup = UIUtils.createControlGroup(composite, CoreMessages.pref_page_sql_editor_group_misc, 1, GridData.VERTICAL_ALIGN_BEGINNING, 0);
keepStatementOpenCheck = UIUtils.createCheckbox(miscGroup, CoreMessages.pref_page_database_general_checkbox_keep_cursor, false);
rollbackOnErrorCheck = UIUtils.createCheckbox(miscGroup, CoreMessages.pref_page_database_general_checkbox_rollback_on_error, false);
alwaysUseAllColumns = UIUtils.createCheckbox(miscGroup, CoreMessages.pref_page_content_editor_checkbox_keys_always_use_all_columns, false);
newRowsAfter = UIUtils.createCheckbox(miscGroup, CoreMessages.pref_page_content_editor_checkbox_new_rows_after, false);
refreshAfterUpdate = UIUtils.createCheckbox(miscGroup, CoreMessages.pref_page_content_editor_checkbox_refresh_after_update, false);
......@@ -149,7 +146,6 @@ public class PrefPageResultSetMain extends TargetPrefPage
queryCancelTimeout.setSelection(store.getInt(DBeaverPreferences.RESULT_SET_CANCEL_TIMEOUT));
keepStatementOpenCheck.setSelection(store.getBoolean(DBeaverPreferences.KEEP_STATEMENT_OPEN));
rollbackOnErrorCheck.setSelection(store.getBoolean(ModelPreferences.QUERY_ROLLBACK_ON_ERROR));
alwaysUseAllColumns.setSelection(store.getBoolean(DBeaverPreferences.RS_EDIT_USE_ALL_COLUMNS));
newRowsAfter.setSelection(store.getBoolean(DBeaverPreferences.RS_EDIT_NEW_ROWS_AFTER));
refreshAfterUpdate.setSelection(store.getBoolean(DBeaverPreferences.RS_EDIT_REFRESH_AFTER_UPDATE));
......@@ -175,7 +171,6 @@ public class PrefPageResultSetMain extends TargetPrefPage
store.setValue(DBeaverPreferences.RESULT_SET_CANCEL_TIMEOUT, queryCancelTimeout.getSelection());
store.setValue(DBeaverPreferences.KEEP_STATEMENT_OPEN, keepStatementOpenCheck.getSelection());
store.setValue(ModelPreferences.QUERY_ROLLBACK_ON_ERROR, rollbackOnErrorCheck.getSelection());
store.setValue(DBeaverPreferences.RS_EDIT_USE_ALL_COLUMNS, alwaysUseAllColumns.getSelection());
store.setValue(DBeaverPreferences.RS_EDIT_NEW_ROWS_AFTER, newRowsAfter.getSelection());
store.setValue(DBeaverPreferences.RS_EDIT_REFRESH_AFTER_UPDATE, refreshAfterUpdate.getSelection());
......@@ -199,7 +194,6 @@ public class PrefPageResultSetMain extends TargetPrefPage
store.setToDefault(DBeaverPreferences.RESULT_SET_CANCEL_TIMEOUT);
store.setToDefault(DBeaverPreferences.KEEP_STATEMENT_OPEN);
store.setToDefault(ModelPreferences.QUERY_ROLLBACK_ON_ERROR);
store.setToDefault(DBeaverPreferences.RS_EDIT_USE_ALL_COLUMNS);
store.setToDefault(DBeaverPreferences.RS_EDIT_NEW_ROWS_AFTER);
store.setToDefault(DBeaverPreferences.RS_EDIT_REFRESH_AFTER_UPDATE);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册