diff --git a/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls b/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls index 54d2bb2dd2..c097dd45e4 100644 --- a/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls +++ b/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls @@ -198,6 +198,7 @@ type DriverInfo { embedded: Boolean enabled: Boolean! requiresServerName: Boolean + requiresDatabaseName: Boolean licenseRequired: Boolean license: String diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/WebServiceUtils.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/WebServiceUtils.java index 08010f6d82..8af429a492 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/WebServiceUtils.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/WebServiceUtils.java @@ -169,7 +169,6 @@ public class WebServiceUtils extends WebCommonUtils { if (config.getServerName() != null) { dsConfig.setServerName(config.getServerName()); } - dsConfig.setUrl(driver.getConnectionURL(dsConfig)); } if (config.getProperties() != null) { Map newProps = new LinkedHashMap<>(); @@ -197,6 +196,9 @@ public class WebServiceUtils extends WebCommonUtils { if (config.getConfigurationType() != null) { dsConfig.setConfigurationType(config.getConfigurationType()); } + if (CommonUtils.isEmpty(config.getUrl())) { + dsConfig.setUrl(driver.getConnectionURL(dsConfig)); + } // Save network handlers if (config.getNetworkHandlersConfig() != null) { for (WebNetworkHandlerConfigInput nhc : config.getNetworkHandlersConfig()) { diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatabaseDriverConfig.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatabaseDriverConfig.java index fb0f5350ef..bc3795be16 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatabaseDriverConfig.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatabaseDriverConfig.java @@ -44,6 +44,7 @@ import java.util.Map; public class WebDatabaseDriverConfig { public static final String URL_SERVER_FIELD = "{server}"; + public static final String URL_DATABASE_FIELD = ".*(?:\\{(?:database|file|folder)}).*"; private final WebSession webSession; private final DBPDriver driver; private String id; @@ -249,4 +250,13 @@ public class WebDatabaseDriverConfig { public DBPDriverConfigurationType[] getConfigurationTypes() { return driver.getSupportedConfigurationTypes().toArray(DBPDriverConfigurationType[]::new); } + + + @Property + public boolean getRequiresDatabaseName() { + if (driver.getSampleURL() == null) { + return false; + } + return driver.getSampleURL().matches(URL_DATABASE_FIELD); + } }