From 94c8fa0cd628542631bf30062f0791b98be23d11 Mon Sep 17 00:00:00 2001 From: Ainur <59531286+yagudin10@users.noreply.github.com> Date: Wed, 31 Aug 2022 10:57:26 +0300 Subject: [PATCH] CB-779 athena db use provider property for s3 location (#1077) --- .../io.cloudbeaver.server/schema/service.core.graphqls | 1 + .../src/io/cloudbeaver/WebServiceUtils.java | 4 +++- .../io/cloudbeaver/model/WebDatabaseDriverConfig.java | 10 ++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) 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); + } }