27 #include "../../../../core/translator/Translator.h" 28 #include "../../../../core/uri/URI.h" 29 #include "../../../../core/uri/Utils.h" 30 #include "../../../../dataaccess/datasource/DataSource.h" 31 #include "../../../../dataaccess/datasource/DataSourceFactory.h" 32 #include "../../../../dataaccess/datasource/DataSourceInfo.h" 33 #include "../../../../dataaccess/datasource/DataSourceManager.h" 34 #include "../../../widgets/Exception.h" 35 #include "../../../widgets/Utils.h" 36 #include "ui_ADOConnectorDialogForm.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 <QFileDialog> 47 #include <QMessageBox> 51 m_ui(new
Ui::ADOConnectorDialogForm)
58 m_ui->m_providerComboBox->addItem(
"Microsoft.Jet.OLEDB.4.0");
60 m_ui->m_providerComboBox->addItem(
"Microsoft.ACE.OLEDB.12.0");
61 m_ui->m_providerComboBox->addItem(
"Microsoft.ACE.OLEDB.15.0");
70 m_ui->m_helpPushButton->setNameSpace(
"dpi.inpe.br.plugins");
71 m_ui->m_helpPushButton->setPageReference(
"plugins/ado/ado.html");
74 m_ui->m_openPushButton->setText(
TE_TR(
"Update"));
99 m_ui->m_datasourceTitleLineEdit->setText(QString::fromUtf8(
m_datasource->getTitle().c_str()));
101 m_ui->m_datasourceDescriptionTextEdit->setText(QString::fromUtf8(
m_datasource->getDescription().c_str()));
111 throw te::qt::widgets::Exception(
TE_TR(
"Sorry! No data access driver loaded for ADO data sources!"));
119 throw te::qt::widgets::Exception(
TE_TR(
"Could not open ADO data source due to an unknown error!"));
121 QString title =
m_ui->m_datasourceTitleLineEdit->text().trimmed();
124 title =
m_ui->m_fileLineEdit->text().trimmed();
133 boost::uuids::basic_random_generator<boost::mt19937> gen;
134 boost::uuids::uuid u = gen();
135 std::string dsId = boost::uuids::to_string(u);
140 m_datasource->setDescription(
m_ui->m_datasourceDescriptionTextEdit->toPlainText().trimmed().toUtf8().data());
149 m_datasource->setDescription(
m_ui->m_datasourceDescriptionTextEdit->toPlainText().trimmed().toUtf8().data());
152 catch(
const std::exception& e)
154 QMessageBox::warning(
this,
155 tr(
"TerraLib Qt Components"),
161 QMessageBox::warning(
this,
162 tr(
"TerraLib Qt Components"),
163 tr(
"Unknown error while opening ADO database!"));
176 throw te::qt::widgets::Exception(
TE_TR(
"Sorry! No data access driver loaded for ADO data sources!"));
183 throw te::qt::widgets::Exception(
TE_TR(
"Could not open ADO database!"));
185 QMessageBox::warning(
this,
186 tr(
"TerraLib Qt Components"),
187 tr(
"Data source is ok!"));
189 catch(
const std::exception& e)
191 QMessageBox::warning(
this,
192 tr(
"TerraLib Qt Components"),
197 QMessageBox::warning(
this,
198 tr(
"TerraLib Qt Components"),
199 tr(
"Unknown error while testing ADO data source!"));
205 QMessageBox::warning(
this,
206 tr(
"TerraLib Qt Components"),
207 tr(
"Not implemented yet!\nWe will provide it soon!"));
212 QString fileName = QFileDialog::getOpenFileName(
this, tr(
"Open ADO Database"),
te::qt::widgets::GetFilePathFromSettings(
"vector"), tr(
"Database files (*.accdb *.mdb);; All Files (*.*)"), 0, QFileDialog::ReadOnly);
214 if(fileName.isEmpty())
217 m_ui->m_fileLineEdit->setText(fileName);
219 QFileInfo info(fileName);
226 std::string strURI =
"file://";
232 qstr =
m_ui->m_passwordLineEdit->text().trimmed();
233 strURI += qstr.isEmpty() ?
"" :
"user:" + std::string(qstr.toUtf8().data()) +
"@";
237 qstr =
m_ui->m_fileLineEdit->text().trimmed();
238 strURI += qstr.isEmpty() ?
"" : qstr.toUtf8().data();
241 qstr =
m_ui->m_providerComboBox->currentText().trimmed();
243 strURI +=
"?PROVIDER=" + std::string(qstr.toUtf8().data());
253 std::string password = uri.
password();
256 m_ui->m_fileLineEdit->setText(dbName.c_str());
258 if(!password.empty())
259 m_ui->m_passwordLineEdit->setText(password.c_str());
std::string path() const
Retrieving the path.
static std::unique_ptr< DataSource > make(const std::string &driver, const te::core::URI &connInfo)
static bool find(const std::string &dsType)
const std::string getConnectionInfo(bool getPrivateKeys) const
boost::shared_ptr< DataSource > DataSourcePtr
void testPushButtonPressed()
te::da::DataSourceInfoPtr m_datasource
void helpPushButtonPressed()
std::string password() const
Retrieving the password information.
static te::dt::Date ds(2010, 01, 01)
const te::da::DataSourcePtr & getDriver() const
#define TE_TR(message)
It marks a string in order to get translated.
void setConnectionInfo(const std::string &connInfo)
ADOConnectorDialog(QWidget *parent=0, Qt::WindowFlags f=0, Operation op=CONNECTION)
void set(const te::da::DataSourceInfoPtr &ds)
std::string host() const
Retrieving the host.
void searchDatabaseToolButtonPressed()
A class for representing an Uniform Resource Identifier (URI).
void openPushButtonPressed()
A class that represents a data source component.
te::da::DataSourcePtr m_driver
TECOREEXPORT std::string URIDecode(const std::string &srcUri)
Decodes an encoded URI. The algorithm implementation is based on http://www.codeguru.com/cpp/cpp/algorithms/strings/article.php/c12759/URI-Encoding-and-Decoding.htm.
std::unique_ptr< Ui::ADOConnectorDialogForm > m_ui
const te::da::DataSourceInfoPtr & getDataSource() const
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr