use of org.jkiss.dbeaver.model.connection.DBPConnectionBootstrap in project dbeaver by serge-rider.
the class ConnectionPageGeneral method saveSettings.
void saveSettings(DataSourceDescriptor dataSource) {
if (dataSourceDescriptor != null && !activated) {
// No changes anyway
return;
}
dataSource.setName(connectionNameText.getText());
dataSource.setSavePassword(savePasswordCheck.getSelection());
try {
dataSource.setDefaultAutoCommit(autocommit.getSelection(), null, true, null);
if (dataSource.isConnected()) {
int levelIndex = isolationLevel.getSelectionIndex();
if (levelIndex <= 0) {
dataSource.setDefaultTransactionsIsolation(null);
} else {
dataSource.setDefaultTransactionsIsolation(supportedLevels.get(levelIndex - 1));
}
}
} catch (DBException e) {
log.error(e);
}
dataSource.setDefaultActiveObject(defaultSchema.getText());
dataSource.setShowSystemObjects(showSystemObjects.getSelection());
dataSource.setShowUtilityObjects(showUtilityObjects.getSelection());
dataSource.setConnectionReadOnly(readOnlyConnection.getSelection());
if (!dataSource.isSavePassword()) {
dataSource.resetPassword();
}
dataSource.setFolder(dataSourceFolder);
final DBPConnectionConfiguration confConfig = dataSource.getConnectionConfiguration();
if (connectionTypeCombo.getSelectionIndex() >= 0) {
confConfig.setConnectionType(connectionTypeCombo.getItem(connectionTypeCombo.getSelectionIndex()));
}
for (FilterInfo filterInfo : filters) {
if (filterInfo.filter != null) {
dataSource.setObjectFilter(filterInfo.type, null, filterInfo.filter);
}
}
DBPConnectionBootstrap bootstrap = confConfig.getBootstrap();
bootstrap.setIgnoreErrors(ignoreBootstrapErrors);
bootstrap.setInitQueries(bootstrapQueries);
confConfig.setKeepAliveInterval(keepAliveInterval.getSelection());
final String description = descriptionText.getText();
if (description.isEmpty()) {
dataSource.setDescription(null);
} else {
dataSource.setDescription(description);
}
}
use of org.jkiss.dbeaver.model.connection.DBPConnectionBootstrap in project dbeaver by serge-rider.
the class DataSourceRegistry method saveDataSource.
private void saveDataSource(XMLBuilder xml, DataSourceDescriptor dataSource) throws IOException {
clearSecuredPasswords(dataSource);
xml.startElement(RegistryConstants.TAG_DATA_SOURCE);
xml.addAttribute(RegistryConstants.ATTR_ID, dataSource.getId());
xml.addAttribute(RegistryConstants.ATTR_PROVIDER, dataSource.getDriver().getProviderDescriptor().getId());
xml.addAttribute(RegistryConstants.ATTR_DRIVER, dataSource.getDriver().getId());
xml.addAttribute(RegistryConstants.ATTR_NAME, dataSource.getName());
xml.addAttribute(RegistryConstants.ATTR_SAVE_PASSWORD, dataSource.isSavePassword());
if (dataSource.isShowSystemObjects()) {
xml.addAttribute(RegistryConstants.ATTR_SHOW_SYSTEM_OBJECTS, dataSource.isShowSystemObjects());
}
if (dataSource.isShowUtilityObjects()) {
xml.addAttribute(RegistryConstants.ATTR_SHOW_UTIL_OBJECTS, dataSource.isShowUtilityObjects());
}
xml.addAttribute(RegistryConstants.ATTR_READ_ONLY, dataSource.isConnectionReadOnly());
if (dataSource.getFolder() != null) {
xml.addAttribute(RegistryConstants.ATTR_FOLDER, dataSource.getFolder().getFolderPath());
}
final String lockPasswordHash = dataSource.getLockPasswordHash();
if (!CommonUtils.isEmpty(lockPasswordHash)) {
xml.addAttribute(RegistryConstants.ATTR_LOCK_PASSWORD, lockPasswordHash);
}
{
// Connection info
DBPConnectionConfiguration connectionInfo = dataSource.getConnectionConfiguration();
xml.startElement(RegistryConstants.TAG_CONNECTION);
if (!CommonUtils.isEmpty(connectionInfo.getHostName())) {
xml.addAttribute(RegistryConstants.ATTR_HOST, connectionInfo.getHostName());
}
if (!CommonUtils.isEmpty(connectionInfo.getHostPort())) {
xml.addAttribute(RegistryConstants.ATTR_PORT, connectionInfo.getHostPort());
}
xml.addAttribute(RegistryConstants.ATTR_SERVER, CommonUtils.notEmpty(connectionInfo.getServerName()));
xml.addAttribute(RegistryConstants.ATTR_DATABASE, CommonUtils.notEmpty(connectionInfo.getDatabaseName()));
xml.addAttribute(RegistryConstants.ATTR_URL, CommonUtils.notEmpty(connectionInfo.getUrl()));
saveSecuredCredentials(xml, dataSource, null, connectionInfo.getUserName(), dataSource.isSavePassword() ? connectionInfo.getUserPassword() : null);
if (!CommonUtils.isEmpty(connectionInfo.getClientHomeId())) {
xml.addAttribute(RegistryConstants.ATTR_HOME, connectionInfo.getClientHomeId());
}
if (connectionInfo.getConnectionType() != null) {
xml.addAttribute(RegistryConstants.ATTR_TYPE, connectionInfo.getConnectionType().getId());
}
if (connectionInfo.getConnectionColor() != null) {
xml.addAttribute(RegistryConstants.ATTR_COLOR, connectionInfo.getConnectionColor());
}
// Save other
if (connectionInfo.getKeepAliveInterval() > 0) {
xml.addAttribute(RegistryConstants.ATTR_KEEP_ALIVE, connectionInfo.getKeepAliveInterval());
}
for (Map.Entry<String, String> entry : connectionInfo.getProperties().entrySet()) {
xml.startElement(RegistryConstants.TAG_PROPERTY);
xml.addAttribute(RegistryConstants.ATTR_NAME, CommonUtils.toString(entry.getKey()));
xml.addAttribute(RegistryConstants.ATTR_VALUE, CommonUtils.toString(entry.getValue()));
xml.endElement();
}
for (Map.Entry<String, String> entry : connectionInfo.getProviderProperties().entrySet()) {
xml.startElement(RegistryConstants.TAG_PROVIDER_PROPERTY);
xml.addAttribute(RegistryConstants.ATTR_NAME, CommonUtils.toString(entry.getKey()));
xml.addAttribute(RegistryConstants.ATTR_VALUE, CommonUtils.toString(entry.getValue()));
xml.endElement();
}
// Save events
for (DBPConnectionEventType eventType : connectionInfo.getDeclaredEvents()) {
DBRShellCommand command = connectionInfo.getEvent(eventType);
xml.startElement(RegistryConstants.TAG_EVENT);
xml.addAttribute(RegistryConstants.ATTR_TYPE, eventType.name());
xml.addAttribute(RegistryConstants.ATTR_ENABLED, command.isEnabled());
xml.addAttribute(RegistryConstants.ATTR_SHOW_PANEL, command.isShowProcessPanel());
xml.addAttribute(RegistryConstants.ATTR_WAIT_PROCESS, command.isWaitProcessFinish());
xml.addAttribute(RegistryConstants.ATTR_TERMINATE_AT_DISCONNECT, command.isTerminateAtDisconnect());
xml.addText(command.getCommand());
xml.endElement();
}
// Save network handlers' configurations
for (DBWHandlerConfiguration configuration : connectionInfo.getDeclaredHandlers()) {
xml.startElement(RegistryConstants.TAG_NETWORK_HANDLER);
xml.addAttribute(RegistryConstants.ATTR_TYPE, configuration.getType().name());
xml.addAttribute(RegistryConstants.ATTR_ID, CommonUtils.notEmpty(configuration.getId()));
xml.addAttribute(RegistryConstants.ATTR_ENABLED, configuration.isEnabled());
xml.addAttribute(RegistryConstants.ATTR_SAVE_PASSWORD, configuration.isSavePassword());
if (!CommonUtils.isEmpty(configuration.getUserName())) {
saveSecuredCredentials(xml, dataSource, "network/" + configuration.getId(), configuration.getUserName(), configuration.isSavePassword() ? configuration.getPassword() : null);
}
for (Map.Entry<String, String> entry : configuration.getProperties().entrySet()) {
if (CommonUtils.isEmpty(entry.getValue())) {
continue;
}
xml.startElement(RegistryConstants.TAG_PROPERTY);
xml.addAttribute(RegistryConstants.ATTR_NAME, entry.getKey());
xml.addAttribute(RegistryConstants.ATTR_VALUE, CommonUtils.notEmpty(entry.getValue()));
xml.endElement();
}
xml.endElement();
}
// Save bootstrap info
{
DBPConnectionBootstrap bootstrap = connectionInfo.getBootstrap();
if (bootstrap.hasData()) {
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();
}
{
// Filters
Collection<DataSourceDescriptor.FilterMapping> filterMappings = dataSource.getObjectFilters();
if (!CommonUtils.isEmpty(filterMappings)) {
xml.startElement(RegistryConstants.TAG_FILTERS);
for (DataSourceDescriptor.FilterMapping filter : filterMappings) {
if (filter.defaultFilter != null && !filter.defaultFilter.isEmpty()) {
saveObjectFiler(xml, filter.typeName, null, filter.defaultFilter);
}
for (Map.Entry<String, DBSObjectFilter> cf : filter.customFilters.entrySet()) {
if (!cf.getValue().isEmpty()) {
saveObjectFiler(xml, filter.typeName, cf.getKey(), cf.getValue());
}
}
}
xml.endElement();
}
}
// Virtual model
if (dataSource.getVirtualModel().hasValuableData()) {
xml.startElement(RegistryConstants.TAG_VIRTUAL_META_DATA);
dataSource.getVirtualModel().serialize(xml);
xml.endElement();
}
// Preferences
{
// Save only properties who are differs from default values
SimplePreferenceStore prefStore = dataSource.getPreferenceStore();
for (String propName : prefStore.preferenceNames()) {
String propValue = prefStore.getString(propName);
String defValue = prefStore.getDefaultString(propName);
if (propValue == null || CommonUtils.equalObjects(propValue, defValue)) {
continue;
}
xml.startElement(RegistryConstants.TAG_CUSTOM_PROPERTY);
xml.addAttribute(RegistryConstants.ATTR_NAME, propName);
xml.addAttribute(RegistryConstants.ATTR_VALUE, propValue);
xml.endElement();
}
}
if (!CommonUtils.isEmpty(dataSource.getDescription())) {
xml.startElement(RegistryConstants.TAG_DESCRIPTION);
xml.addText(dataSource.getDescription());
xml.endElement();
}
xml.endElement();
}
use of org.jkiss.dbeaver.model.connection.DBPConnectionBootstrap in project dbeaver by serge-rider.
the class AbstractExecutionContext method initContextBootstrap.
/**
* Context boot procedure.
* Executes bootstrap queries and other init functions.
* This function must be called by all implementations.
*/
protected void initContextBootstrap(@NotNull DBRProgressMonitor monitor, boolean autoCommit) throws DBCException {
// Notify QM
QMUtils.getDefaultHandler().handleContextOpen(this, !autoCommit);
// Execute bootstrap queries
DBPConnectionBootstrap bootstrap = dataSource.getContainer().getConnectionConfiguration().getBootstrap();
List<String> initQueries = bootstrap.getInitQueries();
if (!CommonUtils.isEmpty(initQueries)) {
monitor.subTask("Run bootstrap queries");
try (DBCSession session = openSession(monitor, DBCExecutionPurpose.UTIL, "Run bootstrap queries")) {
for (String query : initQueries) {
try {
try (DBCStatement dbStat = session.prepareStatement(DBCStatementType.QUERY, query, false, false, false)) {
dbStat.executeStatement();
}
} catch (Exception e) {
String message = "Error executing bootstrap query: " + query;
if (bootstrap.isIgnoreErrors()) {
log.warn(message);
} else {
throw new DBCException(message, e, dataSource);
}
}
}
}
}
}
Aggregations