use of org.jkiss.dbeaver.model.net.DBWHandlerConfiguration in project dbeaver by serge-rider.
the class DataSourceSerializerModern method saveDataSources.
@Override
public void saveDataSources(DBRProgressMonitor monitor, DBPDataSourceConfigurationStorage configurationStorage, List<DataSourceDescriptor> localDataSources, File configFile) throws DBException {
ByteArrayOutputStream dsConfigBuffer = new ByteArrayOutputStream(10000);
try (OutputStreamWriter osw = new OutputStreamWriter(dsConfigBuffer, StandardCharsets.UTF_8)) {
try (JsonWriter jsonWriter = CONFIG_GSON.newJsonWriter(osw)) {
jsonWriter.setIndent("\t");
jsonWriter.beginObject();
// Save folders
if (configurationStorage.isDefault()) {
jsonWriter.name("folders");
jsonWriter.beginObject();
// Folders (only for default storage)
for (DataSourceFolder folder : registry.getAllFolders()) {
saveFolder(jsonWriter, folder);
}
jsonWriter.endObject();
}
Map<String, DBVModel> virtualModels = new LinkedHashMap<>();
Map<String, DBPConnectionType> connectionTypes = new LinkedHashMap<>();
Map<String, Map<String, DBPDriver>> drivers = new LinkedHashMap<>();
{
// Save connections
jsonWriter.name("connections");
jsonWriter.beginObject();
for (DataSourceDescriptor dataSource : localDataSources) {
// Skip temporary
if (!dataSource.isDetached()) {
saveDataSource(jsonWriter, dataSource);
if (dataSource.getVirtualModel().hasValuableData()) {
virtualModels.put(dataSource.getVirtualModel().getId(), dataSource.getVirtualModel());
}
DBPConnectionType connectionType = dataSource.getConnectionConfiguration().getConnectionType();
/*if (!connectionType.isPredefined()) */
{
connectionTypes.put(connectionType.getId(), connectionType);
}
DBPDriver driver = dataSource.getDriver();
if (driver.isCustom() && !driver.getProviderDescriptor().isTemporary()) {
Map<String, DBPDriver> driverMap = drivers.computeIfAbsent(driver.getProviderId(), s -> new LinkedHashMap<>());
driverMap.put(driver.getId(), driver);
}
}
}
jsonWriter.endObject();
}
if (configurationStorage.isDefault()) {
if (!virtualModels.isEmpty()) {
// Save virtual models
jsonWriter.name("virtual-models");
jsonWriter.beginObject();
for (DBVModel model : virtualModels.values()) {
model.serialize(monitor, jsonWriter);
}
jsonWriter.endObject();
}
// Network profiles
List<DBWNetworkProfile> profiles = registry.getNetworkProfiles();
if (!CommonUtils.isEmpty(profiles)) {
jsonWriter.name("network-profiles");
jsonWriter.beginObject();
for (DBWNetworkProfile np : profiles) {
jsonWriter.name(np.getProfileId());
jsonWriter.beginObject();
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_NAME, np.getProfileName());
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_DESCRIPTION, np.getProfileDescription());
jsonWriter.name("handlers");
jsonWriter.beginObject();
for (DBWHandlerConfiguration configuration : np.getConfigurations()) {
if (configuration.hasValuableInfo()) {
saveNetworkHandlerConfiguration(jsonWriter, null, np, configuration);
}
}
jsonWriter.endObject();
jsonWriter.endObject();
}
jsonWriter.endObject();
}
// Auth profiles
List<DBAAuthProfile> authProfiles = registry.getAllAuthProfiles();
if (!CommonUtils.isEmpty(authProfiles)) {
jsonWriter.name("auth-profiles");
jsonWriter.beginObject();
for (DBAAuthProfile authProfile : authProfiles) {
jsonWriter.name(authProfile.getProfileId());
jsonWriter.beginObject();
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_NAME, authProfile.getProfileName());
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_DESCRIPTION, authProfile.getProfileDescription());
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_AUTH_MODEL, authProfile.getAuthModelId());
if (authProfile.isSavePassword()) {
JSONUtils.field(jsonWriter, RegistryConstants.ATTR_SAVE_PASSWORD, authProfile.isSavePassword());
}
// Save all auth properties in secure storage
saveSecuredCredentials(null, authProfile, null, new SecureCredentials(authProfile));
jsonWriter.endObject();
}
jsonWriter.endObject();
}
// Filters
List<DBSObjectFilter> savedFilters = registry.getSavedFilters();
if (!CommonUtils.isEmpty(savedFilters)) {
jsonWriter.name("saved-filters");
jsonWriter.beginArray();
for (DBSObjectFilter cf : savedFilters) {
if (!cf.isEmpty()) {
saveObjectFiler(jsonWriter, null, null, cf);
}
}
jsonWriter.endArray();
}
// Connection types
if (!CommonUtils.isEmpty(connectionTypes)) {
jsonWriter.name("connection-types");
jsonWriter.beginObject();
for (DBPConnectionType ct : connectionTypes.values()) {
jsonWriter.name(ct.getId());
jsonWriter.beginObject();
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_NAME, ct.getName());
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_COLOR, ct.getColor());
JSONUtils.fieldNE(jsonWriter, RegistryConstants.ATTR_DESCRIPTION, ct.getDescription());
JSONUtils.field(jsonWriter, "auto-commit", ct.isAutocommit());
JSONUtils.field(jsonWriter, "confirm-execute", ct.isConfirmExecute());
JSONUtils.field(jsonWriter, "confirm-data-change", ct.isConfirmDataChange());
serializeModifyPermissions(jsonWriter, ct);
jsonWriter.endObject();
}
jsonWriter.endObject();
}
// Drivers
if (!CommonUtils.isEmpty(drivers)) {
jsonWriter.name("drivers");
jsonWriter.beginObject();
for (Map.Entry<String, Map<String, DBPDriver>> dmap : drivers.entrySet()) {
jsonWriter.name(dmap.getKey());
jsonWriter.beginObject();
for (DBPDriver driver : dmap.getValue().values()) {
((DriverDescriptor) driver).serialize(jsonWriter, true);
}
jsonWriter.endObject();
}
jsonWriter.endObject();
}
}
jsonWriter.endObject();
jsonWriter.flush();
}
} catch (IOException e) {
log.error("IO error while saving datasources json", e);
}
String jsonString = new String(dsConfigBuffer.toByteArray(), StandardCharsets.UTF_8);
boolean encryptProject = CommonUtils.toBoolean(registry.getProject().getProjectProperty(DBPProject.PROP_SECURE_PROJECT));
saveConfigFile(configFile, jsonString, false, encryptProject);
{
saveSecureCredentialsFile(monitor.getNestedMonitor(), configFile.getParentFile(), configurationStorage);
}
}
use of org.jkiss.dbeaver.model.net.DBWHandlerConfiguration in project dbeaver by serge-rider.
the class SSHTunnelConfiguratorUI method testTunnelConnection.
private void testTunnelConnection() {
DBWHandlerConfiguration configuration = new DBWHandlerConfiguration(savedConfiguration);
configuration.setProperties(Collections.emptyMap());
saveSettings(configuration);
DBPDataSourceContainer dataSource = configuration.getDataSource();
if (dataSource != null) {
configuration.resolveDynamicVariables(new DataSourceVariableResolver(dataSource, dataSource.getConnectionConfiguration()));
} else {
configuration.resolveDynamicVariables(SystemVariablesResolver.INSTANCE);
}
try {
final String[] tunnelVersions = new String[2];
UIUtils.runInProgressDialog(monitor -> {
monitor.beginTask("Instantiate SSH tunnel", 2);
SSHTunnelImpl tunnel = new SSHTunnelImpl();
DBPConnectionConfiguration connectionConfig = new DBPConnectionConfiguration();
connectionConfig.setHostName("localhost");
connectionConfig.setHostPort(configuration.getStringProperty(DBWHandlerConfiguration.PROP_PORT));
try {
monitor.subTask("Initialize tunnel");
tunnel.initializeHandler(monitor, DBWorkbench.getPlatform(), configuration, connectionConfig);
monitor.worked(1);
// Get info
tunnelVersions[0] = tunnel.getImplementation().getClientVersion();
tunnelVersions[1] = tunnel.getImplementation().getServerVersion();
// Close it
monitor.subTask("Close tunnel");
tunnel.closeTunnel(monitor);
monitor.worked(1);
} catch (Exception e) {
throw new InvocationTargetException(e);
}
monitor.done();
});
MessageDialog.openInformation(hostText.getShell(), ModelMessages.dialog_connection_wizard_start_connection_monitor_success, "Connected!\n\nClient version: " + tunnelVersions[0] + "\nServer version: " + tunnelVersions[1]);
} catch (InvocationTargetException ex) {
DBWorkbench.getPlatformUI().showError(CoreMessages.dialog_connection_wizard_start_dialog_error_title, null, GeneralUtils.makeExceptionStatus(ex.getTargetException()));
}
}
use of org.jkiss.dbeaver.model.net.DBWHandlerConfiguration in project dbeaver by serge-rider.
the class NNAHDataSourceTunnel method getNodeActionToolTip.
@Override
public String getNodeActionToolTip(INavigatorModelView view, DBNNode node) {
StringBuilder tip = new StringBuilder("Network handlers enabled:");
for (DBWHandlerConfiguration handler : ((DBNDataSource) node).getDataSourceContainer().getConnectionConfiguration().getHandlers()) {
if (handler.isEnabled()) {
tip.append("\n -").append(handler.getHandlerDescriptor().getLabel());
String hostName = handler.getStringProperty(DBWHandlerConfiguration.PROP_HOST);
if (!CommonUtils.isEmpty(hostName)) {
tip.append(": ").append(hostName);
}
}
}
return tip.toString();
}
use of org.jkiss.dbeaver.model.net.DBWHandlerConfiguration in project dbeaver by serge-rider.
the class ConnectionPageNetworkHandler method enableHandlerContent.
protected void enableHandlerContent() {
DBWHandlerConfiguration profileConfig = activeProfile == null ? null : activeProfile.getConfiguration(handlerDescriptor);
boolean hasProfileConfig = profileConfig != null && profileConfig.isEnabled();
if (handlerConfiguration.isEnabled() && !hasProfileConfig) {
if (blockEnableState != null) {
blockEnableState.restore();
blockEnableState = null;
}
} else if (blockEnableState == null) {
blockEnableState = ControlEnableState.disable(handlerComposite);
}
useHandlerCheck.setEnabled(!hasProfileConfig);
}
use of org.jkiss.dbeaver.model.net.DBWHandlerConfiguration in project dbeaver by serge-rider.
the class ConnectionPageNetworkHandler method setConnectionConfigProfile.
private void setConnectionConfigProfile(String profileName) {
activeProfile = CommonUtils.isEmpty(profileName) ? null : site.getProject().getDataSourceRegistry().getNetworkProfile(profileName);
DBPDataSourceContainer dataSource = site.getActiveDataSource();
DBPConnectionConfiguration cfg = dataSource.getConnectionConfiguration();
String oldProfileId = cfg.getConfigProfileName();
saveSettings(site.getActiveDataSource());
if (activeProfile != null) {
cfg.setConfigProfile(activeProfile);
handlerConfiguration = cfg.getHandler(handlerDescriptor.getId());
if (handlerConfiguration == null) {
handlerConfiguration = new DBWHandlerConfiguration(handlerDescriptor, dataSource);
}
} else {
cfg.setConfigProfile(null);
}
site.firePropertyChange(this, PROP_CONFIG_PROFILE, oldProfileId, activeProfile == null ? null : activeProfile.getProfileName());
}
Aggregations