27 #include "../../common/Logger.h"
28 #include "../../common/progress/ProgressManager.h"
29 #include "../../common/Translator.h"
30 #include "../../common/STLUtils.h"
31 #include "../../dataaccess/dataset/DataSetType.h"
32 #include "../../dataaccess/dataset/DataSetTypeConverter.h"
33 #include "../../dataaccess/dataset/ObjectIdSet.h"
34 #include "../../dataaccess/datasource/DataSourceCapabilities.h"
35 #include "../../dataaccess/datasource/DataSource.h"
36 #include "../../dataaccess/datasource/DataSourceInfo.h"
37 #include "../../dataaccess/datasource/DataSourceInfoManager.h"
38 #include "../../dataaccess/datasource/DataSourceFactory.h"
39 #include "../../dataaccess/datasource/DataSourceManager.h"
40 #include "../../dataaccess/utils/Utils.h"
41 #include "../../datatype/Enums.h"
42 #include "../../datatype/Property.h"
43 #include "../../maptools/AbstractLayer.h"
44 #include "../../memory/DataSet.h"
45 #include "../../qt/af/Utils.h"
46 #include "../../qt/widgets/datasource/selector/DataSourceSelectorDialog.h"
47 #include "../../qt/widgets/layer/utils/DataSet2Layer.h"
48 #include "../../qt/widgets/progress/ProgressViewerDialog.h"
49 #include "../../qt/widgets/property/DataSetAdapterWidget.h"
50 #include "../../qt/widgets/table/DataSetTableView.h"
51 #include "../../qt/widgets/Utils.h"
52 #include "../../statistics/core/Utils.h"
53 #include "../Config.h"
54 #include "../Exception.h"
56 #include "ui_ImportTableDialogForm.h"
60 #include <QFileDialog>
61 #include <QGridLayout>
62 #include <QMessageBox>
65 #include <boost/algorithm/string.hpp>
66 #include <boost/filesystem.hpp>
67 #include <boost/uuid/random_generator.hpp>
68 #include <boost/uuid/uuid_io.hpp>
72 m_ui(new Ui::ImportTableDialogForm)
79 QGridLayout* dataPreviewLayout =
new QGridLayout(
m_ui->m_dataPreviewFrame);
80 dataPreviewLayout->addWidget(
m_tblView.get());
81 dataPreviewLayout->setContentsMargins(0, 0, 0, 0);
84 m_tblView->verticalHeader()->setVisible(
false);
85 m_tblView->setSelectionMode(QAbstractItemView::NoSelection);
114 QString fileName = QFileDialog::getOpenFileName(
this, tr(
"Open Textual File"),
te::qt::widgets::GetFilePathFromSettings(
"tabular"), tr(
"Comma Separated Value (*.csv *.CSV);; dBASE (*.dbf *.DBF)"),
115 0, QFileDialog::ReadOnly);
117 if(fileName.isEmpty())
120 QFileInfo info(fileName);
124 std::string ogrInfo(
"connection_string=" + fileName.toStdString());
125 std::map<std::string, std::string> connInfo;
126 connInfo[
"URI"] = fileName.toStdString();
128 boost::filesystem::path uri(fileName.toStdString());
129 std::string file = uri.stem().string();
132 static boost::uuids::basic_random_generator<boost::mt19937> gen;
133 boost::uuids::uuid u = gen();
136 dsInfo->setConnInfo(connInfo);
137 dsInfo->setId(boost::uuids::to_string(u));
138 dsInfo->setTitle(fileName.toStdString());
139 dsInfo->setDescription(
"");
140 dsInfo->setAccessDriver(
"OGR");
141 dsInfo->setType(
"OGR");
146 m_dataSource->setConnectionInfo(dsInfo->getConnInfo());
148 m_dataSource->setId(boost::uuids::to_string(u));
149 m_dataSource->open();
152 m_dataSet = m_dataSource->getDataSet(file);
153 std::vector<std::string> datasetNames = m_dataSource->getDataSetNames();
155 if(!datasetNames.empty())
156 m_dataType = m_dataSource->getDataSetType(datasetNames[0]);
159 QMessageBox::critical(
this, tr(
"Error"),tr(
"The file could not be read!"));
163 m_ui->m_fileLineEdit->setText(fileName);
169 std::vector<std::size_t> properties;
170 for(std::size_t i = 0; i < m_dataSet->getNumProperties(); ++i)
171 properties.push_back(i);
174 std::auto_ptr<te::mem::DataSet> memFeature((
new te::mem::DataSet(*m_dataSet.get(), properties, 10)));
176 m_tblView->setDataSet(memFeature.release(), m_dataSource->getEncoding());
177 m_tblView->resizeColumnsToContents();
180 catch(
const std::exception& e)
182 QMessageBox::warning(
this, tr(
"Tabular File"), e.what());
188 QMessageBox::information(
this,
"Help",
"Under development");
std::auto_ptr< Ui::ImportTableDialogForm > m_ui
A dialog to import table with address to geocoding operation.
ImportTableDialog(QWidget *parent=0, Qt::WindowFlags f=0)
boost::shared_ptr< DataSource > DataSourcePtr
void onCancelPushButtonClicked()
An converter for DataSetType.
te::da::DataSourcePtr getDataSource()
void onOkPushButtonClicked()
Implementation of a random-access dataset class for the TerraLib In-Memory Data Access driver...
static DataSourceInfoManager & getInstance()
It returns a reference to the singleton instance.
static std::auto_ptr< DataSource > make(const std::string &dsType)
void onHelpPushButtonClicked()
void onInputDataToolButtonTriggered()
std::auto_ptr< te::qt::widgets::DataSetTableView > m_tblView
std::auto_ptr< te::da::DataSet > getDataSet()
A class that represents a data source component.
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr