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_ADOCreatorDialogForm.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::ADOCreatorDialogForm)
55 m_ui->m_providerComboBox->addItem(
"Microsoft.Jet.OLEDB.4.0");
62 m_ui->m_helpPushButton->setNameSpace(
"dpi.inpe.br.plugins");
63 m_ui->m_helpPushButton->setPageReference(
"plugins/ado/ado_creator.html");
86 throw te::qt::widgets::Exception(
TE_TR(
"Sorry! No data access driver loaded for ADO data sources!"));
89 std::map<std::string, std::string> dsInfo;
91 getConnectionInfo(dsInfo);
97 std::map<std::string, std::string> connInfo;
98 connInfo[
"DB_NAME"] = dsInfo[
"DB_NAME"];
99 connInfo[
"PROVIDER"] = dsInfo[
"PROVIDER"];
100 if(!dsInfo[
"PASSWORD"].empty())
101 connInfo[
"PASSWORD"] = dsInfo[
"PASSWORD"];
104 ds->setConnectionInfo(connInfo);
107 m_driver.reset(ds.release());
109 if(m_driver.get() == 0)
110 throw te::qt::widgets::Exception(
TE_TR(
"Could not open ADO data source due to an unknown error!"));
112 QString title = m_ui->m_fileLineEdit->text().trimmed();
114 if(m_datasource.get() == 0)
119 m_datasource->setConnInfo(connInfo);
121 boost::uuids::basic_random_generator<boost::mt19937> gen;
122 boost::uuids::uuid u = gen();
123 std::string dsId = boost::uuids::to_string(u);
125 m_datasource->setId(dsId);
126 m_driver->setId(dsId);
127 m_datasource->setTitle(title.toUtf8().data());
128 m_datasource->setDescription(
"");
129 m_datasource->setAccessDriver(
"ADO");
130 m_datasource->setType(
"ADO");
134 m_driver->setId(m_datasource->getId());
135 m_datasource->setConnInfo(connInfo);
136 m_datasource->setTitle(title.toUtf8().data());
137 m_datasource->setDescription(
"");
140 catch(
const std::exception& e)
142 QMessageBox::warning(
this,
143 tr(
"TerraLib Qt Components"),
149 QMessageBox::warning(
this,
150 tr(
"TerraLib Qt Components"),
151 tr(
"Unknown error while opening ADO database!"));
160 QMessageBox::warning(
this,
161 tr(
"TerraLib Qt Components"),
162 tr(
"Not implemented yet!\nWe will provide it soon!"));
167 QString fileName = QFileDialog::getSaveFileName(
this, tr(
"Save ADO Database"),
te::qt::widgets::GetFilePathFromSettings(
"vector"), tr(
"Database files (*.accdb *.mdb);; All Files (*.*)"), 0, QFileDialog::ReadOnly);
169 if(fileName.isEmpty())
172 m_ui->m_fileLineEdit->setText(fileName);
174 QFileInfo info(fileName);
184 QString qstr = m_ui->m_fileLineEdit->text().trimmed();
187 connInfo[
"DB_NAME"] = qstr.toStdString();
189 qstr = m_ui->m_passwordLineEdit->text().trimmed();
192 connInfo[
"PASSWORD"] = qstr.toStdString();
194 qstr = m_ui->m_providerComboBox->currentText().trimmed();
197 connInfo[
"PROVIDER"] = qstr.toStdString();
199 if(m_ui->m_createOGCTablesCheckBox->isChecked())
200 connInfo[
"CREATE_OGC_METADATA_TABLES"] =
"TRUE";
static bool find(const std::string &dsType)
void getConnectionInfo(std::map< std::string, std::string > &connInfo) const
boost::shared_ptr< DataSource > DataSourcePtr
void searchDatabaseToolButtonPressed()
const te::da::DataSourcePtr & getDriver() const
#define TE_TR(message)
It marks a string in order to get translated.
static std::auto_ptr< DataSource > make(const std::string &dsType)
const te::da::DataSourceInfoPtr & getDataSource() const
ADOCreatorDialog(QWidget *parent=0, Qt::WindowFlags f=0)
void applyPushButtonPressed()
void helpPushButtonPressed()
std::auto_ptr< Ui::ADOCreatorDialogForm > m_ui
static std::auto_ptr< DataSource > create(const std::string &dsType, const std::map< std::string, std::string > &dsInfo)
It creates a new repository for a data source.
A class that represents a data source component.
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr