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 "Ui_SQLiteConnectorDialogForm.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/QFileDialog>
44 #include <QtGui/QMessageBox>
48 m_ui(new Ui::SQLiteConnectorDialogForm)
78 if(m_datasource.get() != 0)
80 setConnectionInfo(m_datasource->getConnInfo());
82 m_ui->m_datasourceTitleLineEdit->setText(QString::fromStdString(m_datasource->getTitle()));
84 m_ui->m_datasourceDescriptionTextEdit->setText(QString::fromStdString(m_datasource->getDescription()));
93 throw te::qt::widgets::Exception(TR_QT_WIDGETS(
"Sorry! No data access driver loaded for SQLite data sources!"));
95 std::map<std::string, std::string> dsInfo;
97 getConnectionInfo(dsInfo);
101 m_driver->setConnectionInfo(dsInfo);
104 if(m_driver.get() == 0)
105 throw te::qt::widgets::Exception(TR_QT_WIDGETS(
"Could not open SQLite data source due to an unknown error!"));
107 QString title = m_ui->m_datasourceTitleLineEdit->text().trimmed();
110 title = m_ui->m_fileLineEdit->text().trimmed();
112 if(m_datasource.get() == 0)
116 m_datasource->setConnInfo(dsInfo);
118 boost::uuids::basic_random_generator<boost::mt19937> gen;
119 boost::uuids::uuid u = gen();
120 std::string dsId = boost::uuids::to_string(u);
122 m_datasource->setId(dsId);
123 m_driver->setId(dsId);
124 m_datasource->setTitle(title.toUtf8().data());
125 m_datasource->setDescription(m_ui->m_datasourceDescriptionTextEdit->toPlainText().trimmed().toUtf8().data());
126 m_datasource->setAccessDriver(
"SQLITE");
127 m_datasource->setType(
"SQLITE");
131 m_driver->setId(m_datasource->getId());
132 m_datasource->setConnInfo(dsInfo);
133 m_datasource->setTitle(title.toUtf8().data());
134 m_datasource->setDescription(m_ui->m_datasourceDescriptionTextEdit->toPlainText().trimmed().toUtf8().data());
137 catch(
const std::exception& e)
139 QMessageBox::warning(
this,
140 tr(
"TerraLib Qt Components"),
146 QMessageBox::warning(
this,
147 tr(
"TerraLib Qt Components"),
148 tr(
"Unknown error while opening SQLite database!"));
160 throw te::qt::widgets::Exception(TR_QT_WIDGETS(
"Sorry! No data access driver loaded for SQLite data sources!"));
162 std::map<std::string, std::string> dsInfo;
164 getConnectionInfo(dsInfo);
168 ds->setConnectionInfo(dsInfo);
172 throw te::qt::widgets::Exception(TR_QT_WIDGETS(
"Could not open SQLite database!"));
174 QMessageBox::warning(
this,
175 tr(
"TerraLib Qt Components"),
176 tr(
"Data source is ok!"));
178 catch(
const std::exception& e)
180 QMessageBox::warning(
this,
181 tr(
"TerraLib Qt Components"),
186 QMessageBox::warning(
this,
187 tr(
"TerraLib Qt Components"),
188 tr(
"Unknown error while testing SQLite data source!"));
194 QMessageBox::warning(
this,
195 tr(
"TerraLib Qt Components"),
196 tr(
"Not implemented yet!\nWe will provide it soon!"));
201 QString fileName = QFileDialog::getOpenFileName(
this, tr(
"Open SQLite Database"), QString(
""), tr(
"Database files (*.sqlite *.db);; All Files (*.*)"), 0, QFileDialog::ReadOnly);
203 if(fileName.isEmpty())
206 m_ui->m_fileLineEdit->setText(fileName);
214 QString qstr = m_ui->m_fileLineEdit->text().trimmed();
217 connInfo[
"SQLITE_FILE"] =
":memory:";
219 connInfo[
"SQLITE_FILE"] = qstr.toUtf8().data();
221 connInfo[
"SQLITE_OPEN_READWRITE"] = m_ui->m_rwAccessCheckBox->isChecked() ?
"FALSE" :
"TRUE";
223 connInfo[
"SQLITE_OPEN_CREATE"] = m_ui->m_createdbCheckBox->isChecked() ?
"TRUE" :
"FALSE";
225 connInfo[
"SQLITE_CREATE_INTERMEDIATE_DIR"] = m_ui->m_createdbCheckBox->isChecked() ?
"TRUE" :
"FALSE";
227 connInfo[
"SQLITE_CREATE_SPATIALITE_METADATA_TABLES"] =
"TRUE";
229 connInfo[
"SQLITE_HIDE_SPATIAL_METADATA_TABLES"] =
"TRUE";
234 std::map<std::string, std::string>::const_iterator it = connInfo.find(
"SQLITE_FILE");
235 std::map<std::string, std::string>::const_iterator itend = connInfo.end();
238 m_ui->m_fileLineEdit->setText(QString::fromUtf8(it->second.c_str()));
240 it = connInfo.find(
"SQLITE_OPEN_READWRITE");
242 m_ui->m_rwAccessCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) ==
"TRUE"));
244 it = connInfo.find(
"SQLITE_OPEN_CREATE");
246 m_ui->m_createdbCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) ==
"TRUE"));
248 it = connInfo.find(
"SQLITE_CREATE_INTERMEDIATE_DIR");
250 m_ui->m_allowIntermediateDirCheckBox->setChecked((it != itend) && (boost::to_upper_copy(it->second) ==
"TRUE"));
252 it = connInfo.find(
"SQLITE_CREATE_OGR_METADATA_TABLES");
void openPushButtonPressed()
static bool find(const std::string &dsType)
boost::shared_ptr< DataSource > DataSourcePtr
const te::da::DataSourceInfoPtr & getDataSource() const
void setConnectionInfo(const std::map< std::string, std::string > &connInfo)
void getConnectionInfo(std::map< std::string, std::string > &connInfo) const
const te::da::DataSourcePtr & getDriver() const
void searchDatabaseToolButtonPressed()
SQLiteConnectorDialog(QWidget *parent=0, Qt::WindowFlags f=0)
std::auto_ptr< Ui::SQLiteConnectorDialogForm > m_ui
static std::auto_ptr< DataSource > make(const std::string &dsType)
void testPushButtonPressed()
A class that represents a data source component.
void set(const te::da::DataSourceInfoPtr &ds)
void helpPushButtonPressed()
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr