27 #include "../../../../common/Translator.h"
28 #include "../../../../dataaccess/datasource/DataSource.h"
29 #include "../../../../dataaccess/datasource/DataSourceFactory.h"
30 #include "../../../../dataaccess/datasource/DataSourceManager.h"
31 #include "../../../../dataaccess/datasource/DataSourceInfo.h"
32 #include "../../../af/Utils.h"
33 #include "../../../widgets/Exception.h"
34 #include "../../../widgets/Utils.h"
36 #include "ui_GDALConnectorDialogForm.h"
39 #include <boost/uuid/random_generator.hpp>
40 #include <boost/uuid/uuid_io.hpp>
41 #include <boost/filesystem.hpp>
42 #include <boost/lexical_cast.hpp>
46 #include <QFileDialog>
47 #include <QMessageBox>
51 m_ui(new
Ui::GDALConnectorDialogForm)
61 m_ui->m_helpPushButton->setNameSpace(
"dpi.inpe.br.plugins");
62 m_ui->m_helpPushButton->setPageReference(
"plugins/gdal/gdal.html");
83 if(m_datasource.get() != 0)
85 setConnectionInfo(m_datasource->getConnInfo());
87 m_ui->m_datasourceTitleLineEdit->setText(QString::fromStdString(m_datasource->getTitle()));
89 m_ui->m_datasourceDescriptionTextEdit->setText(QString::fromStdString(m_datasource->getDescription()));
99 throw te::qt::widgets::Exception(
TE_TR(
"Sorry! No data access driver loaded for GDAL data sources!"));
102 std::map<std::string, std::string> dsInfo;
104 getConnectionInfo(dsInfo);
109 ds->setConnectionInfo(dsInfo);
111 m_driver.reset(ds.release());
113 if(m_driver.get() == 0)
114 throw te::qt::widgets::Exception(
TE_TR(
"Could not open dataset via GDAL due to an unknown error!"));
116 QString title = m_ui->m_datasourceTitleLineEdit->text();
119 title = m_ui->m_datasetLineEdit->text();
121 if(m_datasource.get() == 0)
126 m_datasource->setConnInfo(dsInfo);
128 boost::uuids::basic_random_generator<boost::mt19937> gen;
129 boost::uuids::uuid u = gen();
130 std::string dsId = boost::uuids::to_string(u);
132 m_datasource->setId(dsId);
133 m_driver->setId(dsId);
134 m_datasource->setTitle(title.toStdString());
135 m_datasource->setDescription(m_ui->m_datasourceDescriptionTextEdit->toPlainText().toStdString());
136 m_datasource->setAccessDriver(
"GDAL");
137 m_datasource->setType(
"GDAL");
141 m_driver->setId(m_datasource->getId());
142 m_datasource->setConnInfo(dsInfo);
143 m_datasource->setTitle(title.toStdString());
144 m_datasource->setDescription(m_ui->m_datasourceDescriptionTextEdit->toPlainText().toStdString());
147 catch(
const std::exception& e)
149 QMessageBox::warning(
this,
150 tr(
"TerraLib Qt Components"),
156 QMessageBox::warning(
this,
157 tr(
"TerraLib Qt Components"),
158 tr(
"Unknown error while opening dataset via GDAL!"));
171 throw te::qt::widgets::Exception(
TE_TR(
"Sorry! No data access driver loaded for GDAL data sources!"));
174 std::map<std::string, std::string> dsInfo;
176 getConnectionInfo(dsInfo);
181 ds->setConnectionInfo(dsInfo);
185 throw te::qt::widgets::Exception(
TE_TR(
"Could not open dataset via GDAL!"));
187 QMessageBox::warning(
this,
188 tr(
"TerraLib Qt Components"),
189 tr(
"Data source is ok!"));
191 catch(
const std::exception& e)
193 QMessageBox::warning(
this,
194 tr(
"TerraLib Qt Components"),
199 QMessageBox::warning(
this,
200 tr(
"TerraLib Qt Components"),
201 tr(
"Unknown error while testing GDAL data source!"));
207 if(m_ui->m_fileRadioButton->isChecked())
210 tr(
"Image File (*.png *.jpg *.jpeg *.tif *.tiff *.geotif *.geotiff);; Web Map Service - WMS (*.xml *.wms);; Web Coverage Service - WCS (*.xml *.wcs);; All Files (*.*)"), 0, QFileDialog::ReadOnly);
212 if(fileName.isEmpty())
215 QFileInfo info(fileName);
219 m_ui->m_datasetLineEdit->setText(fileName);
221 else if(m_ui->m_dirRadioButton->isChecked())
225 if(dirName.isEmpty())
230 m_ui->m_datasetLineEdit->setText(dirName);
234 QMessageBox::warning(
this,
235 tr(
"TerraLib Qt Components"),
236 tr(
"Sorry, network files are not implemented yet!\nWe will provide it soon!"));
244 QString qstr = m_ui->m_datasetLineEdit->text().trimmed();
247 throw te::qt::widgets::Exception(
TE_TR(
"Please select a dataset first!"));
249 if(boost::filesystem::is_directory(qstr.toUtf8().data()))
250 connInfo[
"SOURCE"] = qstr.toUtf8().data();
252 connInfo[
"URI"] = qstr.toUtf8().data();
257 std::map<std::string, std::string>::const_iterator it = connInfo.find(
"URI");
258 std::map<std::string, std::string>::const_iterator itend = connInfo.end();
262 m_ui->m_datasetLineEdit->setText(QString::fromUtf8(it->second.c_str()));
263 m_ui->m_dirRadioButton->setChecked(
true);
267 it = connInfo.find(
"SOURCE");
271 m_ui->m_datasetLineEdit->setText(QString::fromUtf8(it->second.c_str()));
272 m_ui->m_fileRadioButton->setChecked(
true);
static bool find(const std::string &dsType)
boost::shared_ptr< DataSource > DataSourcePtr
void testPushButtonPressed()
void openPushButtonPressed()
#define TE_TR(message)
It marks a string in order to get translated.
void getConnectionInfo(std::map< std::string, std::string > &connInfo) const
GDALConnectorDialog(QWidget *parent=0, Qt::WindowFlags f=0)
const te::da::DataSourceInfoPtr & getDataSource() const
void set(const te::da::DataSourceInfoPtr &ds)
A dialog window for showing the GDAL connector widget.
static std::auto_ptr< DataSource > make(const std::string &dsType)
const te::da::DataSourcePtr & getDriver() const
void searchDatasetToolButtonPressed()
void setConnectionInfo(const std::map< std::string, std::string > &connInfo)
A class that represents a data source component.
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr
std::auto_ptr< Ui::GDALConnectorDialogForm > m_ui