From 1fc3d4bbe7e08d1f9850506587710147e5d87dd8 Mon Sep 17 00:00:00 2001 From: liuyizhuo Date: Fri, 6 Aug 2021 12:18:21 +0800 Subject: [PATCH] Fixed issues Fixed some codacy issues and requested changes. https://app.codacy.com/gh/dbeaver/dbeaver/pullRequest?prid=7867479 https://github.com/dbeaver/dbeaver/pull/13449#pullrequestreview-723256362 --- .../icons/ob_icon.png | Bin 1624 -> 1123 bytes .../icons/ob_icon_big.png | Bin 30561 -> 4843 bytes .../icons/ob_logo.png | Bin 0 -> 13195 bytes .../plugin.xml | 2 +- .../OceanbaseAuthModelDatabaseNative.java | 6 +-- .../model/plan/OceanbasePlanAnalyzer.java | 2 - .../model/plan/OceanbasePlanJSON.java | 31 +++++++--------- .../model/plan/OceanbasePlanNodeJSON.java | 34 ++++++----------- .../mysql/model/OceanbaseMySQLCatalog.java | 14 +++---- .../mysql/model/OceanbaseMySQLDataSource.java | 7 +--- .../model/OceanbaseMySQLDatabaseManager.java | 12 +----- .../oceanbase/mysql/model/OceanbaseTable.java | 5 +++ .../ui/views/OceanbaseConnectionPage.java | 35 ++++-------------- product/debug/DBeaver.product.launch | 1 + 14 files changed, 50 insertions(+), 99 deletions(-) create mode 100644 plugins/org.jkiss.dbeaver.ext.oceanbase/icons/ob_logo.png diff --git a/plugins/org.jkiss.dbeaver.ext.oceanbase/icons/ob_icon.png b/plugins/org.jkiss.dbeaver.ext.oceanbase/icons/ob_icon.png index ed4ccfe5353879bda04bb5851685c20a9a504d2b..06014ee98158226add3278c3ac127304931aa74a 100644 GIT binary patch delta 660 zcmV;F0&D%)4C4rpBn|;{Qb$4nuFf3k0001lkzr9AkN^Mx0RR91kN^Mx0RRJ_0RRI4 z000310RRAz!5keXZIEXG000SaNLh0L02UI0G(! z8D8NB0006LNkl@M6g_!K1Ev&rx{yji1b-lcC~o4W(7lQ)!9cezyXneB zKR{5^)J;JJ#nOdE1R=HP!qP>xsZg+?T{Tv#scB5&dviQ@@)BZQhoIL?zHBF|FGtRQ{^Ww@e?#F9k$B}&oEgftoMR|Djg8(HTN#$R zBHqf;UAYl;k}SwWBK@#gBX)Eu(Zu#_uvL6`t4)6XN;X^GPiLjXjAJa;kWHzCd|Zx` zO+H%!#vW_*Njy%hj3=?m;^Ef&*fJ?cHiShBg%VaW1Mda<&?Su{CqZcH9E|5=N zlJ7ShbCcw~r)`er23ee$WvR4CC2?ze+gA`p(OSw8BS8Y#t0A~@7g(4AM$aouxP2X1 zU9aI|`2fvk6Xo&;OiWDTTF?mk0GvqlGmolcN^q`=Ml$lk+TmMeA)Z^-?fETe!RI^>21Nz zpnHYwH>>2ao07dO-f&!8A!mxyKI!zCbKcI)%`1hvCyzox#@h3(7>Pl%jl@9%7#al9 z13sKBNqGcC<3D7830r?ez9 zKQA;dv&7EGMjx9n!bBUO329aVnH8xykuI6Jsd>dft#&5nCN}z5Ww7du2t;VLFhJ27 zfsjGh>YSgGUld%Bn4D^72(=9%H2EK+S$+RCyHCJCxaR5N7-Avl8|>{78YmL``_A`y z?=$rm|7pn&5ctw~q|u90kkzzP%}Kz8Svop%;^hFR0)Zusyuw96j?GF+T236?zZWc2 zYYlXp`QY{9^I!J;zP+~C^u?X(cQ@1L{*A1jU&~rnlEpMvNacL?T;WCS9?a>2U9aDT z?yUFNsk3$EM#+CluALzhTP)uHIeIeu)A=1seEGW%D$7L%9|+jmv%34Q$&aIX z!#FgS%N|mWY?O# zmdV7ae~LoyiFZlr!XLA4a-@AI-N7?cM$~!we8ojE^=~ims@+`|ttor?0Mm?Omalp9 zuW%V2W4L_k^_|OWR8BW){COb0jL)buPtmilDbca-klXWs=HU9OR36<~aW5xZ?~>^= zFzt7LJ<-G2WX|TQMVk(YWHk75>iupB+1hdas9oiWMYpy*N)a*gSvkilbefmSt7%i- z-xG69Ty2#9sGPU{WzKe?`_Hdgw;z0ywbJ#B&{CVyqE(8eX9T7EKXYX-JSd%?`D)t2 z#HUdo_pQJ6|GQ|&;qP1<`IINIe%>%$;FfQ#((cuVFX?Xm7}0&{M#;3stT4%dtbp&& z^B+z9wu$&AWA6Z@RA$e@cxgXuZ z$3<`DPJTAo&}3ftd@Z*2OSx5(j>+vVV(%%Qd_~;A{#@&uMK9WCe|h#;AtycC?;f|C zi1N36FHeMJ8eCqNY$G*wOGxp5*XQcj6pwm4g!ueO^EcYPx%IjDi6*zSV;ki2Zu}~6 zIl@#LknSHLe7Z<-^53O7iPIF;2$Y-lS28o(B!=Idaj|xDk!xI6fA*xO`6-Xg*n)C& zt*-J|N$9F;zRI4lX=>kcl}UH@^K&`Y|Iy#@I;xa2*5sGl@ydU_{zpE~zT^GLNBf)A ttG}}nfA?Ohnp51wD*MHBr~C}Pf2^HCR>=$I_Jaxz22WQ%mvv4FO#lKj+J*oC diff --git a/plugins/org.jkiss.dbeaver.ext.oceanbase/icons/ob_icon_big.png b/plugins/org.jkiss.dbeaver.ext.oceanbase/icons/ob_icon_big.png index 645c1744118596e69189a7f7d75c3a1424e70fd0..a8e7c9142117c3b08a48b88dae4761239a8a9bd8 100644 GIT binary patch delta 4441 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 literal 30561 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 VHgB4~DBQ-es!CdlRq|G${{uM&ta1PV diff --git a/plugins/org.jkiss.dbeaver.ext.oceanbase/icons/ob_logo.png b/plugins/org.jkiss.dbeaver.ext.oceanbase/icons/ob_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f40833fae4fd20ef7463271d18038d5fd55c162a GIT binary patch literal 13195 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 - + diff --git a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/auth/OceanbaseAuthModelDatabaseNative.java b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/auth/OceanbaseAuthModelDatabaseNative.java index 3b9d585106..9cb7090912 100644 --- a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/auth/OceanbaseAuthModelDatabaseNative.java +++ b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/auth/OceanbaseAuthModelDatabaseNative.java @@ -20,10 +20,8 @@ public class OceanbaseAuthModelDatabaseNative extends AuthModelDatabaseNative { AuthModelDatabaseNativeCredentials credentials, DBPConnectionConfiguration configuration, @NotNull Properties connProperties) throws DBException { String userName = configuration.getUserName(); - if (!CommonUtils.isEmpty(userName)) { - if (!userName.contains("@")) { - userName += "@" + configuration.getServerName(); - } + if (!CommonUtils.isEmpty(userName) && !userName.contains("@")) { + userName += "@" + configuration.getServerName(); } credentials.setUserName(userName); diff --git a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/plan/OceanbasePlanAnalyzer.java b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/plan/OceanbasePlanAnalyzer.java index 7edada1b8d..55bae2a808 100644 --- a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/plan/OceanbasePlanAnalyzer.java +++ b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/plan/OceanbasePlanAnalyzer.java @@ -94,7 +94,6 @@ public class OceanbasePlanAnalyzer extends AbstractExecutionPlanSerializer imple @Override public DBPDataSource getDataSource() { - // TODO Auto-generated method stub return this.dataSource; } @@ -106,7 +105,6 @@ public class OceanbasePlanAnalyzer extends AbstractExecutionPlanSerializer imple @Override public DBCPlanStyle getPlanStyle() { - // TODO Auto-generated method stub return DBCPlanStyle.PLAN; } diff --git a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/plan/OceanbasePlanJSON.java b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/plan/OceanbasePlanJSON.java index fdee8d93f1..a3ddce8351 100644 --- a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/plan/OceanbasePlanJSON.java +++ b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/plan/OceanbasePlanJSON.java @@ -29,28 +29,25 @@ public class OceanbasePlanJSON extends AbstractExecutionPlan { public OceanbasePlanJSON(JDBCSession session, String query) throws DBCException { this.dataSource = (OceanbaseMySQLDataSource) session.getDataSource(); this.query = query; - try (JDBCPreparedStatement dbStat = session.prepareStatement(getPlanQueryString())) { - try (JDBCResultSet dbResult = dbStat.executeQuery()) { - List nodes = new ArrayList<>(); + try{ + JDBCPreparedStatement dbStat = session.prepareStatement(getPlanQueryString()); + JDBCResultSet dbResult = dbStat.executeQuery(); + List nodes = new ArrayList<>(); - dbResult.next(); - String jsonPlan = dbResult.getString(1); + dbResult.next(); + String jsonPlan = dbResult.getString(1); - JsonObject planObject = gson.fromJson(jsonPlan, JsonObject.class); - JsonObject queryBlock = planObject.getAsJsonObject(); + JsonObject planObject = gson.fromJson(jsonPlan, JsonObject.class); + JsonObject queryBlock = planObject.getAsJsonObject(); - OceanbasePlanNodeJSON rootNode = new OceanbasePlanNodeJSON(null, "select", queryBlock); + OceanbasePlanNodeJSON rootNode = new OceanbasePlanNodeJSON(null, "select", queryBlock); - if (CommonUtils.isEmpty(rootNode.getNested()) && rootNode.getProperty("message") != null) { - throw new DBCException("Can't explain plan: " + rootNode.getProperty("message")); - } - nodes.add(rootNode); - - rootNodes = nodes; - } catch (Exception e) { - // TODO: handle exception - throw new DBCException(e, session.getExecutionContext()); + if (CommonUtils.isEmpty(rootNode.getNested()) && rootNode.getProperty("message") != null) { + throw new DBCException("Can't explain plan: " + rootNode.getProperty("message")); } + nodes.add(rootNode); + + rootNodes = nodes; } catch (SQLException e) { throw new DBCException(e, session.getExecutionContext()); } diff --git a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/plan/OceanbasePlanNodeJSON.java b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/plan/OceanbasePlanNodeJSON.java index 1278b9397b..de7822af0f 100644 --- a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/plan/OceanbasePlanNodeJSON.java +++ b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/model/plan/OceanbasePlanNodeJSON.java @@ -99,9 +99,7 @@ public class OceanbasePlanNodeJSON extends AbstractExecutionPlanNode implements @Override public String getNodeName() { Object nodeName = nodeProps.get("table_name"); - if (nodeName == null) { - - } else { + if (nodeName != null) { Object accessType = nodeProps.get("access_type"); if (accessType != null) { return nodeName + " (" + accessType + ")"; @@ -114,9 +112,6 @@ public class OceanbasePlanNodeJSON extends AbstractExecutionPlanNode implements @Override public Number getNodeCost() { Object readCost = nodeProps.get("COST"); - if (readCost == null) { - readCost = nodeProps.get("COST"); - } if (readCost == null) { if (nested != null) { long totalCost = 0; @@ -147,20 +142,15 @@ public class OceanbasePlanNodeJSON extends AbstractExecutionPlanNode implements @Override public Number getNodeRowCount() { Object rowCount = nodeProps.get("EST.ROWS"); - if (rowCount == null) { - rowCount = nodeProps.get("EST.ROWS"); // MariaDB-specific plan - if (rowCount == null) { - if (nested != null) { - long totalRC = 0; - for (OceanbasePlanNodeJSON child : nested) { - Number childRC = child.getNodeRowCount(); - if (childRC != null) { - totalRC += childRC.longValue(); - } - } - return totalRC; + if (rowCount == null && nested != null) { + long totalRC = 0; + for (OceanbasePlanNodeJSON child : nested) { + Number childRC = child.getNodeRowCount(); + if (childRC != null) { + totalRC += childRC.longValue(); } } + return totalRC; } return rowCount == null ? null : CommonUtils.toLong(rowCount); } @@ -205,7 +195,7 @@ public class OceanbasePlanNodeJSON extends AbstractExecutionPlanNode implements @Override public Object getPropertyValue(@Nullable DBRProgressMonitor monitor, String id) { - return nodeProps.get(id.toString()); + return nodeProps.get(id); } @Override @@ -220,17 +210,17 @@ public class OceanbasePlanNodeJSON extends AbstractExecutionPlanNode implements @Override public void resetPropertyValue(@Nullable DBRProgressMonitor monitor, String id) { - + // noting to do } @Override public void resetPropertyValueToDefault(String id) { - + // noting to do } @Override public void setPropertyValue(@Nullable DBRProgressMonitor monitor, String id, Object value) { - + // noting to do } } diff --git a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseMySQLCatalog.java b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseMySQLCatalog.java index a2179d83af..427a72abea 100644 --- a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseMySQLCatalog.java +++ b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseMySQLCatalog.java @@ -66,9 +66,11 @@ public class OceanbaseMySQLCatalog extends MySQLCatalog { procedure == null ? null : JDBCUtils.escapeWildCards(session, procedure.getName()), "%") .getSourceStatement(); } else { - String queryFunctionString = "select * from mysql.proc where db='%s' and type='FUNCTION' and name='%s'"; - return session - .prepareStatement(String.format(queryFunctionString, owner.getName(), procedure.getName())); + String queryFunctionString = "select * from mysql.proc where db=? and type='FUNCTION' and name=?"; + JDBCPreparedStatement statement = session.prepareStatement(String.format(queryFunctionString, owner.getName(), procedure.getName())); + statement.setString(1, owner.getName()); + statement.setString(2, procedure.getName()); + return statement; } } @@ -143,11 +145,7 @@ public class OceanbaseMySQLCatalog extends MySQLCatalog { if (!getDataSource().supportsInformationSchema()) { return Collections.emptyList(); } - List objects = new ArrayList<>(); - for (OceanbaseMySQLProcedure oceanbaseMySQLProcedure : oceanbaseProceduresCache.getAllObjects(monitor, this)) { - objects.add(oceanbaseMySQLProcedure); - } - return objects; + return new ArrayList<>(oceanbaseProceduresCache.getAllObjects(monitor, this)); } @Override diff --git a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseMySQLDataSource.java b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseMySQLDataSource.java index 05fe3c99da..c35a651227 100644 --- a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseMySQLDataSource.java +++ b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseMySQLDataSource.java @@ -94,7 +94,6 @@ public class OceanbaseMySQLDataSource extends MySQLDataSource { if (name.equalsIgnoreCase("SHOW DB")) { return DBUtils.findObject(getPrivileges(monitor), "Show databases", true); } - ; return DBUtils.findObject(getPrivileges(monitor), name, true); } @@ -155,11 +154,7 @@ public class OceanbaseMySQLDataSource extends MySQLDataSource { @Override public Collection getCatalogs() { - List catalogs = new ArrayList<>(); - for (OceanbaseMySQLCatalog oceanbaseMySQLCatalog : oceanbaseCatalogCache.getCachedObjects()) { - catalogs.add(oceanbaseMySQLCatalog); - } - return catalogs; + return new ArrayList<>(oceanbaseCatalogCache.getCachedObjects()); } static class OceanbaseCatalogCache extends JDBCObjectCache { diff --git a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseMySQLDatabaseManager.java b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseMySQLDatabaseManager.java index d1dba649bc..3ba2dd055a 100644 --- a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseMySQLDatabaseManager.java +++ b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseMySQLDatabaseManager.java @@ -6,7 +6,6 @@ import java.util.Map; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.edit.DBECommandContext; -import org.jkiss.dbeaver.model.edit.DBEObjectRenamer; import org.jkiss.dbeaver.model.edit.DBEPersistAction; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.impl.edit.SQLDatabasePersistAction; @@ -15,8 +14,7 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.model.struct.cache.DBSObjectCache; -public class OceanbaseMySQLDatabaseManager extends SQLObjectEditor - implements DBEObjectRenamer { +public class OceanbaseMySQLDatabaseManager extends SQLObjectEditor{ @Override public long getMakerOptions(DBPDataSource dataSource) { @@ -28,17 +26,9 @@ public class OceanbaseMySQLDatabaseManager extends SQLObjectEditor options, String newName) throws DBException { - throw new DBException( - "Direct database rename is not yet implemented in MySQL. You should use export/import functions for that."); - } - @Override protected OceanbaseMySQLCatalog createDatabaseObject(DBRProgressMonitor monitor, DBECommandContext context, Object container, Object copyFrom, Map options) throws DBException { - System.out.println("11111"); return new OceanbaseMySQLCatalog((OceanbaseMySQLDataSource) container, null); } diff --git a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseTable.java b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseTable.java index 25047ace0c..5985e4fa3d 100644 --- a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseTable.java +++ b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/mysql/model/OceanbaseTable.java @@ -24,6 +24,11 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.struct.DBSEntity; public class OceanbaseTable extends MySQLTable implements DBPObjectStatistics { + + public OceanbaseTable(MySQLCatalog catalog) + { + super(catalog); + } public OceanbaseTable(DBRProgressMonitor monitor, MySQLCatalog catalog, DBSEntity source) throws DBException { super(monitor, catalog, source); diff --git a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/ui/views/OceanbaseConnectionPage.java b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/ui/views/OceanbaseConnectionPage.java index 066a950a8c..f1f5daa46d 100644 --- a/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/ui/views/OceanbaseConnectionPage.java +++ b/plugins/org.jkiss.dbeaver.ext.oceanbase/src/org/jkiss/dbeaver/ext/oceanbase/ui/views/OceanbaseConnectionPage.java @@ -48,8 +48,8 @@ public class OceanbaseConnectionPage extends ConnectionPageWithAuth implements I private Text urlText; private Text databaseText; private Text tenantText; - - private static ImageDescriptor logoImage = Activator.getImageDescriptor("icons/wmi_icon_big.png"); //$NON-NLS-1$ + + private static ImageDescriptor logoImage = Activator.getImageDescriptor("icons/ob_logo.png"); public OceanbaseConnectionPage() { } @@ -157,34 +157,13 @@ public class OceanbaseConnectionPage extends ConnectionPageWithAuth implements I setMessage(e.getMessage()); } } - if (connectionInfo.getUrl() != null) { - urlText.setText(CommonUtils.notEmpty(connectionInfo.getUrl())); - } else { - urlText.setText(""); - } - } - if (connectionInfo.getHostName() == null) { - connectionInfo.setHostName(DEFAULT_HOST); - } - if (hostText != null) { - hostText.setText(CommonUtils.notEmpty(connectionInfo.getHostName())); - } - if (portText != null) { - portText.setText(CommonUtils.notEmpty(connectionInfo.getHostPort())); - } - if (databaseText != null) { - databaseText.setText(CommonUtils.notEmpty(connectionInfo.getDatabaseName())); - } - if (tenantText != null) { - tenantText.setText(CommonUtils.notEmpty(connectionInfo.getServerName())); + urlText.setText(CommonUtils.notEmpty(connectionInfo.getUrl())); } + hostText.setText(CommonUtils.notEmpty(connectionInfo.getHostName())); + portText.setText(CommonUtils.notEmpty(connectionInfo.getHostPort())); + databaseText.setText(CommonUtils.notEmpty(connectionInfo.getDatabaseName())); + tenantText.setText(CommonUtils.notEmpty(connectionInfo.getServerName())); - UIUtils.asyncExec(() -> { - // Set first control - if (CommonUtils.isEmpty(site.getDriver().getSampleURL())) { - urlText.setFocus(); - } - }); super.loadSettings(); } diff --git a/product/debug/DBeaver.product.launch b/product/debug/DBeaver.product.launch index fc4b361fad..d8bedc7ad5 100644 --- a/product/debug/DBeaver.product.launch +++ b/product/debug/DBeaver.product.launch @@ -264,6 +264,7 @@ + -- GitLab