Skip to content

Commit a426bdb

Browse files
HANA connection dialog: convert GENERIC + host=<host>:443 to CLOUD (dbeaver#35045) (dbeaver#35046)
* HANA connection dialog: convert GENERIC + host=<host>:443 to CLOUD (dbeaver#35045) * extracted HTTPS_PORT_SUFFIX constant --------- Co-authored-by: MashaKorax <[email protected]>
1 parent ea32bd7 commit a426bdb

File tree

2 files changed

+26
-9
lines changed

2 files changed

+26
-9
lines changed

plugins/org.jkiss.dbeaver.ext.hana.ui/src/org/jkiss/dbeaver/ext/hana/ui/views/HANAConnectionPage.java

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.eclipse.swt.layout.GridData;
2525
import org.eclipse.swt.layout.GridLayout;
2626
import org.eclipse.swt.widgets.*;
27+
import org.jkiss.dbeaver.ext.hana.model.HANAConstants;
2728
import org.jkiss.dbeaver.ext.hana.ui.internal.HANAEdition;
2829
import org.jkiss.dbeaver.ext.hana.ui.internal.HANAMessages;
2930
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
@@ -120,7 +121,7 @@ public void createControl(Composite composite) {
120121
editionCombo.addSelectionListener(new SelectionAdapter() {
121122
@Override public void widgetSelected(SelectionEvent e) { editionUpdated(); site.updateButtons(); }
122123
});
123-
hostText.addModifyListener(e -> site.updateButtons());
124+
hostText.addModifyListener(e -> { hostUpdated(); site.updateButtons(); });
124125
portText.addModifyListener(e -> site.updateButtons());
125126
instanceText.addModifyListener(e -> { instanceUpdated(); site.updateButtons(); });
126127
databaseText.addModifyListener(e -> site.updateButtons());
@@ -182,7 +183,7 @@ public void loadSettings() {
182183
super.loadSettings();
183184
DBPConnectionConfiguration connectionInfo = site.getActiveDataSource().getConnectionConfiguration();
184185
edition = HANAEdition.fromName(connectionInfo.getProviderProperty(PROV_PROP_EDITION));
185-
portValue = CommonUtils.toString(connectionInfo.getHostPort(), site.getDriver().getDefaultPort());
186+
portValue = CommonUtils.toString(connectionInfo.getHostPort()/*, site.getDriver().getDefaultPort()*/);
186187
instanceValue = CommonUtils.notEmpty(connectionInfo.getProviderProperty(PROV_PROP_INSTANCE_NUMBER));
187188
databaseValue = CommonUtils.notEmpty(getProperty(connectionInfo, PROP_DATABASE_NAME));
188189
if (created) {
@@ -290,21 +291,34 @@ private void editionUpdated() {
290291
}
291292
UIUtils.fixReadonlyTextBackground(databaseText);
292293

293-
toggleControlVisibility(instanceLabel);
294-
toggleControlVisibility(instanceText);
295-
toggleControlVisibility(databaseLabel);
296-
toggleControlVisibility(databaseText);
294+
boolean visible = edition != HANAEdition.GENERIC && edition != HANAEdition.CLOUD;
295+
toggleControlVisibility(instanceLabel, visible);
296+
toggleControlVisibility(instanceText, visible);
297+
toggleControlVisibility(databaseLabel, visible);
298+
toggleControlVisibility(databaseText, visible);
297299
((Composite)getControl()).layout(true, true);
298300
}
299301

300-
private void toggleControlVisibility(Control control) {
301-
control.setVisible(edition != HANAEdition.GENERIC);
302+
private void toggleControlVisibility(Control control, boolean visible) {
303+
control.setVisible(visible);
302304
Object layoutData = control.getLayoutData();
303305
if (layoutData instanceof GridData) {
304-
((GridData) layoutData).exclude = (edition == HANAEdition.GENERIC);
306+
((GridData) layoutData).exclude = !visible;
305307
}
306308
}
307309

310+
private void hostUpdated() {
311+
if (CommonUtils.isEmpty(hostText.getText())) {
312+
return;
313+
}
314+
String host = hostText.getText().trim();
315+
if (edition == HANAEdition.GENERIC && CommonUtils.isEmpty(portText.getText()) && host.endsWith(HANAConstants.HTTPS_PORT_SUFFIX)) {
316+
hostText.setText(host.substring(0, host.length() - HANAConstants.HTTPS_PORT_SUFFIX.length()));
317+
editionCombo.select(editionCombo.indexOf(HANAEdition.CLOUD.getTitle()));
318+
editionUpdated();
319+
}
320+
}
321+
308322
private void instanceUpdated() {
309323
if (CommonUtils.isEmpty(instanceText.getText())) {
310324
return;

plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818

1919
public class HANAConstants {
2020

21+
// HANA cloud connections use regular HTTPS port
22+
public static final String HTTPS_PORT_SUFFIX = ":443";
23+
2124
// boolean like columns in SYS schema are stored as VARCHAR(5) with values TRUE, FALSE
2225
public static final String SYS_BOOLEAN_TRUE = "TRUE";
2326
public static final String SYS_BOOLEAN_FALSE = "FALSE";

0 commit comments

Comments
 (0)