27 #include "../../../dataaccess/dataset/DataSetAdapter.h" 28 #include "../../../dataaccess/dataset/DataSetType.h" 29 #include "../../../dataaccess/dataset/DataSetTypeConverter.h" 30 #include "../../../dataaccess/dataset/Index.h" 31 #include "../../../dataaccess/dataset/PrimaryKey.h" 32 #include "../../../dataaccess/dataset/UniqueKey.h" 33 #include "../../../dataaccess/datasource/DataSourceTransactor.h" 34 #include "../../../dataaccess/datasource/DataSourceManager.h" 35 #include "../../../dataaccess/utils/Utils.h" 36 #include "../../../geometry/GeometryProperty.h" 37 #include "../../../qt/widgets/utils/ScopedCursor.h" 38 #include "../../../qt/widgets/srs/SRSManagerDialog.h" 39 #include "../../../qt/widgets/table/DataSetTableView.h" 40 #include "../property/ConstraintsIndexesListWidget.h" 41 #include "../property/DataSetAdapterWidget.h" 43 #include "ui_DataSetOptionsWizardPageForm.h" 49 #include <boost/algorithm/string/replace.hpp> 50 #include <boost/lexical_cast.hpp> 54 #include <QMessageBox> 58 m_ui(new
Ui::DataSetOptionsWizardPageForm)
65 QGridLayout* constraintLayout =
new QGridLayout(
m_ui->m_constraintWidget);
67 constraintLayout->setContentsMargins(0,0,0,0);
70 QGridLayout* dataSetLayout =
new QGridLayout(
m_ui->m_dataSetWidget);
72 dataSetLayout->setContentsMargins(0,0,0,0);
74 m_ui->m_sridInputPushButton->setIcon(QIcon::fromTheme(
"srs"));
75 m_ui->m_sridOutputPushButton->setIcon(QIcon::fromTheme(
"srs"));
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);
92 connect(
m_ui->m_applyPushButton, SIGNAL(clicked()),
this, SLOT(
applyChanges()));
96 connect(
m_ui->m_selectedDatasetListWidget, SIGNAL(itemPressed(QListWidgetItem*)),
this, SLOT(
datasetPressed(QListWidgetItem*)));
111 m_ui->m_selectedDatasetListWidget->clear();
123 for(std::list<te::da::DataSetTypePtr>::const_iterator it = datasets.begin(); it != datasets.end(); ++it)
125 if(it->get() ==
nullptr)
128 if((*it)->size() == 0)
137 std::size_t idx = name.find(
".");
138 if (idx != std::string::npos)
140 name = name.substr(idx + 1, name.size() - 1);
152 m_datasets.insert(std::map<te::da::DataSetTypePtr, te::da::DataSetTypeConverter*>::value_type((*it), converter));
155 for(std::list<te::da::DataSetTypePtr>::const_iterator it = datasets.begin(); it != datasets.end(); ++it)
157 QString title = QString::fromUtf8((*it)->getTitle().c_str());
159 QString name = QString::fromUtf8((*it)->getName().c_str());
164 QListWidgetItem* item =
new QListWidgetItem(title);
166 m_ui->m_selectedDatasetListWidget->addItem(item);
168 if(datasets.size() == 1)
170 m_ui->m_selectedDatasetListWidget->setCurrentItem(item);
171 item->setSelected(
true);
176 if(datasets.size() != 1)
187 m_ui->m_dataSetWidget->setVisible(!mode);
188 m_ui->m_constraintWidget->setVisible(!mode);
193 QListWidgetItem* item =
m_ui->m_selectedDatasetListWidget->currentItem();
197 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Select a dataset first."));
201 if (!
m_ui->m_sridInputLineEdit->text().isEmpty())
203 int inputSRID =
m_ui->m_sridInputLineEdit->text().toInt();
204 int outputSRID =
m_ui->m_sridOutputLineEdit->text().toInt();
208 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Invalid output Layer SRID."));
214 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Invalid input Layer SRID."));
219 std::string dataSetAdapterName = item->text().toUtf8().data();
221 std::map<te::da::DataSetTypePtr, te::da::DataSetTypeConverter*>::iterator it =
m_datasets.begin();
225 if(it->second->getConvertee()->getName() == dataSetAdapterName)
227 it->second->getResult()->setName(
m_ui->m_datasetNameLineEdit->text().trimmed().toUtf8().data());
228 it->second->getResult()->setTitle(
m_ui->m_datasetTitleLineEdit->text().trimmed().toUtf8().data());
231 if (!
m_ui->m_sridInputLineEdit->text().isEmpty())
233 int inputSRID =
m_ui->m_sridInputLineEdit->text().toInt();
237 if (!
m_ui->m_sridOutputLineEdit->text().isEmpty())
239 outputSRID =
m_ui->m_sridOutputLineEdit->text().toInt();
245 if(it->second->getResult()->getPrimaryKey())
248 pk->
setName(it->second->getResult()->getName() +
"_pk");
255 std::string charEncodingStr =
m_ui->m_encodingComboBox->currentText().toUtf8().data();
257 it->second->setEncodingType(et);
270 srsDialog.setWindowTitle(tr(
"Choose the SRS"));
272 if(srsDialog.exec() != QDialog::Rejected)
275 m_ui->m_sridInputLineEdit->setText(QString::number(srid.first));
282 srsDialog.setWindowTitle(tr(
"Choose the SRS"));
284 if (srsDialog.exec() != QDialog::Rejected)
287 m_ui->m_sridOutputLineEdit->setText(QString::number(srid.first));
296 std::string dataSetAdapterName = item->text().toUtf8().data();
298 std::map<te::da::DataSetTypePtr, te::da::DataSetTypeConverter*>::iterator it =
m_datasets.begin();
302 if(it->second->getConvertee()->getName() == dataSetAdapterName)
307 m_ui->m_datasetNameLineEdit->setEnabled(
true);
308 m_ui->m_datasetNameLineEdit->setText(QString::fromUtf8(dataset->
getName().c_str()));
310 m_ui->m_datasetTitleLineEdit->setEnabled(
true);
311 m_ui->m_datasetTitleLineEdit->setText(QString::fromUtf8(dataset->
getTitle().c_str()));
315 m_ui->m_sridInputPushButton->setEnabled(
true);
316 m_ui->m_sridInputLineEdit->clear();
317 m_ui->m_sridInputLineEdit->setEnabled(
true);
319 m_ui->m_sridOutputPushButton->setEnabled(
true);
320 m_ui->m_sridOutputLineEdit->clear();
321 m_ui->m_sridOutputLineEdit->setEnabled(
true);
327 m_ui->m_sridInputLineEdit->setText(QString::fromUtf8(boost::lexical_cast<std::string>(geomPropIn->
getSRID()).c_str()));
334 m_ui->m_sridOutputLineEdit->setText(QString::fromUtf8(boost::lexical_cast<std::string>(geomPropOut->
getSRID()).c_str()));
339 m_ui->m_sridInputPushButton->setEnabled(
false);
340 m_ui->m_sridInputLineEdit->clear();
341 m_ui->m_sridInputLineEdit->setEnabled(
false);
343 m_ui->m_sridOutputPushButton->setEnabled(
false);
344 m_ui->m_sridOutputLineEdit->clear();
345 m_ui->m_sridOutputLineEdit->setEnabled(
false);
351 m_ui->m_encodingComboBox->setCurrentIndex(etIndex);
369 QListWidgetItem* item =
m_ui->m_selectedDatasetListWidget->currentItem();
433 QListWidgetItem* item =
m_ui->m_selectedDatasetListWidget->currentItem();
438 std::string dataSetAdapterName = item->text().toUtf8().data();
440 std::map<te::da::DataSetTypePtr, te::da::DataSetTypeConverter*>::const_iterator it =
m_datasets.begin();
444 if(it->second->getConvertee()->getName() == dataSetAdapterName)
456 m_ui->m_datasetNameLineEdit->clear();
457 m_ui->m_datasetTitleLineEdit->clear();
458 m_ui->m_sridInputLineEdit->clear();
459 m_ui->m_sridOutputLineEdit->clear();
464 m_ui->m_datasetNameLineEdit->setEnabled(enabled);
465 m_ui->m_datasetTitleLineEdit->setEnabled(enabled);
466 m_ui->m_sridInputLineEdit->setEnabled(enabled);
467 m_ui->m_sridInputPushButton->setEnabled(enabled);
468 m_ui->m_sridOutputLineEdit->setEnabled(enabled);
469 m_ui->m_sridOutputPushButton->setEnabled(enabled);
474 m_ui->m_encodingComboBox->clear();
478 for (std::size_t t = 0; t < etNames.size(); ++t)
479 m_ui->m_encodingComboBox->addItem(etNames[t].c_str());
484 if (
m_ui->m_dataPreviewGroupBox->isChecked() ==
false)
493 if (ds.get() ==
nullptr)
503 std::string dataSetAdapterName = item->text().toUtf8().data();
505 std::map<te::da::DataSetTypePtr, te::da::DataSetTypeConverter*>::iterator it =
m_datasets.begin();
509 if (it->second->getConvertee()->getName() == dataSetAdapterName)
513 te::da::DataSet* dataset = ds->getDataSet(it->first->getName()).release();
517 datasetPreview = dsAdapter.release();
521 datasetPreview = ds->getDataSet(it->first->getName()).release();
539 m_name = name.toUtf8().data();
544 return dataset->getName() == m_name;
virtual void setName(const std::string &name)
It sets the constraint name.
std::unique_ptr< te::qt::widgets::DataSetAdapterWidget > m_dataSetAdapterWidget
bool operator()(const te::da::DataSetTypePtr &dataset) const
DataSetOptionsWizardPage(QWidget *parent=0)
void onDataPreviewGroupBoxClicked()
void set(const std::list< te::da::DataSetTypePtr > &datasets, const te::da::DataSourceInfoPtr &datasource, const te::da::DataSourceInfoPtr &targetDatasource)
void sridOutputSearchToolButtonPressed()
TEDATAACCESSEXPORT void LoadProperties(te::da::DataSetType *dataset, const std::string &datasourceId)
boost::shared_ptr< DataSetType > DataSetTypePtr
boost::shared_ptr< DataSource > DataSourcePtr
std::map< te::da::DataSetTypePtr, te::da::DataSetTypeConverter * > m_datasets
TEDATAACCESSEXPORT void AssociateDataSetTypeConverterSRID(DataSetTypeConverter *converter, const int &inputSRID, const int &outputSRID=TE_UNKNOWN_SRS)
#define TE_UNKNOWN_SRS
A numeric value to represent a unknown SRS identification in TerraLib.
bool hasGeom() const
It returns true if the DataSetType has at least one geometry property; otherwise, it returns false...
A class that models the description of a dataset.
DataSetType * getResult() const
PrimaryKey * getPrimaryKey() const
It returns the primary key associated to the dataset type.
static te::dt::Date ds(2010, 01, 01)
std::unique_ptr< te::qt::widgets::ConstraintsIndexesListWidget > m_constraintWidget
const std::map< te::da::DataSetTypePtr, te::da::DataSetTypeConverter * > & getDatasets() const
~DataSetOptionsWizardPage()
EncodingType
Supported character encodings.
An converter for DataSetType.
void sridInputSearchToolButtonPressed()
void showSimpleMode(const bool &mode)
void setName(const std::string &name)
It sets the property name.
static std::string getEncodingName(EncodingType et)
Retrive a string from a given character encoding type enum.
int getSRID() const
It returns the spatial reference system identifier associated to this property.
static DataSourceManager & getInstance()
It returns a reference to the singleton instance.
std::unique_ptr< te::qt::widgets::DataSetTableView > m_tblView
FindByName(const QString &name)
te::da::DataSourceInfoPtr m_targetDatasource
std::unique_ptr< Ui::DataSetOptionsWizardPageForm > m_ui
te::da::DataSetTypePtr getSelectedDataSet() const
te::da::DataSourceInfoPtr m_datasource
void setControlsEnabled(bool enabled)
A dataset is the unit of information manipulated by the data access module of TerraLib.
void previewData(QListWidgetItem *item, bool isResult)
Property * findFirstPropertyOfType(const int t) const
returns the first property of the given data type. Caller doesn't take ownership of the returned poin...
static te::core::EncodingType getEncodingType(const std::string &name)
Retrive an EncodingType from a given character encoding name.
It describes a primary key (pk) constraint.
void datasetPressed(QListWidgetItem *item)
void fillCharEncodingTypes()
TEDATAACCESSEXPORT DataSetAdapter * CreateAdapter(DataSet *ds, DataSetTypeConverter *converter, bool isOwner=false)
static std::vector< std::string > getEncodingList()
Retrive a vector of string with all available encoding types name.
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr
const std::string & getTitle() const
A human descriptive title for the DataSetType.
const std::string & getName() const
It returns the property name.