mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
CB-178 Navigator settings API
This commit is contained in:
@@ -63,6 +63,7 @@ type ServerConfig {
|
||||
supportedLanguages: [ ServerLanguage! ]!
|
||||
services: [ WebServiceConfig ]
|
||||
productConfiguration: Object!
|
||||
defaultNavigatorSettings: NavigatorSettings!
|
||||
}
|
||||
|
||||
type SessionInfo {
|
||||
@@ -133,7 +134,8 @@ type DriverPropertyInfo {
|
||||
}
|
||||
|
||||
# Data source info is a description of some remote database. Doesn't include user credentials
|
||||
type DataSourceInfo @deprecated {
|
||||
# Deprectaed. Use ConnectionInfo instead
|
||||
type DataSourceInfo {
|
||||
id: ID!
|
||||
driverId: ID!
|
||||
name: String!
|
||||
@@ -153,7 +155,7 @@ input ConnectionConfig {
|
||||
description: String
|
||||
|
||||
# ID of predefined datasource
|
||||
dataSourceId: ID @deprecated
|
||||
dataSourceId: ID # deprecated
|
||||
|
||||
# Custom connection parameters (all optional)
|
||||
|
||||
@@ -167,8 +169,8 @@ input ConnectionConfig {
|
||||
|
||||
# User credentials
|
||||
|
||||
userName: String @deprecated
|
||||
userPassword: String @deprecated
|
||||
userName: String # deprecated
|
||||
userPassword: String # deprecated
|
||||
|
||||
authModelId: ID
|
||||
credentials: Object
|
||||
@@ -196,6 +198,26 @@ type DriverAuthModel {
|
||||
parameters: [DriverAuthParameter!]!
|
||||
}
|
||||
|
||||
type NavigatorSettings {
|
||||
showSystemObjects: Boolean!
|
||||
showUtilityObjects: Boolean!
|
||||
showOnlyEntities: Boolean!
|
||||
mergeEntities: Boolean!
|
||||
hideFolders: Boolean!
|
||||
hideSchemas: Boolean!
|
||||
hideVirtualModel: Boolean!
|
||||
}
|
||||
|
||||
input NavigatorSettingsInput {
|
||||
showSystemObjects: Boolean!
|
||||
showUtilityObjects: Boolean!
|
||||
showOnlyEntities: Boolean!
|
||||
mergeEntities: Boolean!
|
||||
hideFolders: Boolean!
|
||||
hideSchemas: Boolean!
|
||||
hideVirtualModel: Boolean!
|
||||
}
|
||||
|
||||
# Connection instance
|
||||
type ConnectionInfo {
|
||||
id: ID!
|
||||
@@ -219,6 +241,7 @@ type ConnectionInfo {
|
||||
|
||||
# Supported features (provided etc)
|
||||
features: [ String! ]!
|
||||
navigatorSettings: NavigatorSettings!
|
||||
}
|
||||
|
||||
type LogEntry {
|
||||
@@ -295,6 +318,12 @@ extend type Mutation {
|
||||
# Remove connection and disconnects from the database if needed
|
||||
deleteConnection( id: ID! ): Boolean!
|
||||
|
||||
# Changes navigator settings for connection
|
||||
setConnectionNavigatorSettings( id: ID!, settings: NavigatorSettingsInput!): Boolean!
|
||||
|
||||
# Changes default navigator settings
|
||||
setDefaultNavigatorSettings( settings: NavigatorSettingsInput!): Boolean!
|
||||
|
||||
#### Generic async functions
|
||||
|
||||
asyncTaskCancel(id: String!): Boolean
|
||||
|
||||
+7
-2
@@ -21,8 +21,8 @@ import io.cloudbeaver.model.session.WebSession;
|
||||
import io.cloudbeaver.server.CBConstants;
|
||||
import org.jkiss.dbeaver.model.DBPDataSource;
|
||||
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
|
||||
import org.jkiss.dbeaver.model.meta.Association;
|
||||
import org.jkiss.dbeaver.model.meta.Property;
|
||||
import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -126,7 +126,7 @@ public class WebConnectionInfo {
|
||||
this.clientVersion = clientVersion;
|
||||
}
|
||||
|
||||
@Association
|
||||
@Property
|
||||
public String[] getFeatures() {
|
||||
List<String> features = new ArrayList<>();
|
||||
|
||||
@@ -149,4 +149,9 @@ public class WebConnectionInfo {
|
||||
return features.toArray(new String[0]);
|
||||
}
|
||||
|
||||
@Property
|
||||
public DBNBrowseSettings getNavigatorSettings() {
|
||||
return dataSourceContainer.getNavigatorSettings();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import io.cloudbeaver.registry.WebServiceRegistry;
|
||||
import io.cloudbeaver.server.CBApplication;
|
||||
import io.cloudbeaver.server.CBPlatform;
|
||||
import org.jkiss.dbeaver.model.meta.Property;
|
||||
import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings;
|
||||
import org.jkiss.dbeaver.registry.language.PlatformLanguageDescriptor;
|
||||
import org.jkiss.dbeaver.registry.language.PlatformLanguageRegistry;
|
||||
import org.jkiss.dbeaver.utils.GeneralUtils;
|
||||
@@ -104,4 +105,9 @@ public class WebServerConfig {
|
||||
return CBPlatform.getInstance().getApplication().getProductConfiguration();
|
||||
}
|
||||
|
||||
@Property
|
||||
public DBNBrowseSettings getNavigatorSettings() {
|
||||
return application.getDefaultNavigatorSettings();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -28,7 +28,9 @@ import org.jkiss.dbeaver.Log;
|
||||
import org.jkiss.dbeaver.ModelPreferences;
|
||||
import org.jkiss.dbeaver.model.app.DBPApplication;
|
||||
import org.jkiss.dbeaver.model.data.json.JSONUtils;
|
||||
import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings;
|
||||
import org.jkiss.dbeaver.registry.BaseApplicationImpl;
|
||||
import org.jkiss.dbeaver.registry.DataSourceNavigatorSettings;
|
||||
import org.jkiss.dbeaver.runtime.DBWorkbench;
|
||||
import org.jkiss.dbeaver.utils.GeneralUtils;
|
||||
import org.jkiss.dbeaver.utils.PrefUtils;
|
||||
@@ -69,6 +71,8 @@ public class CBApplication extends BaseApplicationImpl {
|
||||
private CBDatabase database;
|
||||
private CBSecurityController securityController;
|
||||
|
||||
private DBNBrowseSettings defaultNavigatorSettings = DataSourceNavigatorSettings.PRESET_FULL.getSettings();
|
||||
|
||||
private long maxSessionIdleTime = CBConstants.MAX_SESSION_IDLE_TIME;
|
||||
|
||||
private boolean develMode = false;
|
||||
@@ -340,4 +344,12 @@ public class CBApplication extends BaseApplicationImpl {
|
||||
public boolean isDevelMode() {
|
||||
return develMode;
|
||||
}
|
||||
|
||||
public DBNBrowseSettings getDefaultNavigatorSettings() {
|
||||
return defaultNavigatorSettings;
|
||||
}
|
||||
|
||||
public void setDefaultNavigatorSettings(DBNBrowseSettings defaultNavigatorSettings) {
|
||||
this.defaultNavigatorSettings = defaultNavigatorSettings;
|
||||
}
|
||||
}
|
||||
|
||||
+9
@@ -21,6 +21,7 @@ import io.cloudbeaver.DBWebException;
|
||||
import io.cloudbeaver.WebAction;
|
||||
import io.cloudbeaver.model.*;
|
||||
import io.cloudbeaver.model.session.WebSession;
|
||||
import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
@@ -81,6 +82,13 @@ public interface DBWServiceCore extends DBWService {
|
||||
@WebAction
|
||||
boolean closeConnection(WebSession webSession, String connectionId) throws DBWebException;
|
||||
|
||||
///////////////////////////////////////////
|
||||
// Navigator settings
|
||||
|
||||
boolean setConnectionNavigatorSettings(WebSession webSession, String id, DBNBrowseSettings settings) throws DBWebException;
|
||||
|
||||
boolean setDefaultNavigatorSettings(WebSession webSession, DBNBrowseSettings settings);
|
||||
|
||||
///////////////////////////////////////////
|
||||
// Async tasks
|
||||
|
||||
@@ -89,4 +97,5 @@ public interface DBWServiceCore extends DBWService {
|
||||
|
||||
@WebAction
|
||||
boolean cancelAsyncTask(WebSession webSession, String taskId) throws DBWebException;
|
||||
|
||||
}
|
||||
|
||||
+16
@@ -16,6 +16,8 @@
|
||||
*/
|
||||
package io.cloudbeaver.service.core;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import graphql.TypeResolutionEnvironment;
|
||||
import graphql.schema.DataFetchingEnvironment;
|
||||
import graphql.schema.idl.TypeRuntimeWiring;
|
||||
@@ -27,12 +29,18 @@ import io.cloudbeaver.server.graphql.GraphQLEndpoint;
|
||||
import io.cloudbeaver.service.DBWBindingContext;
|
||||
import io.cloudbeaver.service.WebServiceBindingBase;
|
||||
import io.cloudbeaver.service.core.impl.WebServiceCore;
|
||||
import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings;
|
||||
import org.jkiss.dbeaver.registry.DataSourceNavigatorSettings;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Web service implementation
|
||||
*/
|
||||
public class WebServiceBindingCore extends WebServiceBindingBase<DBWServiceCore> {
|
||||
|
||||
private final Gson gson = new GsonBuilder().create();
|
||||
|
||||
public WebServiceBindingCore() {
|
||||
super(DBWServiceCore.class, new WebServiceCore(), "schema/service.core.graphqls");
|
||||
}
|
||||
@@ -69,6 +77,9 @@ public class WebServiceBindingCore extends WebServiceBindingBase<DBWServiceCore>
|
||||
.dataFetcher("testConnection", env -> getService(env).testConnection(getWebSession(env), getConnectionConfig(env)))
|
||||
.dataFetcher("closeConnection", env -> getService(env).closeConnection(getWebSession(env), env.getArgument("id")))
|
||||
|
||||
.dataFetcher("setConnectionNavigatorSettings", env -> getService(env).setConnectionNavigatorSettings(getWebSession(env), env.getArgument("id"), parseNavigatorSettings(env.getArgument("settings"))))
|
||||
.dataFetcher("setDefaultNavigatorSettings", env -> getService(env).setDefaultNavigatorSettings(getWebSession(env), parseNavigatorSettings(env.getArgument("settings"))))
|
||||
|
||||
.dataFetcher("asyncTaskStatus", env -> getService(env).getAsyncTaskStatus(getWebSession(env), env.getArgument("id")))
|
||||
.dataFetcher("asyncTaskCancel", env -> getService(env).cancelAsyncTask(getWebSession(env), env.getArgument("id")))
|
||||
;
|
||||
@@ -77,6 +88,11 @@ public class WebServiceBindingCore extends WebServiceBindingBase<DBWServiceCore>
|
||||
);
|
||||
}
|
||||
|
||||
private DBNBrowseSettings parseNavigatorSettings(Map<String, Object> settingsMap) {
|
||||
return gson.fromJson(
|
||||
gson.toJsonTree(settingsMap), DataSourceNavigatorSettings.class);
|
||||
}
|
||||
|
||||
private WebConnectionConfig getConnectionConfig(DataFetchingEnvironment env) {
|
||||
return new WebConnectionConfig(env.getArgument("config"));
|
||||
}
|
||||
|
||||
+14
@@ -32,6 +32,7 @@ import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry;
|
||||
import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration;
|
||||
import org.jkiss.dbeaver.model.connection.DBPDriver;
|
||||
import org.jkiss.dbeaver.model.exec.DBCException;
|
||||
import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings;
|
||||
import org.jkiss.dbeaver.registry.DataSourceDescriptor;
|
||||
import org.jkiss.dbeaver.registry.DataSourceNavigatorSettings;
|
||||
import org.jkiss.dbeaver.runtime.jobs.ConnectionTestJob;
|
||||
@@ -230,6 +231,19 @@ public class WebServiceCore implements DBWServiceCore {
|
||||
return disconnected;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setConnectionNavigatorSettings(WebSession webSession, String id, DBNBrowseSettings settings) throws DBWebException {
|
||||
WebConnectionInfo connectionInfo = webSession.getWebConnectionInfo(id);
|
||||
((DataSourceDescriptor)connectionInfo.getDataSourceContainer()).setNavigatorSettings(settings);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setDefaultNavigatorSettings(WebSession webSession, DBNBrowseSettings settings) {
|
||||
CBApplication.getInstance().setDefaultNavigatorSettings(settings);
|
||||
return true;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private DBPDataSourceContainer makeConnectionInstance(WebConnectionConfig config, DBPDataSourceRegistry sessionRegistry) throws DBWebException {
|
||||
String driverId = config.getDriverId();
|
||||
|
||||
Reference in New Issue
Block a user