提交 7553c619 编写于 作者: J jurgen

Connection configuration refactoring

Former-commit-id: 0e38e3be
上级 fd01f8fb
......@@ -34,9 +34,6 @@ public final class DBeaverPreferences
public static final String NAVIGATOR_EDITOR_FULL_NAME = "navigator.editor.full-name"; //$NON-NLS-1$
public static final String NAVIGATOR_CONNECTION_DOUBLE_CLICK = "navigator.connection.doubleClick"; //$NON-NLS-1$
public static final String DEFAULT_AUTO_COMMIT = "default.autocommit"; //$NON-NLS-1$
public static final String DEFAULT_ISOLATION = "default.isolation"; //$NON-NLS-1$
public static final String DEFAULT_ACTIVE_OBJECT = "default.activeObject"; //$NON-NLS-1$
public static final String KEEP_STATEMENT_OPEN = "keep.statement.open"; //$NON-NLS-1$
public static final String QUERY_ROLLBACK_ON_ERROR = "query.rollback-on-error"; //$NON-NLS-1$
......
......@@ -24,17 +24,17 @@ import org.jkiss.dbeaver.DBeaverConstants;
import org.jkiss.dbeaver.DBeaverPreferences;
import org.jkiss.dbeaver.model.DBPPreferenceStore;
import org.jkiss.dbeaver.model.data.DBDBinaryFormatter;
import org.jkiss.dbeaver.ui.data.IValueController;
import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose;
import org.jkiss.dbeaver.registry.DataFormatterProfile;
import org.jkiss.dbeaver.runtime.RuntimeUtils;
import org.jkiss.dbeaver.runtime.preferences.BundlePreferenceStore;
import org.jkiss.dbeaver.model.qm.QMConstants;
import org.jkiss.dbeaver.model.qm.QMObjectType;
import org.jkiss.dbeaver.model.sql.SQLConstants;
import org.jkiss.dbeaver.registry.DataFormatterProfile;
import org.jkiss.dbeaver.runtime.RuntimeUtils;
import org.jkiss.dbeaver.runtime.preferences.BundlePreferenceStore;
import org.jkiss.dbeaver.runtime.sql.SQLScriptCommitType;
import org.jkiss.dbeaver.runtime.sql.SQLScriptErrorHandling;
import org.jkiss.dbeaver.ui.controls.resultset.spreadsheet.Spreadsheet;
import org.jkiss.dbeaver.ui.data.IValueController;
import org.jkiss.dbeaver.ui.editors.binary.HexEditControl;
import org.jkiss.dbeaver.ui.editors.sql.SQLEditorInput;
import org.jkiss.dbeaver.ui.editors.sql.SQLPreferenceConstants;
......@@ -69,7 +69,6 @@ public class DBeaverPreferencesInitializer extends AbstractPreferenceInitializer
RuntimeUtils.setDefaultPreferenceValue(store, DBeaverPreferences.NAVIGATOR_CONNECTION_DOUBLE_CLICK, NavigatorViewBase.DoubleClickBehavior.SQL_EDITOR.name());
// Common
RuntimeUtils.setDefaultPreferenceValue(store, DBeaverPreferences.DEFAULT_AUTO_COMMIT, true);
RuntimeUtils.setDefaultPreferenceValue(store, DBeaverPreferences.KEEP_STATEMENT_OPEN, false);
RuntimeUtils.setDefaultPreferenceValue(store, DBeaverPreferences.QUERY_ROLLBACK_ON_ERROR, false);
......
......@@ -288,8 +288,8 @@ public class DataSourceDescriptor
@Override
public boolean isDefaultAutoCommit()
{
if (preferenceStore.contains(DBeaverPreferences.DEFAULT_AUTO_COMMIT)) {
return preferenceStore.getBoolean(DBeaverPreferences.DEFAULT_AUTO_COMMIT);
if (connectionInfo.getBootstrap().getDefaultAutoCommit() != null) {
return connectionInfo.getBootstrap().getDefaultAutoCommit();
} else {
return getConnectionConfiguration().getConnectionType().isAutocommit();
}
......@@ -325,9 +325,10 @@ public class DataSourceDescriptor
}
// Save in preferences
if (autoCommit == getConnectionConfiguration().getConnectionType().isAutocommit()) {
preferenceStore.setToDefault(DBeaverPreferences.DEFAULT_AUTO_COMMIT);
connectionInfo.getBootstrap().setDefaultAutoCommit(null);
} else {
preferenceStore.setValue(DBeaverPreferences.DEFAULT_AUTO_COMMIT, autoCommit);
connectionInfo.getBootstrap().setDefaultAutoCommit(autoCommit);
//preferenceStore.setValue(DBeaverPreferences.DEFAULT_AUTO_COMMIT, autoCommit);
}
}
......@@ -351,10 +352,10 @@ public class DataSourceDescriptor
@Override
public Integer getDefaultTransactionsIsolation() {
if (preferenceStore.contains(DBeaverPreferences.DEFAULT_ISOLATION)) {
return preferenceStore.getInt(DBeaverPreferences.DEFAULT_ISOLATION);
}
return null;
// if (preferenceStore.contains(DBeaverPreferences.DEFAULT_ISOLATION)) {
// return preferenceStore.getInt(DBeaverPreferences.DEFAULT_ISOLATION);
// }
return connectionInfo.getBootstrap().getDefaultTransactionIsolation();
}
@Override
......@@ -362,9 +363,11 @@ public class DataSourceDescriptor
{
try {
if (isolationLevel == null) {
preferenceStore.setToDefault(DBeaverPreferences.DEFAULT_ISOLATION);
connectionInfo.getBootstrap().setDefaultTransactionIsolation(null);
//preferenceStore.setToDefault(DBeaverPreferences.DEFAULT_ISOLATION);
} else {
preferenceStore.setValue(DBeaverPreferences.DEFAULT_ISOLATION, isolationLevel.getCode());
connectionInfo.getBootstrap().setDefaultTransactionIsolation(isolationLevel.getCode());
//preferenceStore.setValue(DBeaverPreferences.DEFAULT_ISOLATION, isolationLevel.getCode());
if (dataSource != null) {
DBeaverUI.runInProgressService(new DBRRunnableWithProgress() {
@Override
......@@ -396,11 +399,12 @@ public class DataSourceDescriptor
@Override
public String getDefaultActiveObject() {
return preferenceStore.getString(DBeaverPreferences.DEFAULT_ACTIVE_OBJECT);
return connectionInfo.getBootstrap().getDefaultObjectName();//preferenceStore.getString(DBeaverPreferences.DEFAULT_ACTIVE_OBJECT);
}
public void setDefaultActiveObject(String defaultActiveObject) {
preferenceStore.setValue(DBeaverPreferences.DEFAULT_ACTIVE_OBJECT, defaultActiveObject);
connectionInfo.getBootstrap().setDefaultObjectName(defaultActiveObject);
//preferenceStore.setValue(DBeaverPreferences.DEFAULT_ACTIVE_OBJECT, defaultActiveObject);
}
public Collection<FilterMapping> getObjectFilters()
......@@ -683,7 +687,7 @@ public class DataSourceDescriptor
// Set active object
if (dataSource instanceof DBSObjectSelector && dataSource instanceof DBSObjectContainer) {
String activeObject = getDefaultActiveObject();
String activeObject = getConnectionConfiguration().getBootstrap().getDefaultObjectName();
if (!CommonUtils.isEmptyTrimmed(activeObject)) {
DBSObject child = ((DBSObjectContainer) dataSource).getChild(monitor, activeObject);
if (child != null) {
......
......@@ -54,6 +54,13 @@ import java.util.*;
public class DataSourceRegistry implements DBPDataSourceRegistry
{
@Deprecated
public static final String DEFAULT_AUTO_COMMIT = "default.autocommit"; //$NON-NLS-1$
@Deprecated
public static final String DEFAULT_ISOLATION = "default.isolation"; //$NON-NLS-1$
@Deprecated
public static final String DEFAULT_ACTIVE_OBJECT = "default.activeObject"; //$NON-NLS-1$
static final Log log = Log.getLog(DataSourceRegistry.class);
public static final String CONFIG_FILE_NAME = ".dbeaver-data-sources.xml"; //$NON-NLS-1$
......@@ -469,6 +476,30 @@ public class DataSourceRegistry implements DBPDataSourceRegistry
xml.endElement();
}
// Save bootstrap info
{
DBPConnectionBootstrap bootstrap = connectionInfo.getBootstrap();
xml.startElement(RegistryConstants.TAG_BOOTSTRAP);
if (bootstrap.getDefaultAutoCommit() != null) {
xml.addAttribute(RegistryConstants.ATTR_AUTOCOMMIT, bootstrap.getDefaultAutoCommit());
}
if (bootstrap.getDefaultTransactionIsolation() != null) {
xml.addAttribute(RegistryConstants.ATTR_TXN_ISOLATION, bootstrap.getDefaultTransactionIsolation());
}
if (!CommonUtils.isEmpty(bootstrap.getDefaultObjectName())) {
xml.addAttribute(RegistryConstants.ATTR_DEFAULT_OBJECT, bootstrap.getDefaultObjectName());
}
if (bootstrap.isIgnoreErrors()) {
xml.addAttribute(RegistryConstants.ATTR_IGNORE_ERRORS, true);
}
for (String query : bootstrap.getInitQueries()) {
xml.startElement(RegistryConstants.TAG_QUERY);
xml.addText(query);
xml.endElement();
}
xml.endElement();
}
xml.endElement();
}
......@@ -489,6 +520,13 @@ public class DataSourceRegistry implements DBPDataSourceRegistry
}
}
// Virtual model
if (dataSource.getVirtualModel().hasValuableData()) {
xml.startElement(RegistryConstants.TAG_VIRTUAL_META_DATA);
dataSource.getVirtualModel().persist(xml);
xml.endElement();
}
// Preferences
{
// Save only properties who are differs from default values
......@@ -506,13 +544,6 @@ public class DataSourceRegistry implements DBPDataSourceRegistry
}
}
// Virtual model
if (dataSource.getVirtualModel().hasValuableData()) {
xml.startElement(RegistryConstants.TAG_VIRTUAL_META_DATA);
dataSource.getVirtualModel().persist(xml);
xml.endElement();
}
//xml.addText(CommonUtils.getString(dataSource.getDescription()));
xml.endElement();
}
......@@ -560,6 +591,7 @@ public class DataSourceRegistry implements DBPDataSourceRegistry
DBRShellCommand curCommand = null;
private DBWHandlerConfiguration curNetworkHandler;
private DBSObjectFilter curFilter;
private StringBuilder curQuery;
private DataSourcesParser(PasswordEncrypter encrypter)
{
......@@ -637,25 +669,44 @@ public class DataSourceRegistry implements DBPDataSourceRegistry
driver.setName(atts.getValue(RegistryConstants.ATTR_URL));
driver.setDriverClassName("java.sql.Driver");
}
curDataSource.getConnectionConfiguration().setHostName(atts.getValue(RegistryConstants.ATTR_HOST));
curDataSource.getConnectionConfiguration().setHostPort(atts.getValue(RegistryConstants.ATTR_PORT));
curDataSource.getConnectionConfiguration().setServerName(atts.getValue(RegistryConstants.ATTR_SERVER));
curDataSource.getConnectionConfiguration().setDatabaseName(atts.getValue(RegistryConstants.ATTR_DATABASE));
curDataSource.getConnectionConfiguration().setUrl(atts.getValue(RegistryConstants.ATTR_URL));
curDataSource.getConnectionConfiguration().setUserName(atts.getValue(RegistryConstants.ATTR_USER));
curDataSource.getConnectionConfiguration().setUserPassword(decryptPassword(atts.getValue(RegistryConstants.ATTR_PASSWORD)));
curDataSource.getConnectionConfiguration().setClientHomeId(atts.getValue(RegistryConstants.ATTR_HOME));
curDataSource.getConnectionConfiguration().setConnectionType(
DBPConnectionConfiguration config = curDataSource.getConnectionConfiguration();
config.setHostName(atts.getValue(RegistryConstants.ATTR_HOST));
config.setHostPort(atts.getValue(RegistryConstants.ATTR_PORT));
config.setServerName(atts.getValue(RegistryConstants.ATTR_SERVER));
config.setDatabaseName(atts.getValue(RegistryConstants.ATTR_DATABASE));
config.setUrl(atts.getValue(RegistryConstants.ATTR_URL));
config.setUserName(atts.getValue(RegistryConstants.ATTR_USER));
config.setUserPassword(decryptPassword(atts.getValue(RegistryConstants.ATTR_PASSWORD)));
config.setClientHomeId(atts.getValue(RegistryConstants.ATTR_HOME));
config.setConnectionType(
DataSourceProviderRegistry.getInstance().getConnectionType(
CommonUtils.toString(atts.getValue(RegistryConstants.ATTR_TYPE)),
DBPConnectionType.DEFAULT_TYPE)
);
);
String colorValue = atts.getValue(RegistryConstants.ATTR_COLOR);
if (!CommonUtils.isEmpty(colorValue)) {
curDataSource.getConnectionConfiguration().setConnectionColor(colorValue);
config.setConnectionColor(colorValue);
}
curDataSource.refreshConnectionInfo();
}
} else if (localName.equals(RegistryConstants.TAG_BOOTSTRAP)) {
if (curDataSource != null) {
DBPConnectionConfiguration config = curDataSource.getConnectionConfiguration();
if (atts.getValue(RegistryConstants.ATTR_AUTOCOMMIT) != null) {
config.getBootstrap().setDefaultAutoCommit(CommonUtils.toBoolean(atts.getValue(RegistryConstants.ATTR_AUTOCOMMIT)));
}
if (atts.getValue(RegistryConstants.ATTR_TXN_ISOLATION) != null) {
config.getBootstrap().setDefaultTransactionIsolation(CommonUtils.toInt(atts.getValue(RegistryConstants.ATTR_TXN_ISOLATION)));
}
if (!CommonUtils.isEmpty(atts.getValue(RegistryConstants.ATTR_DEFAULT_OBJECT))) {
config.getBootstrap().setDefaultObjectName(atts.getValue(RegistryConstants.ATTR_DEFAULT_OBJECT));
}
if (atts.getValue(RegistryConstants.ATTR_IGNORE_ERRORS) != null) {
config.getBootstrap().setIgnoreErrors(CommonUtils.toBoolean(atts.getValue(RegistryConstants.ATTR_IGNORE_ERRORS)));
}
}
} else if (localName.equals(RegistryConstants.TAG_QUERY)) {
curQuery = new StringBuilder();
} else if (localName.equals(RegistryConstants.TAG_PROPERTY)) {
if (curNetworkHandler != null) {
curNetworkHandler.getProperties().put(
......@@ -678,9 +729,20 @@ public class DataSourceRegistry implements DBPDataSourceRegistry
}
} else if (localName.equals(RegistryConstants.TAG_CUSTOM_PROPERTY)) {
if (curDataSource != null) {
curDataSource.getPreferenceStore().getProperties().put(
atts.getValue(RegistryConstants.ATTR_NAME),
atts.getValue(RegistryConstants.ATTR_VALUE));
String propName = atts.getValue(RegistryConstants.ATTR_NAME);
String propValue = atts.getValue(RegistryConstants.ATTR_VALUE);
// TODO: remove bootstrap preferences later. PResent for config backward compatibility
if (propName.equals(DEFAULT_AUTO_COMMIT)) {
curDataSource.getConnectionConfiguration().getBootstrap().setDefaultAutoCommit(CommonUtils.toBoolean(propValue));
} else if (propName.equals(DEFAULT_ISOLATION)) {
curDataSource.getConnectionConfiguration().getBootstrap().setDefaultTransactionIsolation(CommonUtils.toInt(propValue));
} else if (propName.equals(DEFAULT_ACTIVE_OBJECT)) {
if (!CommonUtils.isEmpty(propValue)) {
curDataSource.getConnectionConfiguration().getBootstrap().setDefaultObjectName(propValue);
}
} else {
curDataSource.getPreferenceStore().getProperties().put(propName, propValue);
}
}
} else if (localName.equals(RegistryConstants.TAG_NETWORK_HANDLER)) {
if (curDataSource != null) {
......@@ -738,6 +800,8 @@ public class DataSourceRegistry implements DBPDataSourceRegistry
} else if (curCommand != null) {
curCommand.setCommand(data);
curCommand = null;
} else if (curQuery != null) {
curQuery.append(data);
}
}
......@@ -751,6 +815,11 @@ public class DataSourceRegistry implements DBPDataSourceRegistry
curNetworkHandler = null;
} else if (localName.equals(RegistryConstants.TAG_FILTER)) {
curFilter = null;
} else if (localName.equals(RegistryConstants.TAG_QUERY)) {
if (curDataSource != null && curQuery != null && curQuery.length() > 0) {
curDataSource.getConnectionConfiguration().getBootstrap().getInitQueries().add(curQuery.toString());
curQuery = null;
}
}
isDescription = false;
}
......
......@@ -76,10 +76,13 @@ public class RegistryConstants {
public static final String ATTR_STANDARD = "standard"; //$NON-NLS-1$
public static final String ATTR_COLOR = "color"; //$NON-NLS-1$
public static final String ATTR_AUTOCOMMIT = "autocommit"; //$NON-NLS-1$
public static final String ATTR_TXN_ISOLATION = "txnIsolation"; //$NON-NLS-1$
public static final String ATTR_DEFAULT_OBJECT = "defaultObject"; //$NON-NLS-1$
public static final String ATTR_CONFIRM_EXECUTE = "confirmExecute"; //$NON-NLS-1$
public static final String ATTR_PARENT = "parent"; //$NON-NLS-1$
public static final String ATTR_GROUP = "group"; //$NON-NLS-1$
public static final String ATTR_SINGLETON = "singleton"; //$NON-NLS-1$
public static final String ATTR_IGNORE_ERRORS = "ignoreErrors"; //$NON-NLS-1$
public static final String ATTR_TARGET_ID = "targetID"; //$NON-NLS-1$
public static final String ATTR_TYPE = "type"; //$NON-NLS-1$
......@@ -130,6 +133,8 @@ public class RegistryConstants {
public static final String TAG_CUSTOM_PROPERTY = "custom-property"; //$NON-NLS-1$
public static final String TAG_DESCRIPTION = "description"; //$NON-NLS-1$
public static final String TAG_CONNECTION = "connection"; //$NON-NLS-1$
public static final String TAG_BOOTSTRAP = "bootstrap"; //$NON-NLS-1$
public static final String TAG_QUERY = "query"; //$NON-NLS-1$
public static final String ATTR_CREATE_DATE = "create-date"; //$NON-NLS-1$
public static final String ATTR_UPDATE_DATE = "update-date"; //$NON-NLS-1$
......
......@@ -184,7 +184,8 @@ class ConnectionPageGeneral extends ActiveWizardPage<ConnectionWizard> {
} else {
isolationLevel.setEnabled(false);
}
defaultSchema.setText(CommonUtils.notEmpty(dataSourceDescriptor.getDefaultActiveObject()));
defaultSchema.setText(CommonUtils.notEmpty(
dataSourceDescriptor.getConnectionConfiguration().getBootstrap().getDefaultObjectName()));
activated = true;
}
} else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册