27 #include "../../../../common/Translator.h" 
   28 #include "../../../../dataaccess/datasource/DataSource.h" 
   29 #include "../../../../dataaccess/datasource/DataSourceFactory.h" 
   30 #include "../../../../dataaccess/datasource/DataSourceManager.h" 
   31 #include "../../../../dataaccess/datasource/DataSourceInfo.h" 
   32 #include "../../../widgets/Exception.h" 
   34 #include "ui_PostGISConnectorDialogForm.h" 
   37 #include <boost/algorithm/string/case_conv.hpp> 
   38 #include <boost/uuid/random_generator.hpp> 
   39 #include <boost/uuid/uuid_io.hpp> 
   40 #include <boost/lexical_cast.hpp> 
   43 #include <QtGui/QMessageBox> 
   47     m_ui(new Ui::PostGISConnectorDialogForm)
 
   53   m_ui->m_advancedConnectionOptionsGroupBox->hide();
 
   62   m_ui->m_portLineEdit->setValidator(
new QIntValidator(0, 9999, 
this));
 
   64   m_ui->m_helpPushButton->setNameSpace(
"dpi.inpe.br.plugins");
 
   65   m_ui->m_helpPushButton->setPageReference(
"plugins/pgis/pgis.html");
 
   86   if(m_datasource.get() != 0)
 
   88     setConnectionInfo(m_datasource->getConnInfo());
 
   90     m_ui->m_datasourceTitleLineEdit->setText(QString::fromStdString(m_datasource->getTitle()));
 
   92     m_ui->m_datasourceDescriptionTextEdit->setText(QString::fromStdString(m_datasource->getDescription()));
 
  102       throw te::qt::widgets::Exception(
TR_QT_WIDGETS(
"Sorry! No data access driver loaded for PostgreSQL + PostGIS data sources!"));
 
  105     std::map<std::string, std::string> dsInfo;
 
  107     getConnectionInfo(dsInfo);
 
  111     ds->setConnectionInfo(dsInfo);
 
  113     m_driver.reset(ds.release());
 
  115     if(m_driver.get() == 0)
 
  116       throw te::qt::widgets::Exception(
TR_QT_WIDGETS(
"Could not open PostgreSQL + PostGIS data source due to an unknown error!"));
 
  118     QString title = m_ui->m_datasourceTitleLineEdit->text().trimmed();
 
  121       title = m_ui->m_hostNameLineEdit->text().trimmed() + QString::fromStdString(
"@") + m_ui->m_databaseComboBox->currentText().trimmed() + QString::fromStdString(
"@") + m_ui->m_userNameLineEdit->text().trimmed();
 
  123     if(m_datasource.get() == 0)
 
  128       m_datasource->setConnInfo(dsInfo);
 
  130       boost::uuids::basic_random_generator<boost::mt19937> gen;
 
  131       boost::uuids::uuid u = gen();
 
  132       std::string dsId = boost::uuids::to_string(u);
 
  134       m_datasource->setId(dsId);
 
  135       m_driver->setId(dsId);
 
  136       m_datasource->setTitle(title.toStdString());
 
  137       m_datasource->setDescription(m_ui->m_datasourceDescriptionTextEdit->toPlainText().trimmed().toStdString());
 
  138       m_datasource->setAccessDriver(
"POSTGIS");
 
  139       m_datasource->setType(
"POSTGIS");
 
  143       m_driver->setId(m_datasource->getId());
 
  144       m_datasource->setConnInfo(dsInfo);
 
  145       m_datasource->setTitle(title.toStdString());
 
  146       m_datasource->setDescription(m_ui->m_datasourceDescriptionTextEdit->toPlainText().trimmed().toStdString());
 
  149   catch(
const std::exception& e)
 
  151     QMessageBox::warning(
this,
 
  152                          tr(
"TerraLib Qt Components"),
 
  158     QMessageBox::warning(
this,
 
  159                          tr(
"TerraLib Qt Components"),
 
  160                          tr(
"Unknown error while opening PostgreSQL database!"));
 
  173       throw te::qt::widgets::Exception(
TR_QT_WIDGETS(
"Sorry! No data access driver loaded for PostgreSQL + PostGIS data sources!"));
 
  176     std::map<std::string, std::string> dsInfo;
 
  178     getConnectionInfo(dsInfo);
 
  184       throw te::qt::widgets::Exception(
TR_QT_WIDGETS(
"Could not open PostgreSQL + PostGIS database!"));
 
  186     ds->setConnectionInfo(dsInfo);
 
  189     QMessageBox::information(
this,
 
  190                              tr(
"TerraLib Qt Components"),
 
  191                              tr(
"Data source is ok!"));
 
  195   catch(
const std::exception& e)
 
  197     QMessageBox::warning(
this,
 
  198                          tr(
"TerraLib Qt Components"),
 
  203     QMessageBox::warning(
this,
 
  204                          tr(
"TerraLib Qt Components"),
 
  205                          tr(
"Unknown error while testing PostgreSQL + PostGIS data source!"));
 
  215   QString qstr = m_ui->m_hostNameLineEdit->text().trimmed();
 
  218     connInfo[
"PG_HOST"] = qstr.toStdString();
 
  221   qstr = m_ui->m_portLineEdit->text().trimmed();
 
  224     connInfo[
"PG_PORT"] = qstr.toStdString();
 
  227   qstr = m_ui->m_databaseComboBox->currentText().trimmed();
 
  230     connInfo[
"PG_DB_NAME"] = qstr.toStdString();
 
  233   qstr = m_ui->m_clientEncodingComboBox->currentText().trimmed();
 
  236     connInfo[
"PG_CLIENT_ENCODING"] = qstr.toStdString();
 
  239   qstr = m_ui->m_userNameLineEdit->text().trimmed();
 
  242     connInfo[
"PG_USER"] = qstr.toStdString();
 
  245   qstr = m_ui->m_passwordLineEdit->text().trimmed();
 
  248     connInfo[
"PG_PASSWORD"] = qstr.toStdString();
 
  251   qstr = m_ui->m_tablesToHideLineEdit->text().trimmed();
 
  254     connInfo[
"PG_HIDE_TABLES"] = qstr.toStdString();
 
  256   connInfo[
"PG_HIDE_SPATIAL_METADATA_TABLES"] = m_ui->m_hideMetadataTablesCheckBox->isChecked() ? 
"TRUE" : 
"FALSE";
 
  258   connInfo[
"PG_HIDE_RASTER_TABLES"] = m_ui->m_hideRasterTablesCheckBox->isChecked() ? 
"TRUE" : 
"FALSE";
 
  261   qstr = m_ui->m_connectTimeoutSpinBox->text().trimmed();
 
  264     connInfo[
"PG_CONNECT_TIMEOUT"] = qstr.toStdString();
 
  267   qstr = m_ui->m_minPoolSizeSpinBox->text().trimmed();
 
  270     connInfo[
"PG_MIN_POOL_SIZE"] = qstr.toStdString();
 
  273   qstr = m_ui->m_maxPoolSizeSpinBox->text().trimmed();
 
  276     connInfo[
"PG_MAX_POOL_SIZE"] = qstr.toStdString();
 
  279   qstr = m_ui->m_optionsLineEdit->text().trimmed();
 
  282     connInfo[
"PG_OPTIONS"] = qstr.toStdString();
 
  287   std::map<std::string, std::string>::const_iterator it = connInfo.find(
"PG_HOST");
 
  288   std::map<std::string, std::string>::const_iterator itend = connInfo.end();
 
  291     m_ui->m_hostNameLineEdit->setText(QString::fromStdString(it->second));
 
  293   it = connInfo.find(
"PG_HOST_ADDR");
 
  296     m_ui->m_hostNameLineEdit->setText(QString::fromStdString(it->second));
 
  298   it = connInfo.find(
"PG_PORT");
 
  301     m_ui->m_portLineEdit->setText(QString::fromStdString(it->second));
 
  303   it = connInfo.find(
"PG_DB_NAME");
 
  307     int pos = m_ui->m_databaseComboBox->findText(QString::fromStdString(it->second));
 
  310       m_ui->m_databaseComboBox->setCurrentIndex(pos);
 
  313       m_ui->m_databaseComboBox->addItem(QString::fromStdString(it->second));
 
  314       m_ui->m_databaseComboBox->setCurrentIndex(0);
 
  318   it = connInfo.find(
"PG_CLIENT_ENCODING");
 
  322     int pos = m_ui->m_clientEncodingComboBox->findText(QString::fromStdString(it->second));
 
  325       m_ui->m_clientEncodingComboBox->setCurrentIndex(pos);
 
  328       m_ui->m_clientEncodingComboBox->addItem(QString::fromStdString(it->second));
 
  329       m_ui->m_clientEncodingComboBox->setCurrentIndex(0);
 
  333   it = connInfo.find(
"PG_USER");
 
  336     m_ui->m_userNameLineEdit->setText(QString::fromStdString(it->second));
 
  338   it = connInfo.find(
"PG_PASSWORD");
 
  341     m_ui->m_passwordLineEdit->setText(QString::fromStdString(it->second));
 
  343   it = connInfo.find(
"PG_CONNECT_TIMEOUT");
 
  346     m_ui->m_connectTimeoutSpinBox->setValue(boost::lexical_cast<int>(it->second.c_str()));
 
  348   it = connInfo.find(
"PG_MIN_POOL_SIZE");
 
  351     m_ui->m_minPoolSizeSpinBox->setValue(boost::lexical_cast<int>(it->second.c_str()));
 
  353   it = connInfo.find(
"PG_MAX_POOL_SIZE");
 
  356     m_ui->m_maxPoolSizeSpinBox->setValue(boost::lexical_cast<int>(it->second.c_str()));
 
  358   it = connInfo.find(
"PG_OPTIONS");
 
  361     m_ui->m_optionsLineEdit->setText(QString::fromStdString(it->second));
 
  363   it = connInfo.find(
"PG_HIDE_SPATIAL_METADATA_TABLES");
 
  365   m_ui->m_hideMetadataTablesCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) == 
"TRUE"));
 
  367   it = connInfo.find(
"PG_HIDE_RASTER_TABLES");
 
  369   m_ui->m_hideRasterTablesCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) == 
"TRUE"));
 
  371   it = connInfo.find(
"PG_HIDE_TABLES");
 
  374     m_ui->m_tablesToHideLineEdit->setText(QString::fromStdString(it->second));
 
  379   m_ui->m_advancedConnectionOptionsGroupBox->setVisible(t);
 
  384   if(m_ui->m_userNameLineEdit->text() != 
"" || m_ui->m_passwordLineEdit->text() != 
"")
 
  387       std::map<std::string, std::string> dsInfo;
 
  388       getConnectionInfo(dsInfo);
 
  394         m_ui->m_databaseComboBox->clear();
 
  395         for(std::size_t i = 0; i < dbNames.size(); i++)
 
  396           m_ui->m_databaseComboBox->addItem(dbNames[i].c_str());
 
  400       m_ui->m_clientEncodingComboBox->addItem(
"");
 
  402       if(!encodings.empty())
 
  404         for(std::size_t i = 0; i < encodings.size(); i++)
 
  405           m_ui->m_clientEncodingComboBox->addItem(encodings[i].c_str());
 
  409         idx = m_ui->m_clientEncodingComboBox->findText(
"WIN1252");
 
  411         idx = m_ui->m_clientEncodingComboBox->findText(
"UTF8");
 
  413         m_ui->m_clientEncodingComboBox->setCurrentIndex(idx);
 
static std::vector< std::string > getDataSourceNames(const std::string &dsType, const std::map< std::string, std::string > &info)
It returns the data source names available in the driver. 
 
void set(const te::da::DataSourceInfoPtr &ds)
 
void getConnectionInfo(std::map< std::string, std::string > &connInfo) const 
 
const te::da::DataSourcePtr & getDriver() const 
 
void openPushButtonPressed()
 
PostGISConnectorDialog(QWidget *parent=0, Qt::WindowFlags f=0)
 
void testPushButtonPressed()
 
A class that represents a data source component. 
 
A dialog window for showing the PostGIS connector widget. 
 
std::auto_ptr< Ui::PostGISConnectorDialogForm > m_ui
 
static std::auto_ptr< DataSource > make(const std::string &dsType)
 
static std::vector< std::string > getEncodings(const std::string &dsType, const std::map< std::string, std::string > &info)
It gets the encoding names of the data source. 
 
static bool find(const std::string &dsType)
 
boost::shared_ptr< DataSource > DataSourcePtr
 
void advancedConnectionOptionsCheckBoxToggled(bool t)
 
~PostGISConnectorDialog()
 
#define TR_QT_WIDGETS(message)
It marks a string in order to get translated. This is a special mark used in the TerraLib Qt Widgets ...
 
void passwordLineEditEditingFinished()
 
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr
 
void setConnectionInfo(const std::map< std::string, std::string > &connInfo)
 
const te::da::DataSourceInfoPtr & getDataSource() const