28 #include "../../../../core/translator/Translator.h" 29 #include "../../../../core/uri/URI.h" 30 #include "../../../../core/uri/Utils.h" 31 #include "../../../../dataaccess/datasource/DataSource.h" 32 #include "../../../../dataaccess/datasource/DataSourceFactory.h" 33 #include "../../../../dataaccess/datasource/DataSourceInfo.h" 34 #include "../../../../dataaccess/datasource/DataSourceManager.h" 35 #include "../../../widgets/Exception.h" 36 #include "../../../widgets/utils/ScopedCursor.h" 37 #include "ui_PostGISCreatorDialogForm.h" 40 #include <boost/algorithm/string/case_conv.hpp> 41 #include <boost/lexical_cast.hpp> 42 #include <boost/uuid/random_generator.hpp> 43 #include <boost/uuid/uuid_io.hpp> 46 #include <QMessageBox> 50 m_ui(new
Ui::PostGISCreatorDialogForm)
56 m_ui->m_advancedOptionsGroupBox->hide();
67 m_ui->m_portLineEdit->setValidator(
new QIntValidator(0, 99999,
this));
69 m_ui->m_helpPushButton->setNameSpace(
"dpi.inpe.br.plugins");
70 m_ui->m_helpPushButton->setPageReference(
"plugins/pgis/pgis_creator.html");
77 QApplication::setOverrideCursor(Qt::WaitCursor);
84 QApplication::restoreOverrideCursor();
85 throw te::qt::widgets::Exception(
TE_TR(
"Sorry! No data access driver loaded for PostgreSQL data sources!"));
100 std::string strURI =
"pgsql://";
101 strURI += aux.
user() +
":";
103 strURI += aux.
host() +
":";
104 strURI += aux.
port() +
"/";
105 strURI += kvp[
"PG_NEWDB_NAME"] +
"?";
107 strURI +=
"PG_CLIENT_ENCODING=";
118 QApplication::restoreOverrideCursor();
119 throw te::qt::widgets::Exception(
TE_TR(
"Could not open POSTGIS data source due to an unknown error!"));
122 QString title =
m_ui->m_hostNameLineEdit->text().trimmed() + QString::fromUtf8(
"@") +
m_ui->m_newDatabaseNameLineEdit->text().trimmed() + QString::fromUtf8(
"@") +
m_ui->m_userNameLineEdit->text().trimmed();
131 boost::uuids::basic_random_generator<boost::mt19937> gen;
132 boost::uuids::uuid u = gen();
133 std::string dsId = boost::uuids::to_string(u);
150 catch(
const std::exception& e)
152 QApplication::restoreOverrideCursor();
153 QMessageBox::warning(
this,
154 tr(
"TerraLib Qt Components"),
160 QApplication::restoreOverrideCursor();
161 QMessageBox::warning(
this,
162 tr(
"TerraLib Qt Components"),
163 tr(
"Unknown error while opening PostgreSQL database!"));
167 QApplication::restoreOverrideCursor();
178 m_ui->m_advancedOptionsGroupBox->setVisible(t);
185 std::string strURI =
"pgsql://";
188 qstr =
m_ui->m_userNameLineEdit->text().trimmed();
189 strURI += qstr.toUtf8().data();
195 qstr =
m_ui->m_passwordLineEdit->text().trimmed();
196 strURI += qstr.toUtf8().data();
201 qstr =
m_ui->m_hostNameLineEdit->text().trimmed();
202 strURI += qstr.isEmpty() ?
"localhost" : qstr.toUtf8().data();
206 qstr =
m_ui->m_portLineEdit->text().trimmed();
207 strURI += qstr.isEmpty() ?
"5432" : qstr.toUtf8().data();
213 qstr =
m_ui->m_newDatabaseNameLineEdit->text().trimmed();
216 strURI +=
"PG_NEWDB_NAME=";
217 strURI += qstr.toUtf8().data();
222 qstr =
m_ui->m_templateComboBox->currentText().trimmed();
225 strURI +=
"PG_NEWDB_TEMPLATE=";
226 strURI += qstr.toUtf8().data();
231 qstr =
m_ui->m_ownerComboBox->currentText().trimmed();
234 strURI +=
"PG_NEWDB_OWNER=";
235 strURI += qstr.toUtf8().data();
240 qstr =
m_ui->m_tablespaceLineEdit->text().trimmed();
243 strURI +=
"PG_NEWDB_TABLESPACE=";
244 strURI += qstr.toUtf8().data();
249 if(!
m_ui->m_noLimitConnectionsGroupBox->isChecked())
252 strURI +=
"PG_NEWDB_CONN_LIMIT=";
253 qstr =
m_ui->m_connectionsLimitSpinBox->text().trimmed();
257 if(boost::lexical_cast<int>(qstr.toUtf8().data()) >= 1)
258 strURI += qstr.toUtf8().data();
264 strURI +=
"&PG_CONNECT_TIMEOUT=";
268 strURI +=
"&PG_MAX_POOL_SIZE=";
272 strURI +=
"&PG_MIN_POOL_SIZE=";
276 strURI +=
"&PG_NEWDB_ENCODING=";
296 if(
m_ui->m_userNameLineEdit->text() !=
"" &&
m_ui->m_passwordLineEdit->text() !=
"")
302 if (!templates.empty())
304 m_ui->m_templateComboBox->clear();
306 for (std::size_t i = 0; i < templates.size(); i++)
307 m_ui->m_templateComboBox->addItem(templates[i].c_str());
310 m_ui->m_templateComboBox->setCurrentIndex(
m_ui->m_templateComboBox->findText(
"postgis"));
313 m_ui->m_ownerComboBox->clear();
318 std::unique_ptr<te::da::DataSet> dsRoles = auxDs->query(
"select * from pg_roles");
320 while(dsRoles->moveNext())
321 m_ui->m_ownerComboBox->addItem(dsRoles->getString(
"rolname").c_str());
static std::unique_ptr< DataSource > create(const std::string &dsType, const std::string &connInfo)
It creates a new repository for a data source.
std::unique_ptr< Ui::PostGISCreatorDialogForm > m_ui
static std::unique_ptr< DataSource > make(const std::string &driver, const te::core::URI &connInfo)
static bool find(const std::string &dsType)
boost::shared_ptr< DataSource > DataSourcePtr
void onAdvancedCreationOptionsCheckBoxToggled(bool t)
std::string password() const
Retrieving the password information.
static te::dt::Date ds(2010, 01, 01)
const te::da::DataSourceInfoPtr & getDataSource() const
#define TE_TR(message)
It marks a string in order to get translated.
std::string query() const
Retrieving the query.
static std::vector< std::string > getDataSourceNames(const std::string &dsType, const std::string &connInfo)
It returns the data source names available in the driver.
static std::string getEncodingName(EncodingType et)
Retrive a string from a given character encoding type enum.
const std::string getConnectionInfo(bool getPrivateKeys) const
std::string port() const
Retrieving the port.
PostGISCreatorDialog(QWidget *parent=0, Qt::WindowFlags f=0)
std::string host() const
Retrieving the host.
void onClosePushButtonPressed()
void onApplyPushButtonPressed()
A class for representing an Uniform Resource Identifier (URI).
TECOREEXPORT std::map< std::string, std::string > Expand(const std::string &query_str)
Split a query string into its components.
void onLineEditEditingFinished()
A class that represents a data source component.
te::da::DataSourcePtr m_driver
const te::da::DataSourcePtr & getDriver() const
std::string user() const
Retrieving the user information.
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr
te::da::DataSourceInfoPtr m_datasource