Skip to content

Commit 3407f6c

Browse files
committed
add support for connections via service
1 parent 4a42435 commit 3407f6c

File tree

6 files changed

+345
-289
lines changed

6 files changed

+345
-289
lines changed

libs/libconnector/src/connection.cpp

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ bool Connection::ignore_db_version {false};
3131

3232
const QString Connection::ParamAlias {"alias"};
3333
const QString Connection::ParamApplicationName {"application_name"};
34+
const QString Connection::ParamService {"service"};
3435
const QString Connection::ParamServerFqdn {"host"};
3536
const QString Connection::ParamServerIp {"hostaddr"};
3637
const QString Connection::ParamPort {"port"};
@@ -158,11 +159,6 @@ void Connection::generateConnectionString()
158159
connection_str += value;
159160
}
160161
}
161-
162-
if(!connection_str.contains(ParamDbName) ||
163-
(!connection_str.contains(ParamServerFqdn) &&
164-
!connection_str.contains(ParamServerIp)))
165-
connection_str.clear();
166162
}
167163

168164
void Connection::noticeProcessor(void *, const char *message)
@@ -186,8 +182,10 @@ void Connection::validateConnectionStatus()
186182

187183
if(PQstatus(connection)==CONNECTION_BAD)
188184
throw Exception(Exception::getErrorMessage(ErrorCode::ConnectionBroken)
189-
.arg(connection_params[ParamServerFqdn].isEmpty() ? connection_params[ParamServerIp] : connection_params[ParamServerFqdn])
190-
.arg(connection_params[ParamPort]),
185+
.arg(connection_params[ParamService].isEmpty()
186+
? QString(QT_TR_NOOP("`%1` at port `%2`")).arg(connection_params[ParamServerFqdn].isEmpty() ? connection_params[ParamServerIp] : connection_params[ParamServerFqdn], connection_params[ParamPort])
187+
: QString(QT_TR_NOOP("server %1")).arg(connection_params[ParamService])
188+
),
191189
ErrorCode::ConnectionBroken, __PRETTY_FUNCTION__, __FILE__, __LINE__);
192190
}
193191

@@ -349,13 +347,18 @@ QString Connection::getConnectionId(bool host_port_only, bool incl_db_name, bool
349347
if(!isConfigured())
350348
return "";
351349

352-
if(!connection_params[ParamServerFqdn].isEmpty())
353-
addr=connection_params[ParamServerFqdn];
350+
if(!connection_params[ParamService].isEmpty())
351+
addr = connection_params[ParamService];
354352
else
355-
addr=connection_params[ParamServerIp];
353+
{
354+
if(!connection_params[ParamServerFqdn].isEmpty())
355+
addr=connection_params[ParamServerFqdn];
356+
else
357+
addr=connection_params[ParamServerIp];
356358

357-
if(!connection_params[ParamPort].isEmpty())
358-
port = QString(":%1").arg(connection_params[ParamPort]);
359+
if(!connection_params[ParamPort].isEmpty())
360+
port = QString(":%1").arg(connection_params[ParamPort]);
361+
}
359362

360363
if(incl_db_name)
361364
db_name = QString("%1@").arg(connection_params[ParamDbName]);

libs/libconnector/src/connection.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ class __libconnector Connection {
101101
//! \brief Constants used to reference the connections parameters
102102
static const QString ParamAlias,
103103
ParamApplicationName,
104+
ParamService,
104105
ParamServerFqdn,
105106
ParamServerIp,
106107
ParamPort,

libs/libgui/src/settings/connectionsconfigwidget.cpp

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ ConnectionsConfigWidget::ConnectionsConfigWidget(QWidget * parent) : BaseConfigW
4747
connect(add_tb, &QPushButton::clicked, this, __slot(this, ConnectionsConfigWidget::handleConnection));
4848

4949
connect(alias_edt, &QLineEdit::textChanged, this, &ConnectionsConfigWidget::enableConnectionTest);
50+
connect(service_edt, &QLineEdit::textChanged, this, &ConnectionsConfigWidget::enableConnectionTest);
5051
connect(host_edt, &QLineEdit::textChanged, this, &ConnectionsConfigWidget::enableConnectionTest);
5152
connect(user_edt, &QLineEdit::textChanged, this, &ConnectionsConfigWidget::enableConnectionTest);
5253
connect(passwd_edt, &QLineEdit::textChanged, this, &ConnectionsConfigWidget::enableConnectionTest);
@@ -67,6 +68,7 @@ void ConnectionsConfigWidget::hideEvent(QHideEvent *event)
6768
{
6869
newConnection();
6970
one_time_conn_edit = false;
71+
service_edt->setEnabled(true);
7072
host_edt->setEnabled(true);
7173
port_sbp->setEnabled(true);
7274
conn_btns_wgt->setVisible(true);
@@ -160,14 +162,16 @@ void ConnectionsConfigWidget::loadConfiguration()
160162
}
161163
}
162164

163-
void ConnectionsConfigWidget::setOneTimeEditMode(bool one_time_edit, const QString &conn_alias, const QString &dbname, const QString &host, int port, const QString &username, const QString &password)
165+
void ConnectionsConfigWidget::setOneTimeEditMode(bool one_time_edit, const QString &conn_alias, const QString &service, const QString &host, int port, const QString &dbname, const QString &username, const QString &password)
164166
{
165167
one_time_conn_edit = one_time_edit;
166168
conn_btns_wgt->setVisible(!one_time_edit);
167169
add_tb->setVisible(!one_time_edit);
170+
service_edt->setDisabled(one_time_edit && !service.isEmpty());
168171
host_edt->setDisabled(one_time_edit && !host.isEmpty());
169172
port_sbp->setDisabled(one_time_edit && port > 0);
170173
alias_edt->setText(conn_alias);
174+
service_edt->setText(service);
171175
conn_db_edt->setText(dbname);
172176
host_edt->setText(host);
173177
port_sbp->setValue(port);
@@ -189,10 +193,7 @@ void ConnectionsConfigWidget::enableCertificates()
189193

190194
void ConnectionsConfigWidget::enableConnectionTest()
191195
{
192-
test_tb->setEnabled(!alias_edt->text().isEmpty() &&
193-
!host_edt->text().isEmpty() &&
194-
!user_edt->text().isEmpty() &&
195-
!conn_db_edt->text().isEmpty());
196+
test_tb->setEnabled(!alias_edt->text().isEmpty());
196197
add_tb->setEnabled(test_tb->isEnabled());
197198
update_tb->setEnabled(test_tb->isEnabled());
198199

@@ -211,6 +212,7 @@ void ConnectionsConfigWidget::newConnection()
211212
conn_db_edt->clear();
212213
alias_edt->clear();
213214
user_edt->clear();
215+
service_edt->clear();
214216
host_edt->clear();
215217
port_sbp->setValue(5432);
216218
passwd_edt->clear();
@@ -336,6 +338,8 @@ void ConnectionsConfigWidget::editConnection()
336338
import_chk->setChecked(conn->isDefaultForOperation(Connection::OpImport));
337339
validation_chk->setChecked(conn->isDefaultForOperation(Connection::OpValidation));
338340

341+
service_edt->setText(conn->getConnectionParam(Connection::ParamService));
342+
339343
if(!conn->getConnectionParam(Connection::ParamServerFqdn).isEmpty())
340344
host_edt->setText(conn->getConnectionParam(Connection::ParamServerFqdn));
341345
else
@@ -400,6 +404,7 @@ void ConnectionsConfigWidget::configureConnection(Connection *conn, bool is_upda
400404
}
401405

402406
conn->setConnectionParam(Connection::ParamAlias, alias);
407+
conn->setConnectionParam(Connection::ParamService, service_edt->text());
403408
conn->setConnectionParam(Connection::ParamServerIp, "");
404409
conn->setConnectionParam(Connection::ParamServerFqdn, host_edt->text());
405410
conn->setConnectionParam(Connection::ParamPort, QString("%1").arg(port_sbp->value()));
@@ -630,8 +635,11 @@ void ConnectionsConfigWidget::fillConnectionsComboBox(QComboBox *combo, bool inc
630635
}
631636

632637
bool ConnectionsConfigWidget::openConnectionsConfiguration(bool one_time_edit,
633-
const QString &conn_alias, const QString &dbname, const QString &host,
634-
int port, const QString &username, const QString &password)
638+
const QString &conn_alias,
639+
const QString &service,
640+
const QString &host, int port,
641+
const QString &dbname,
642+
const QString &username, const QString &password)
635643
{
636644
BaseForm parent_form;
637645
ConnectionsConfigWidget conn_cfg_wgt;
@@ -656,7 +664,7 @@ bool ConnectionsConfigWidget::openConnectionsConfiguration(bool one_time_edit,
656664
)
657665
});
658666

659-
conn_cfg_wgt.setOneTimeEditMode(one_time_edit, conn_alias, dbname, host, port, username, password);
667+
conn_cfg_wgt.setOneTimeEditMode(one_time_edit, conn_alias, service, host, port, dbname, username, password);
660668
parent_form.setWindowTitle(tr("Edit database connections"));
661669
parent_form.setWindowFlags(Qt::Dialog | Qt::WindowMinimizeButtonHint | Qt::WindowCloseButtonHint);
662670
parent_form.setMainWidget(&conn_cfg_wgt);

libs/libgui/src/settings/connectionsconfigwidget.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,10 @@ class __libgui ConnectionsConfigWidget: public BaseConfigWidget, public Ui::Conn
6565
* for them. Once the user accepts or rejects the editions the form
6666
* returns to the original operation mode */
6767
void setOneTimeEditMode(bool one_time_edit,
68-
const QString &conn_alias, const QString &dbname,
68+
const QString &conn_alias,
69+
const QString &service,
6970
const QString &host, int port,
71+
const QString &dbname,
7072
const QString &username, const QString &password);
7173

7274
static std::map<QString, attribs_map> getConfigurationParams();
@@ -96,8 +98,10 @@ class __libgui ConnectionsConfigWidget: public BaseConfigWidget, public Ui::Conn
9698
* Returns true when the connection were changed somehow, either by restoring the defaults, adding new connections
9799
* or removing current ones. Default values for connection alias, dbname, host, port and user can be provided. */
98100
static bool openConnectionsConfiguration(bool one_time_edit = false,
99-
const QString &conn_alias = "", const QString &dbname = "",
101+
const QString &conn_alias = "",
102+
const QString &service= "",
100103
const QString &host = "", int port = 5432,
104+
const QString &dbname = "",
101105
const QString &username = "", const QString &password = "");
102106

103107
//! \brief Returns the first connection found which is defined as the default for the specified operation

0 commit comments

Comments
 (0)