27 #include "../../../../common/Translator.h" 
   28 #include "../../../../dataaccess/datasource/DataSource.h" 
   29 #include "../../../../dataaccess/datasource/DataSourceFactory.h" 
   30 #include "../../../../dataaccess/datasource/DataSourceInfo.h" 
   31 #include "../../../../dataaccess/datasource/DataSourceManager.h" 
   32 #include "../../../widgets/Exception.h" 
   34 #include "Ui_MySQLConnectorDialogForm.h" 
   37 #include <boost/algorithm/string/case_conv.hpp> 
   38 #include <boost/lexical_cast.hpp> 
   39 #include <boost/uuid/random_generator.hpp> 
   40 #include <boost/uuid/uuid_io.hpp> 
   43 #include <QtGui/QMessageBox> 
   47     m_ui(new Ui::MySQLConnectorDialogForm)
 
   53   m_ui->m_advancedConnectionOptionsGroupBox->hide();
 
   82   if(m_datasource.get() != 0)
 
   84     setConnectionInfo(m_datasource->getConnInfo());
 
   86     m_ui->m_datasourceTitleLineEdit->setText(QString::fromStdString(m_datasource->getTitle()));
 
   88     m_ui->m_datasourceDescriptionTextEdit->setText(QString::fromStdString(m_datasource->getDescription()));
 
   98       throw te::qt::widgets::Exception(TR_QT_WIDGETS(
"Sorry! No data access driver loaded for MySQL data sources!"));
 
  101     std::map<std::string, std::string> dsInfo;
 
  103     getConnectionInfo(dsInfo);
 
  106     m_driver.reset(te::da::DataSourceFactory::open(
"MYSQL", dsInfo));
 
  108     if(m_driver.get() == 0)
 
  109       throw te::qt::widgets::Exception(TR_QT_WIDGETS(
"Could not open MySQL data source due to an unknown error!"));
 
  111     QString title = m_ui->m_datasourceTitleLineEdit->text().trimmed();
 
  114       title = m_ui->m_hostNameLineEdit->text().trimmed() + QString::fromStdString(
"@") + m_ui->m_schemaNameComboBox->currentText().trimmed() + QString::fromStdString(
"@") + m_ui->m_userNameLineEdit->text().trimmed();
 
  116     if(m_datasource.get() == 0)
 
  121       m_datasource->setConnInfo(dsInfo);
 
  123       boost::uuids::basic_random_generator<boost::mt19937> gen;
 
  124       boost::uuids::uuid u = gen();
 
  125       std::string dsId = boost::uuids::to_string(u);
 
  127       m_datasource->setId(dsId);
 
  128       m_driver->setId(dsId);
 
  129       m_datasource->setTitle(title.toStdString());
 
  130       m_datasource->setDescription(m_ui->m_datasourceDescriptionTextEdit->toPlainText().trimmed().toStdString());
 
  131       m_datasource->setAccessDriver(
"MYSQL");
 
  132       m_datasource->setType(
"MYSQL");
 
  136       m_driver->setId(m_datasource->getId());
 
  137       m_datasource->setConnInfo(dsInfo);
 
  138       m_datasource->setTitle(title.toStdString());
 
  139       m_datasource->setDescription(m_ui->m_datasourceDescriptionTextEdit->toPlainText().trimmed().toStdString());
 
  142   catch(
const std::exception& e)
 
  144     QMessageBox::warning(
this,
 
  145                          tr(
"TerraLib Qt Components"),
 
  151     QMessageBox::warning(
this,
 
  152                          tr(
"TerraLib Qt Components"),
 
  153                          tr(
"Unknown error while opening MySQL database!"));
 
  166       throw te::qt::widgets::Exception(TR_QT_WIDGETS(
"Sorry! No data access driver loaded for MySQL data sources!"));
 
  169     std::map<std::string, std::string> dsInfo;
 
  171     getConnectionInfo(dsInfo);
 
  174     std::auto_ptr<te::da::DataSource> ds(te::da::DataSourceFactory::open(
"MYSQL", dsInfo));
 
  177       throw te::qt::widgets::Exception(TR_QT_WIDGETS(
"Could not open MySQL database!"));
 
  179     QMessageBox::warning(
this,
 
  180                        tr(
"TerraLib Qt Components"),
 
  181                        tr(
"Data source is ok!"));
 
  183   catch(
const std::exception& e)
 
  185     QMessageBox::warning(
this,
 
  186                          tr(
"TerraLib Qt Components"),
 
  191     QMessageBox::warning(
this,
 
  192                          tr(
"TerraLib Qt Components"),
 
  193                          tr(
"Unknown error while testing MySQL data source!"));
 
  199   QMessageBox::warning(
this,
 
  200                        tr(
"TerraLib Qt Components"),
 
  201                        tr(
"Not implemented yet!\nWe will provide it soon!"));
 
  210   QString qstr = m_ui->m_hostNameLineEdit->text().trimmed();
 
  213     connInfo[
"MY_HOST_NAME"] = qstr.toStdString();
 
  216   qstr = m_ui->m_portLineEdit->text().trimmed();
 
  219     connInfo[
"MY_PORT"] = qstr.toStdString();
 
  222   qstr = m_ui->m_userNameLineEdit->text().trimmed();
 
  225     connInfo[
"MY_USER_NAME"] = qstr.toStdString();
 
  228   qstr = m_ui->m_passwordLineEdit->text().trimmed();
 
  231     connInfo[
"MY_PASSWORD"] = qstr.toStdString();
 
  234   qstr = m_ui->m_schemaNameComboBox->currentText().trimmed();
 
  238     connInfo[
"MY_SCHEMA"] = qstr.toStdString();
 
  241   qstr = m_ui->m_charsetComboBox->currentText().trimmed();
 
  244     connInfo[
"MY_OPT_CHARSET_NAME"] = qstr.toStdString();
 
  247   qstr = m_ui->m_spatialTableEngineComboBox->currentText().trimmed();
 
  250     connInfo[
"MY_DEFAULT_ENGINE_FOR_SPATIAL_TABLES"] = qstr.toStdString();
 
  253   qstr = m_ui->m_tablesToHideLineEdit->text().trimmed();
 
  256     connInfo[
"MY_HIDE_TABLES"] = qstr.toStdString();
 
  259   connInfo[
"MY_CREATE_TERRALIB_RASTER_METADATA_TABLES"] = m_ui->m_createRasterMetadataCheckBox->isChecked() ? 
"TRUE" : 
"FALSE";
 
  262   connInfo[
"MY_HIDE_METADATA_TABLES"] = m_ui->m_hideMetadataTablesCheckBox->isChecked() ? 
"TRUE" : 
"FALSE";
 
  265  connInfo[
"MY_HIDE_RASTER_TABLES"] = m_ui->m_hideRasterTablesCheckBox->isChecked() ? 
"TRUE" : 
"FALSE";
 
  268   qstr = m_ui->m_maxPoolSizeSpinBox->text().trimmed();
 
  271     connInfo[
"MY_MAX_POOL_SIZE"] = qstr.toStdString();
 
  274   qstr = m_ui->m_minPoolSizeSpinBox->text().trimmed();
 
  277     connInfo[
"MY_MIN_POOL_SIZE"] = qstr.toStdString();
 
  280   qstr = m_ui->m_maxIdleTimeSpinBox->text().trimmed();
 
  283     connInfo[
"MY_MAX_IDLE_TIME"] = qstr.toStdString();
 
  286   qstr = m_ui->m_connectTimeoutSpinBox->text().trimmed();
 
  289     connInfo[
"MY_OPT_CONNECT_TIMEOUT"] = qstr.toStdString();
 
  292   qstr = m_ui->m_readTimeoutSpinBox->text().trimmed();
 
  295     connInfo[
"MY_OPT_READ_TIMEOUT"] = qstr.toStdString();
 
  298   qstr = m_ui->m_writeTimeoutSpinBox->text().trimmed();
 
  301     connInfo[
"MY_OPT_WRITE_TIMEOUT"] = qstr.toStdString();
 
  304   qstr = m_ui->m_sslKeyLineEdit->text().trimmed();
 
  307     connInfo[
"MY_SSL_KEY"] = qstr.toStdString();
 
  309   qstr = m_ui->m_sslCertLineEdit->text().trimmed();
 
  312     connInfo[
"MY_SSL_CERT"] = qstr.toStdString();
 
  314   qstr = m_ui->m_sslCALineEdit->text().trimmed();
 
  317     connInfo[
"MY_SSL_KEY"] = qstr.toStdString();
 
  319   qstr = m_ui->m_sslCAPathLineEdit->text().trimmed();
 
  322     connInfo[
"MY_SSL_CA"] = qstr.toStdString();
 
  324   qstr = m_ui->m_sslChiperLineEdit->text().trimmed();
 
  327     connInfo[
"MY_SSL_CA_PATH"] = qstr.toStdString();
 
  330   qstr = m_ui->m_socketLineEdit->text().trimmed();
 
  333     connInfo[
"MY_SOCKET"] = qstr.toStdString();
 
  336   qstr = m_ui->m_pipeLineEdit->text().trimmed();
 
  339     connInfo[
"MY_PIPE"] = qstr.toStdString();
 
  342   connInfo[
"MY_CLIENT_COMPRESS"] = m_ui->m_clientCompressCheckBox->isChecked() ? 
"TRUE" : 
"FALSE";
 
  343   connInfo[
"MY_CLIENT_LOCAL_FILES"] = m_ui->m_clientLocalFilesCheckBox->isChecked() ? 
"TRUE" : 
"FALSE";
 
  344   connInfo[
"MY_CLIENT_MULTI_STATEMENTS"] = m_ui->m_clientMultiStatementsCheckBox->isChecked() ? 
"TRUE" : 
"FALSE";
 
  345   connInfo[
"MY_CLIENT_MULTI_RESULTS"] = m_ui->m_clientMultiResultsCheckBox->isChecked() ? 
"TRUE" : 
"FALSE";
 
  346   connInfo[
"MY_OPT_RECONNECT"] = m_ui->m_reconnectCheckBox->isChecked() ? 
"TRUE" : 
"FALSE";
 
  347   connInfo[
"MY_CLIENT_IGNORE_SPACE"] = m_ui->m_ignoreSpaceCheckBox->isChecked() ? 
"TRUE" : 
"FALSE";
 
  348   connInfo[
"MY_OPT_REPORT_DATA_TRUNCATION"] = m_ui->m_reportDataTruncationCheckBox->isChecked() ? 
"TRUE" : 
"FALSE";
 
  349   connInfo[
"MY_CLIENT_NO_SCHEMA"] = m_ui->m_noSchemaCheckBox->isChecked() ? 
"TRUE" : 
"FALSE";
 
  350   connInfo[
"MY_CLIENT_INTERACTIVE"] = m_ui->m_clientInterativeCheckBox->isChecked() ? 
"TRUE" : 
"FALSE";
 
  355   std::map<std::string, std::string>::const_iterator it = connInfo.find(
"MY_HOST_NAME");
 
  356   std::map<std::string, std::string>::const_iterator itend = connInfo.end();
 
  359     m_ui->m_hostNameLineEdit->setText(QString::fromUtf8(it->second.c_str()));
 
  361   it = connInfo.find(
"MY_PORT");
 
  364     m_ui->m_portLineEdit->setText(QString::fromUtf8(it->second.c_str()));
 
  366   it = connInfo.find(
"MY_USER_NAME");
 
  369     m_ui->m_userNameLineEdit->setText(QString::fromUtf8(it->second.c_str()));
 
  371   it = connInfo.find(
"MY_PASSWORD");
 
  374     m_ui->m_passwordLineEdit->setText(QString::fromUtf8(it->second.c_str()));
 
  376   it = connInfo.find(
"MY_SCHEMA");
 
  380     int pos = m_ui->m_schemaNameComboBox->findText(QString::fromUtf8(it->second.c_str()));
 
  383       m_ui->m_schemaNameComboBox->setCurrentIndex(pos);
 
  386       m_ui->m_schemaNameComboBox->addItem(QString::fromUtf8(it->second.c_str()));
 
  387       m_ui->m_schemaNameComboBox->setCurrentIndex(0);
 
  391   it = connInfo.find(
"MY_OPT_CHARSET_NAME");
 
  395     int pos = m_ui->m_charsetComboBox->findText(QString::fromUtf8(it->second.c_str()));
 
  398       m_ui->m_charsetComboBox->setCurrentIndex(pos);
 
  401   it = connInfo.find(
"MY_DEFAULT_ENGINE_FOR_SPATIAL_TABLES");
 
  405     int pos = m_ui->m_spatialTableEngineComboBox->findText(QString::fromUtf8(it->second.c_str()));
 
  408       m_ui->m_spatialTableEngineComboBox->setCurrentIndex(pos);
 
  411   it = connInfo.find(
"MY_HIDE_TABLES");
 
  414     m_ui->m_tablesToHideLineEdit->setText(QString::fromUtf8(it->second.c_str()));
 
  416   it = connInfo.find(
"MY_CREATE_TERRALIB_RASTER_METADATA_TABLES");
 
  418   m_ui->m_createRasterMetadataCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) == 
"TRUE"));
 
  420   it = connInfo.find(
"MY_HIDE_METADATA_TABLES");
 
  422   m_ui->m_hideMetadataTablesCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) == 
"TRUE"));
 
  424   it = connInfo.find(
"MY_HIDE_RASTER_TABLES");
 
  426   m_ui->m_hideRasterTablesCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) == 
"TRUE"));
 
  428   it = connInfo.find(
"MY_MAX_POOL_SIZE");
 
  431     m_ui->m_minPoolSizeSpinBox->setValue(boost::lexical_cast<int>(it->second.c_str()));
 
  433   it = connInfo.find(
"MY_MIN_POOL_SIZE");
 
  436     m_ui->m_minPoolSizeSpinBox->setValue(boost::lexical_cast<int>(it->second.c_str()));
 
  438   it = connInfo.find(
"MY_MAX_IDLE_TIME");
 
  441     m_ui->m_maxIdleTimeSpinBox->setValue(boost::lexical_cast<int>(it->second.c_str()));
 
  443   it = connInfo.find(
"MY_OPT_CONNECT_TIMEOUT");
 
  446     m_ui->m_connectTimeoutSpinBox->setValue(boost::lexical_cast<int>(it->second.c_str()));
 
  448   it = connInfo.find(
"MY_OPT_READ_TIMEOUT");
 
  451     m_ui->m_readTimeoutSpinBox->setValue(boost::lexical_cast<int>(it->second.c_str()));
 
  453   it = connInfo.find(
"MY_OPT_WRITE_TIMEOUT");
 
  456     m_ui->m_writeTimeoutSpinBox->setValue(boost::lexical_cast<int>(it->second.c_str()));
 
  458   it = connInfo.find(
"MY_SSL_KEY");
 
  461     m_ui->m_sslKeyLineEdit->setText(QString::fromUtf8(it->second.c_str()));
 
  463   it = connInfo.find(
"MY_SSL_CERT");
 
  466     m_ui->m_sslCertLineEdit->setText(QString::fromUtf8(it->second.c_str()));
 
  468   it = connInfo.find(
"MY_SSL_CA");
 
  471     m_ui->m_sslCALineEdit->setText(QString::fromUtf8(it->second.c_str()));
 
  473   it = connInfo.find(
"MY_SSL_CA_PATH");
 
  476     m_ui->m_sslCAPathLineEdit->setText(QString::fromUtf8(it->second.c_str()));
 
  478   it = connInfo.find(
"MY_SSL_CIPHER");
 
  481     m_ui->m_sslChiperLineEdit->setText(QString::fromUtf8(it->second.c_str()));
 
  483   it = connInfo.find(
"MY_SOCKET");
 
  486     m_ui->m_socketLineEdit->setText(QString::fromUtf8(it->second.c_str()));
 
  488   it = connInfo.find(
"MY_PIPE");
 
  491     m_ui->m_pipeLineEdit->setText(QString::fromUtf8(it->second.c_str()));
 
  493   it = connInfo.find(
"MY_CLIENT_COMPRESS");
 
  495    m_ui->m_clientCompressCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) == 
"TRUE"));
 
  497   it = connInfo.find(
"MY_CLIENT_LOCAL_FILES");
 
  500     m_ui->m_clientLocalFilesCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) == 
"TRUE"));
 
  502   it = connInfo.find(
"MY_CLIENT_MULTI_STATEMENTS");
 
  505     m_ui->m_clientMultiStatementsCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) == 
"TRUE"));
 
  507   it = connInfo.find(
"MY_CLIENT_MULTI_RESULTS");
 
  509   m_ui->m_clientMultiResultsCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) == 
"TRUE"));
 
  511   it = connInfo.find(
"MY_OPT_RECONNECT");
 
  513   m_ui->m_reconnectCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) == 
"TRUE"));
 
  515   it = connInfo.find(
"MY_CLIENT_IGNORE_SPACE");
 
  517   m_ui->m_ignoreSpaceCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) == 
"TRUE"));
 
  519   it = connInfo.find(
"MY_OPT_REPORT_DATA_TRUNCATION");
 
  521   m_ui->m_reportDataTruncationCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) == 
"TRUE"));
 
  523   it = connInfo.find(
"MY_CLIENT_NO_SCHEMA");
 
  525   m_ui->m_noSchemaCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) == 
"TRUE"));
 
  527   it = connInfo.find(
"MY_CLIENT_INTERACTIVE");
 
  529   m_ui->m_clientInterativeCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) == 
"TRUE"));
 
  534   m_ui->m_advancedConnectionOptionsGroupBox->setVisible(t);
 
  539   if(m_ui->m_userNameLineEdit->text() != 
"" && m_ui->m_passwordLineEdit->text() != 
"")
 
  543       std::map<std::string, std::string> dsInfo;
 
  544       getConnectionInfo(dsInfo);
 
  547       std::vector<std::string> dbNames = te::da::DataSource::getDataSources(
"MYSQL", dsInfo);
 
  549         for(std::size_t i = 0; i < dbNames.size(); i++)
 
  550           m_ui->m_schemaNameComboBox->addItem(dbNames[i].c_str());
 
  553       m_ui->m_charsetComboBox->addItem(
"");
 
  555       if(!encodings.empty())
 
  557         for(std::size_t i = 0; i < encodings.size(); i++)
 
  558           m_ui->m_charsetComboBox->addItem(encodings[i].c_str());
 
  562         idx = m_ui->m_charsetComboBox->findText(
"latin1");
 
  564         idx = m_ui->m_charsetComboBox->findText(
"utf8");
 
  566         m_ui->m_charsetComboBox->setCurrentIndex(idx);
 
static bool find(const std::string &dsType)
 
void passwordLineEditEditingFinished()
 
boost::shared_ptr< DataSource > DataSourcePtr
 
void set(const te::da::DataSourceInfoPtr &ds)
 
void advancedConnectionOptionsCheckBoxToggled(bool t)
 
void openPushButtonPressed()
 
const te::da::DataSourcePtr & getDriver() const 
 
void setConnectionInfo(const std::map< std::string, std::string > &connInfo)
 
void testPushButtonPressed()
 
MySQLConnectorDialog(QWidget *parent=0, Qt::WindowFlags f=0)
 
static std::vector< te::common::CharEncoding > getEncodings(const std::string &dsType, const std::map< std::string, std::string > &info)
It gets the encoding names of the data source. 
 
const te::da::DataSourceInfoPtr & getDataSource() const 
 
A class that represents a data source component. 
 
void getConnectionInfo(std::map< std::string, std::string > &connInfo) const 
 
void helpPushButtonPressed()
 
std::auto_ptr< Ui::MySQLConnectorDialogForm > m_ui
 
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr