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"
33 #include "../../../widgets/Utils.h"
34 #include "ui_ADOConnectorDialogForm.h"
38 #include <boost/algorithm/string/case_conv.hpp>
39 #include <boost/lexical_cast.hpp>
40 #include <boost/uuid/random_generator.hpp>
41 #include <boost/uuid/uuid_io.hpp>
44 #include <QFileDialog>
45 #include <QMessageBox>
49 m_ui(new Ui::ADOConnectorDialogForm)
55 m_ui->m_providerComboBox->addItem(
"Microsoft.Jet.OLEDB.4.0");
63 m_ui->m_helpPushButton->setNameSpace(
"dpi.inpe.br.plugins");
64 m_ui->m_helpPushButton->setPageReference(
"plugins/ado/ado.html");
67 m_ui->m_openPushButton->setText(
TE_TR(
"Update"));
88 if(m_datasource.get() != 0)
90 setConnectionInfo(m_datasource->getConnInfo());
92 m_ui->m_datasourceTitleLineEdit->setText(QString::fromStdString(m_datasource->getTitle()));
94 m_ui->m_datasourceDescriptionTextEdit->setText(QString::fromStdString(m_datasource->getDescription()));
104 throw te::qt::widgets::Exception(
TE_TR(
"Sorry! No data access driver loaded for ADO data sources!"));
107 std::map<std::string, std::string> dsInfo;
109 getConnectionInfo(dsInfo);
114 ds->setConnectionInfo(dsInfo);
116 m_driver.reset(ds.release());
118 if(m_driver.get() == 0)
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();
126 if(m_datasource.get() == 0)
131 m_datasource->setConnInfo(dsInfo);
133 boost::uuids::basic_random_generator<boost::mt19937> gen;
134 boost::uuids::uuid u = gen();
135 std::string dsId = boost::uuids::to_string(u);
137 m_datasource->setId(dsId);
138 m_driver->setId(dsId);
139 m_datasource->setTitle(title.toUtf8().data());
140 m_datasource->setDescription(m_ui->m_datasourceDescriptionTextEdit->toPlainText().trimmed().toUtf8().data());
141 m_datasource->setAccessDriver(
"ADO");
142 m_datasource->setType(
"ADO");
146 m_driver->setId(m_datasource->getId());
147 m_datasource->setConnInfo(dsInfo);
148 m_datasource->setTitle(title.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!"));
179 std::map<std::string, std::string> dsInfo;
181 getConnectionInfo(dsInfo);
186 ds->setConnectionInfo(dsInfo);
190 throw te::qt::widgets::Exception(
TE_TR(
"Could not open ADO database!"));
192 QMessageBox::warning(
this,
193 tr(
"TerraLib Qt Components"),
194 tr(
"Data source is ok!"));
196 catch(
const std::exception& e)
198 QMessageBox::warning(
this,
199 tr(
"TerraLib Qt Components"),
204 QMessageBox::warning(
this,
205 tr(
"TerraLib Qt Components"),
206 tr(
"Unknown error while testing ADO data source!"));
212 QMessageBox::warning(
this,
213 tr(
"TerraLib Qt Components"),
214 tr(
"Not implemented yet!\nWe will provide it soon!"));
219 QString fileName = QFileDialog::getOpenFileName(
this, tr(
"Open ADO Database"),
te::qt::widgets::GetFilePathFromSettings(
"vector"), tr(
"Database files (*.accdb *.mdb);; All Files (*.*)"), 0, QFileDialog::ReadOnly);
221 if(fileName.isEmpty())
224 m_ui->m_fileLineEdit->setText(fileName);
226 QFileInfo info(fileName);
236 QString qstr = m_ui->m_fileLineEdit->text().trimmed();
239 connInfo[
"DB_NAME"] = qstr.toStdString();
241 qstr = m_ui->m_passwordLineEdit->text().trimmed();
244 connInfo[
"PASSWORD"] = qstr.toStdString();
246 qstr = m_ui->m_providerComboBox->currentText().trimmed();
249 connInfo[
"PROVIDER"] = qstr.toStdString();
254 std::map<std::string, std::string>::const_iterator it = connInfo.find(
"DB_NAME");
255 std::map<std::string, std::string>::const_iterator itend = connInfo.end();
258 m_ui->m_fileLineEdit->setText(it->second.c_str());
260 it = connInfo.find(
"PASSWORD");
263 m_ui->m_passwordLineEdit->setText(it->second.c_str());
static bool find(const std::string &dsType)
boost::shared_ptr< DataSource > DataSourcePtr
void testPushButtonPressed()
void helpPushButtonPressed()
const te::da::DataSourcePtr & getDriver() const
#define TE_TR(message)
It marks a string in order to get translated.
ADOConnectorDialog(QWidget *parent=0, Qt::WindowFlags f=0, Operation op=CONNECTION)
std::auto_ptr< Ui::ADOConnectorDialogForm > m_ui
static std::auto_ptr< DataSource > make(const std::string &dsType)
void set(const te::da::DataSourceInfoPtr &ds)
void searchDatabaseToolButtonPressed()
void getConnectionInfo(std::map< std::string, std::string > &connInfo) const
void openPushButtonPressed()
A class that represents a data source component.
void setConnectionInfo(const std::map< std::string, std::string > &connInfo)
const te::da::DataSourceInfoPtr & getDataSource() const
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr