use of org.jkiss.dbeaver.model.net.DBWNetworkProfile in project dbeaver by dbeaver.
the class DataSourceSerializerModern method parseDataSources.
@Override
public void parseDataSources(File configFile, DBPDataSourceConfigurationStorage configurationStorage, boolean refresh, DataSourceRegistry.ParseResults parseResults) throws IOException {
// Read secured creds file
File mdFolder = registry.getProject().getMetadataFolder(false);
if (mdFolder.exists()) {
File credFile = new File(mdFolder, DBPDataSourceRegistry.CREDENTIALS_CONFIG_FILE_PREFIX + configurationStorage.getConfigurationFileSuffix() + DBPDataSourceRegistry.CREDENTIALS_CONFIG_FILE_EXT);
if (credFile.exists()) {
try {
String credJson = loadConfigFile(credFile, true);
Map<String, Map<String, Map<String, String>>> res = CONFIG_GSON.fromJson(credJson, new TypeToken<Map<String, Map<String, Map<String, String>>>>() {
}.getType());
secureProperties.putAll(res);
} catch (Exception e) {
log.error("Error decrypting secure credentials", e);
}
}
}
boolean decryptProject = CommonUtils.toBoolean(registry.getProject().getProjectProperty(DBPProject.PROP_SECURE_PROJECT));
String configJson = loadConfigFile(configFile, decryptProject);
{
Map<String, Object> jsonMap = JSONUtils.parseMap(CONFIG_GSON, new StringReader(configJson));
// Folders
for (Map.Entry<String, Map<String, Object>> folderMap : JSONUtils.getNestedObjects(jsonMap, "folders")) {
String name = folderMap.getKey();
String description = JSONUtils.getObjectProperty(folderMap.getValue(), RegistryConstants.ATTR_DESCRIPTION);
String parentFolder = JSONUtils.getObjectProperty(folderMap.getValue(), RegistryConstants.ATTR_PARENT);
DataSourceFolder parent = parentFolder == null ? null : registry.findFolderByPath(parentFolder, true);
DataSourceFolder folder = parent == null ? registry.findFolderByPath(name, true) : parent.getChild(name);
if (folder == null) {
folder = new DataSourceFolder(registry, parent, name, description);
registry.addDataSourceFolder(folder);
} else {
folder.setDescription(description);
}
}
// Connection types
for (Map.Entry<String, Map<String, Object>> ctMap : JSONUtils.getNestedObjects(jsonMap, "connection-types")) {
String id = ctMap.getKey();
Map<String, Object> ctConfig = ctMap.getValue();
String name = JSONUtils.getObjectProperty(ctConfig, RegistryConstants.ATTR_NAME);
String description = JSONUtils.getObjectProperty(ctConfig, RegistryConstants.ATTR_DESCRIPTION);
String color = JSONUtils.getObjectProperty(ctConfig, RegistryConstants.ATTR_COLOR);
Boolean autoCommit = JSONUtils.getObjectProperty(ctConfig, "auto-commit");
Boolean confirmExecute = JSONUtils.getObjectProperty(ctConfig, "confirm-execute");
Boolean confirmDataChange = JSONUtils.getObjectProperty(ctConfig, "confirm-data-change");
DBPConnectionType ct = DBWorkbench.getPlatform().getDataSourceProviderRegistry().getConnectionType(id, null);
if (ct == null) {
ct = new DBPConnectionType(id, name, color, description, CommonUtils.toBoolean(autoCommit), CommonUtils.toBoolean(confirmExecute), CommonUtils.toBoolean(confirmDataChange));
DBWorkbench.getPlatform().getDataSourceProviderRegistry().addConnectionType(ct);
}
deserializeModifyPermissions(ctConfig, ct);
}
// Drivers
// TODO: add drivers deserialization
// Virtual models
Map<String, DBVModel> modelMap = new LinkedHashMap<>();
for (Map.Entry<String, Map<String, Object>> vmMap : JSONUtils.getNestedObjects(jsonMap, "virtual-models")) {
String id = vmMap.getKey();
DBVModel model = new DBVModel(id, vmMap.getValue());
modelMap.put(id, model);
}
// Network profiles
for (Map.Entry<String, Map<String, Object>> vmMap : JSONUtils.getNestedObjects(jsonMap, "network-profiles")) {
String profileId = vmMap.getKey();
Map<String, Object> profileMap = vmMap.getValue();
DBWNetworkProfile profile = new DBWNetworkProfile();
profile.setProfileName(profileId);
profile.setProfileName(profileId);
profile.setProperties(JSONUtils.deserializeStringMap(profileMap, "properties"));
for (Map.Entry<String, Map<String, Object>> handlerMap : JSONUtils.getNestedObjects(profileMap, "handlers")) {
DBWHandlerConfiguration configuration = parseNetworkHandlerConfig(null, profile, handlerMap);
if (configuration != null) {
profile.updateConfiguration(configuration);
}
}
registry.updateNetworkProfile(profile);
}
// Auth profiles
for (Map.Entry<String, Map<String, Object>> vmMap : JSONUtils.getNestedObjects(jsonMap, "auth-profiles")) {
String profileId = vmMap.getKey();
Map<String, Object> profileMap = vmMap.getValue();
DBAAuthProfile profile = new DBAAuthProfile();
profile.setProfileId(profileId);
profile.setProfileName(JSONUtils.getString(profileMap, RegistryConstants.ATTR_NAME));
profile.setAuthModelId(JSONUtils.getString(profileMap, RegistryConstants.ATTR_AUTH_MODEL));
profile.setSavePassword(JSONUtils.getBoolean(profileMap, RegistryConstants.ATTR_SAVE_PASSWORD));
SecureCredentials authCreds = readSecuredCredentials(null, profile, null);
profile.setUserName(authCreds.getUserName());
profile.setUserPassword(authCreds.getUserPassword());
profile.setProperties(authCreds.getProperties());
registry.updateAuthProfile(profile);
}
// Connections
for (Map.Entry<String, Map<String, Object>> conMap : JSONUtils.getNestedObjects(jsonMap, "connections")) {
Map<String, Object> conObject = conMap.getValue();
// Primary settings
String id = conMap.getKey();
String dsProviderID = CommonUtils.toString(conObject.get(RegistryConstants.ATTR_PROVIDER));
if (CommonUtils.isEmpty(dsProviderID)) {
log.warn("Empty datasource provider for datasource '" + id + "'");
continue;
}
DataSourceProviderDescriptor provider = DataSourceProviderRegistry.getInstance().getDataSourceProvider(dsProviderID);
if (provider == null) {
log.warn("Can't find datasource provider " + dsProviderID + " for datasource '" + id + "'");
provider = (DataSourceProviderDescriptor) DataSourceProviderRegistry.getInstance().makeFakeProvider(dsProviderID);
}
String driverId = CommonUtils.toString(conObject.get(RegistryConstants.ATTR_DRIVER));
DriverDescriptor driver = provider.getDriver(driverId);
if (driver == null) {
log.warn("Can't find driver " + driverId + " in datasource provider " + provider.getId() + " for datasource '" + id + "'. Create new driver");
driver = provider.createDriver(driverId);
driver.setName(driverId);
driver.setDescription("Missing driver " + driverId);
driver.setDriverClassName("java.sql.Driver");
driver.setTemporary(true);
provider.addDriver(driver);
}
DataSourceDescriptor dataSource = registry.getDataSource(id);
boolean newDataSource = (dataSource == null);
if (newDataSource) {
DBPDataSourceOrigin origin;
Map<String, Object> originProperties = JSONUtils.deserializeProperties(conObject, TAG_ORIGIN);
if (CommonUtils.isEmpty(originProperties) || !originProperties.containsKey(ATTR_ORIGIN_TYPE)) {
origin = DataSourceOriginLocal.INSTANCE;
} else {
String originID = CommonUtils.toString(originProperties.remove(ATTR_ORIGIN_TYPE));
origin = new DataSourceOriginLazy(originID, originProperties);
}
dataSource = new DataSourceDescriptor(registry, configurationStorage, origin, id, driver, new DBPConnectionConfiguration());
} else {
// Clean settings - they have to be loaded later by parser
dataSource.getConnectionConfiguration().setProperties(Collections.emptyMap());
dataSource.getConnectionConfiguration().setHandlers(Collections.emptyList());
dataSource.clearFilters();
}
dataSource.setName(JSONUtils.getString(conObject, RegistryConstants.ATTR_NAME));
dataSource.setDescription(JSONUtils.getString(conObject, RegistryConstants.TAG_DESCRIPTION));
dataSource.setSavePassword(JSONUtils.getBoolean(conObject, RegistryConstants.ATTR_SAVE_PASSWORD));
dataSource.setTemplate(JSONUtils.getBoolean(conObject, RegistryConstants.ATTR_TEMPLATE));
DataSourceNavigatorSettings navSettings = dataSource.getNavigatorSettings();
navSettings.setShowSystemObjects(JSONUtils.getBoolean(conObject, DataSourceSerializerModern.ATTR_NAVIGATOR_SHOW_SYSTEM_OBJECTS));
navSettings.setShowUtilityObjects(JSONUtils.getBoolean(conObject, DataSourceSerializerModern.ATTR_NAVIGATOR_SHOW_UTIL_OBJECTS));
navSettings.setShowOnlyEntities(JSONUtils.getBoolean(conObject, DataSourceSerializerModern.ATTR_NAVIGATOR_SHOW_ONLY_ENTITIES));
navSettings.setHideFolders(JSONUtils.getBoolean(conObject, DataSourceSerializerModern.ATTR_NAVIGATOR_HIDE_FOLDERS));
navSettings.setHideSchemas(JSONUtils.getBoolean(conObject, DataSourceSerializerModern.ATTR_NAVIGATOR_HIDE_SCHEMAS));
navSettings.setHideVirtualModel(JSONUtils.getBoolean(conObject, DataSourceSerializerModern.ATTR_NAVIGATOR_HIDE_VIRTUAL));
navSettings.setMergeEntities(JSONUtils.getBoolean(conObject, DataSourceSerializerModern.ATTR_NAVIGATOR_MERGE_ENTITIES));
dataSource.setConnectionReadOnly(JSONUtils.getBoolean(conObject, RegistryConstants.ATTR_READ_ONLY));
final String folderPath = JSONUtils.getString(conObject, RegistryConstants.ATTR_FOLDER);
if (folderPath != null) {
dataSource.setFolder(registry.findFolderByPath(folderPath, true));
}
dataSource.setLockPasswordHash(CommonUtils.toString(conObject.get(RegistryConstants.ATTR_LOCK_PASSWORD)));
// Connection settings
{
Map<String, Object> cfgObject = JSONUtils.getObject(conObject, "configuration");
DBPConnectionConfiguration config = dataSource.getConnectionConfiguration();
config.setHostName(JSONUtils.getString(cfgObject, RegistryConstants.ATTR_HOST));
config.setHostPort(JSONUtils.getString(cfgObject, RegistryConstants.ATTR_PORT));
config.setServerName(JSONUtils.getString(cfgObject, RegistryConstants.ATTR_SERVER));
config.setDatabaseName(JSONUtils.getString(cfgObject, RegistryConstants.ATTR_DATABASE));
config.setUrl(JSONUtils.getString(cfgObject, RegistryConstants.ATTR_URL));
if (!passwordReadCanceled) {
final SecureCredentials creds = readSecuredCredentials(dataSource, null, null);
config.setUserName(creds.getUserName());
if (dataSource.isSavePassword()) {
config.setUserPassword(creds.getUserPassword());
}
}
{
// Still try to read credentials directly from configuration (#6564)
String userName = JSONUtils.getString(cfgObject, RegistryConstants.ATTR_USER);
if (!CommonUtils.isEmpty(userName))
config.setUserName(userName);
String userPassword = JSONUtils.getString(cfgObject, RegistryConstants.ATTR_PASSWORD);
if (!CommonUtils.isEmpty(userPassword))
config.setUserPassword(userPassword);
}
config.setClientHomeId(JSONUtils.getString(cfgObject, RegistryConstants.ATTR_HOME));
config.setConfigProfileName(JSONUtils.getString(cfgObject, "config-profile"));
config.setConnectionType(DataSourceProviderRegistry.getInstance().getConnectionType(JSONUtils.getString(cfgObject, RegistryConstants.ATTR_TYPE), DBPConnectionType.DEFAULT_TYPE));
String colorValue = JSONUtils.getString(cfgObject, RegistryConstants.ATTR_COLOR);
if (!CommonUtils.isEmpty(colorValue)) {
config.setConnectionColor(colorValue);
}
int keepAlive = JSONUtils.getInteger(cfgObject, RegistryConstants.ATTR_KEEP_ALIVE);
if (keepAlive > 0) {
config.setKeepAliveInterval(keepAlive);
}
config.setProperties(JSONUtils.deserializeStringMap(cfgObject, RegistryConstants.TAG_PROPERTIES));
config.setProviderProperties(JSONUtils.deserializeStringMap(cfgObject, RegistryConstants.TAG_PROVIDER_PROPERTIES));
config.setAuthModelId(JSONUtils.getString(cfgObject, RegistryConstants.ATTR_AUTH_MODEL));
config.setAuthProperties(JSONUtils.deserializeStringMapOrNull(cfgObject, "auth-properties"));
// Events
for (Map.Entry<String, Map<String, Object>> eventObject : JSONUtils.getNestedObjects(cfgObject, RegistryConstants.TAG_EVENTS)) {
DBPConnectionEventType eventType = CommonUtils.valueOf(DBPConnectionEventType.class, eventObject.getKey(), DBPConnectionEventType.BEFORE_CONNECT);
Map<String, Object> eventCfg = eventObject.getValue();
DBRShellCommand command = new DBRShellCommand("");
command.setEnabled(JSONUtils.getBoolean(eventCfg, RegistryConstants.ATTR_ENABLED));
command.setShowProcessPanel(JSONUtils.getBoolean(eventCfg, RegistryConstants.ATTR_SHOW_PANEL));
command.setWaitProcessFinish(JSONUtils.getBoolean(eventCfg, RegistryConstants.ATTR_WAIT_PROCESS));
if (command.isWaitProcessFinish()) {
command.setWaitProcessTimeoutMs(JSONUtils.getInteger(eventCfg, RegistryConstants.ATTR_WAIT_PROCESS_TIMEOUT));
}
command.setTerminateAtDisconnect(JSONUtils.getBoolean(eventCfg, RegistryConstants.ATTR_TERMINATE_AT_DISCONNECT));
command.setPauseAfterExecute(JSONUtils.getInteger(eventCfg, RegistryConstants.ATTR_PAUSE_AFTER_EXECUTE));
command.setWorkingDirectory(JSONUtils.getString(eventCfg, RegistryConstants.ATTR_WORKING_DIRECTORY));
command.setCommand(JSONUtils.getString(eventCfg, RegistryConstants.ATTR_COMMAND));
config.setEvent(eventType, command);
}
// Handlers
for (Map.Entry<String, Map<String, Object>> handlerObject : JSONUtils.getNestedObjects(cfgObject, RegistryConstants.TAG_HANDLERS)) {
DBWHandlerConfiguration configuration = parseNetworkHandlerConfig(dataSource, null, handlerObject);
if (configuration != null) {
dataSource.getConnectionConfiguration().updateHandler(configuration);
}
}
// Bootstrap
Map<String, Object> bootstrapCfg = JSONUtils.getObject(cfgObject, RegistryConstants.TAG_BOOTSTRAP);
DBPConnectionBootstrap bootstrap = config.getBootstrap();
if (bootstrapCfg.containsKey(RegistryConstants.ATTR_AUTOCOMMIT)) {
bootstrap.setDefaultAutoCommit(JSONUtils.getBoolean(bootstrapCfg, RegistryConstants.ATTR_AUTOCOMMIT));
}
if (bootstrapCfg.containsKey(RegistryConstants.ATTR_TXN_ISOLATION)) {
bootstrap.setDefaultTransactionIsolation(JSONUtils.getInteger(bootstrapCfg, RegistryConstants.ATTR_TXN_ISOLATION));
}
bootstrap.setDefaultCatalogName(JSONUtils.getString(bootstrapCfg, RegistryConstants.ATTR_DEFAULT_CATALOG));
bootstrap.setDefaultSchemaName(JSONUtils.getString(bootstrapCfg, RegistryConstants.ATTR_DEFAULT_SCHEMA));
String defObjectName = JSONUtils.getString(bootstrapCfg, RegistryConstants.ATTR_DEFAULT_OBJECT);
if (!CommonUtils.isEmpty(defObjectName) && CommonUtils.isEmpty(bootstrap.getDefaultSchemaName())) {
bootstrap.setDefaultSchemaName(JSONUtils.getString(bootstrapCfg, defObjectName));
}
if (bootstrapCfg.containsKey(RegistryConstants.ATTR_IGNORE_ERRORS)) {
bootstrap.setIgnoreErrors(JSONUtils.getBoolean(bootstrapCfg, RegistryConstants.ATTR_IGNORE_ERRORS));
}
bootstrap.setInitQueries(JSONUtils.deserializeStringList(bootstrapCfg, RegistryConstants.TAG_QUERY));
}
// Permissions
{
deserializeModifyPermissions(conObject, dataSource);
}
// Filters
for (Map<String, Object> filterCfg : JSONUtils.getObjectList(conObject, RegistryConstants.TAG_FILTERS)) {
String typeName = JSONUtils.getString(filterCfg, RegistryConstants.ATTR_TYPE);
String objectID = JSONUtils.getString(filterCfg, RegistryConstants.ATTR_ID);
if (!CommonUtils.isEmpty(typeName)) {
DBSObjectFilter filter = readObjectFiler(filterCfg);
dataSource.updateObjectFilter(typeName, objectID, filter);
}
}
// Preferences
dataSource.getPreferenceStore().getProperties().putAll(JSONUtils.deserializeStringMap(conObject, RegistryConstants.TAG_CUSTOM_PROPERTIES));
// Virtual model
String vmID = CommonUtils.toString(conObject.get("virtual-model-id"), id);
DBVModel dbvModel = modelMap.get(vmID);
if (dbvModel != null) {
dataSource.setVirtualModel(dbvModel);
}
// Add to the list
if (newDataSource) {
registry.addDataSourceToList(dataSource);
parseResults.addedDataSources.add(dataSource);
} else {
parseResults.updatedDataSources.add(dataSource);
}
}
// Saved filters
for (Map<String, Object> ctMap : JSONUtils.getObjectList(jsonMap, "saved-filters")) {
DBSObjectFilter filter = readObjectFiler(ctMap);
registry.addSavedFilter(filter);
}
}
}
use of org.jkiss.dbeaver.model.net.DBWNetworkProfile in project dbeaver by dbeaver.
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.DBWNetworkProfile in project dbeaver by dbeaver.
the class PrefPageProjectNetworkProfiles method performDefaults.
@Override
protected void performDefaults() {
super.performDefaults();
profilesTable.removeAll();
if (projectMeta != null) {
for (DBWNetworkProfile profile : projectMeta.getDataSourceRegistry().getNetworkProfiles()) {
TableItem item = new TableItem(profilesTable, SWT.NONE);
item.setText(profile.getProfileName());
item.setImage(DBeaverIcons.getImage(DBIcon.TYPE_DOCUMENT));
item.setData(profile);
if (selectedProfile == null) {
selectedProfile = profile;
profilesTable.select(0);
}
for (NetworkHandlerDescriptor nhd : allHandlers) {
HandlerBlock handlerBlock = configurations.get(nhd);
DBWHandlerConfiguration configuration = profile.getConfiguration(nhd);
if (configuration != null) {
handlerBlock.loadedConfigs.put(profile, configuration);
}
}
}
}
updateControlsState();
}
use of org.jkiss.dbeaver.model.net.DBWNetworkProfile in project dbeaver by dbeaver.
the class PrefPageProjectNetworkProfiles method createContents.
@Override
protected Control createContents(final Composite parent) {
CustomSashForm divider = UIUtils.createPartDivider(null, parent, SWT.HORIZONTAL);
{
Composite profilesGroup = new Composite(divider, SWT.BORDER);
GridLayout gl = new GridLayout(1, false);
gl.marginWidth = 0;
gl.marginHeight = 0;
profilesGroup.setLayout(gl);
GridData gd = new GridData(GridData.FILL_BOTH);
profilesGroup.setLayoutData(gd);
{
ToolBar toolbar = new ToolBar(profilesGroup, SWT.HORIZONTAL | SWT.RIGHT);
UIUtils.createToolItem(toolbar, "Create", "Create new profile", UIIcon.ROW_ADD, new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String profileName = "";
while (true) {
profileName = EnterNameDialog.chooseName(getShell(), "Profile name", profileName);
if (CommonUtils.isEmptyTrimmed(profileName)) {
return;
}
if (projectMeta.getDataSourceRegistry().getNetworkProfile(profileName) != null) {
UIUtils.showMessageBox(getShell(), "Wrong profile name", "Profile '" + profileName + "' already exist in project '" + projectMeta.getName() + "'", SWT.ICON_ERROR);
continue;
}
break;
}
DBWNetworkProfile newProfile = new DBWNetworkProfile();
newProfile.setProfileName(profileName);
projectMeta.getDataSourceRegistry().updateNetworkProfile(newProfile);
projectMeta.getDataSourceRegistry().flushConfig();
TableItem item = new TableItem(profilesTable, SWT.NONE);
item.setText(newProfile.getProfileName());
item.setImage(DBeaverIcons.getImage(DBIcon.TYPE_DOCUMENT));
item.setData(newProfile);
if (profilesTable.getItemCount() == 1) {
selectedProfile = newProfile;
profilesTable.select(0);
updateControlsState();
}
}
});
UIUtils.createToolItem(toolbar, "Delete", "Delete profile", UIIcon.ROW_DELETE, new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (selectedProfile != null) {
List<? extends DBPDataSourceContainer> usedBy = projectMeta.getDataSourceRegistry().getDataSourcesByProfile(selectedProfile);
if (!usedBy.isEmpty()) {
UIUtils.showMessageBox(getShell(), "Can't delete profile", "Configuration profile '" + selectedProfile.getProfileName() + "' used by " + usedBy.size() + " connections:\n" + usedBy, SWT.ICON_ERROR);
return;
}
if (!UIUtils.confirmAction(getShell(), "Delete profile", "Are you sure you want to delete configuration profile '" + selectedProfile.getProfileName() + "'?")) {
return;
}
projectMeta.getDataSourceRegistry().removeNetworkProfile(selectedProfile);
projectMeta.getDataSourceRegistry().flushConfig();
profilesTable.remove(profilesTable.getSelectionIndex());
selectedProfile = null;
updateControlsState();
} else {
UIUtils.showMessageBox(getShell(), "No profile", "Select profile first", SWT.ICON_ERROR);
}
}
});
}
profilesTable = new Table(profilesGroup, SWT.SINGLE);
gd = new GridData(GridData.FILL_BOTH);
gd.minimumWidth = 150;
profilesTable.setLayoutData(gd);
profilesTable.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
saveHandlerSettings();
TableItem[] selection = profilesTable.getSelection();
if (ArrayUtils.isEmpty(selection)) {
selectedProfile = null;
} else {
selectedProfile = (DBWNetworkProfile) selection[0].getData();
}
updateControlsState();
}
});
}
{
handlersFolder = new TabFolder(divider, SWT.TOP | SWT.FLAT);
handlersFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
for (NetworkHandlerDescriptor nhd : NetworkHandlerRegistry.getInstance().getDescriptors()) {
if (!nhd.hasObjectTypes()) {
createHandlerTab(nhd);
}
}
handlersFolder.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
updateControlsState();
}
});
}
divider.setWeights(new int[] { 300, 700 });
performDefaults();
return divider;
}
use of org.jkiss.dbeaver.model.net.DBWNetworkProfile in project dbeaver by serge-rider.
the class PrefPageProjectNetworkProfiles method createContents.
@Override
protected Control createContents(final Composite parent) {
CustomSashForm divider = UIUtils.createPartDivider(null, parent, SWT.HORIZONTAL);
{
Composite profilesGroup = new Composite(divider, SWT.BORDER);
GridLayout gl = new GridLayout(1, false);
gl.marginWidth = 0;
gl.marginHeight = 0;
profilesGroup.setLayout(gl);
GridData gd = new GridData(GridData.FILL_BOTH);
profilesGroup.setLayoutData(gd);
{
ToolBar toolbar = new ToolBar(profilesGroup, SWT.HORIZONTAL | SWT.RIGHT);
UIUtils.createToolItem(toolbar, "Create", "Create new profile", UIIcon.ROW_ADD, new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String profileName = "";
while (true) {
profileName = EnterNameDialog.chooseName(getShell(), "Profile name", profileName);
if (CommonUtils.isEmptyTrimmed(profileName)) {
return;
}
if (projectMeta.getDataSourceRegistry().getNetworkProfile(profileName) != null) {
UIUtils.showMessageBox(getShell(), "Wrong profile name", "Profile '" + profileName + "' already exist in project '" + projectMeta.getName() + "'", SWT.ICON_ERROR);
continue;
}
break;
}
DBWNetworkProfile newProfile = new DBWNetworkProfile();
newProfile.setProfileName(profileName);
projectMeta.getDataSourceRegistry().updateNetworkProfile(newProfile);
projectMeta.getDataSourceRegistry().flushConfig();
TableItem item = new TableItem(profilesTable, SWT.NONE);
item.setText(newProfile.getProfileName());
item.setImage(DBeaverIcons.getImage(DBIcon.TYPE_DOCUMENT));
item.setData(newProfile);
if (profilesTable.getItemCount() == 1) {
selectedProfile = newProfile;
profilesTable.select(0);
updateControlsState();
}
}
});
UIUtils.createToolItem(toolbar, "Delete", "Delete profile", UIIcon.ROW_DELETE, new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (selectedProfile != null) {
List<? extends DBPDataSourceContainer> usedBy = projectMeta.getDataSourceRegistry().getDataSourcesByProfile(selectedProfile);
if (!usedBy.isEmpty()) {
UIUtils.showMessageBox(getShell(), "Can't delete profile", "Configuration profile '" + selectedProfile.getProfileName() + "' used by " + usedBy.size() + " connections:\n" + usedBy, SWT.ICON_ERROR);
return;
}
if (!UIUtils.confirmAction(getShell(), "Delete profile", "Are you sure you want to delete configuration profile '" + selectedProfile.getProfileName() + "'?")) {
return;
}
projectMeta.getDataSourceRegistry().removeNetworkProfile(selectedProfile);
projectMeta.getDataSourceRegistry().flushConfig();
profilesTable.remove(profilesTable.getSelectionIndex());
selectedProfile = null;
updateControlsState();
} else {
UIUtils.showMessageBox(getShell(), "No profile", "Select profile first", SWT.ICON_ERROR);
}
}
});
}
profilesTable = new Table(profilesGroup, SWT.SINGLE);
gd = new GridData(GridData.FILL_BOTH);
gd.minimumWidth = 150;
profilesTable.setLayoutData(gd);
profilesTable.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
saveHandlerSettings();
TableItem[] selection = profilesTable.getSelection();
if (ArrayUtils.isEmpty(selection)) {
selectedProfile = null;
} else {
selectedProfile = (DBWNetworkProfile) selection[0].getData();
}
updateControlsState();
}
});
}
{
handlersFolder = new TabFolder(divider, SWT.TOP | SWT.FLAT);
handlersFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
for (NetworkHandlerDescriptor nhd : NetworkHandlerRegistry.getInstance().getDescriptors()) {
if (!nhd.hasObjectTypes()) {
createHandlerTab(nhd);
}
}
handlersFolder.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
updateControlsState();
}
});
}
divider.setWeights(new int[] { 300, 700 });
performDefaults();
return divider;
}
Aggregations