27 #include "../../../dataaccess/dataset/DataSetType.h"
28 #include "../../../dataaccess/dataset/DataSetTypeConverter.h"
29 #include "../../../dataaccess/dataset/Index.h"
30 #include "../../../dataaccess/dataset/PrimaryKey.h"
31 #include "../../../dataaccess/dataset/UniqueKey.h"
32 #include "../../../dataaccess/datasource/DataSourceTransactor.h"
33 #include "../../../dataaccess/datasource/DataSourceManager.h"
34 #include "../../../dataaccess/utils/Utils.h"
35 #include "../../../geometry/GeometryProperty.h"
36 #include "../../../qt/widgets/utils/ScopedCursor.h"
37 #include "../../../qt/widgets/srs/SRSManagerDialog.h"
38 #include "../property/ConstraintsIndexesListWidget.h"
39 #include "../property/DataSetAdapterWidget.h"
41 #include "ui_DataSetOptionsWizardPageForm.h"
47 #include <boost/algorithm/string/replace.hpp>
48 #include <boost/lexical_cast.hpp>
52 #include <QMessageBox>
55 : QWizardPage(parent),
56 m_ui(new
Ui::DataSetOptionsWizardPageForm)
63 QGridLayout* constraintLayout =
new QGridLayout(
m_ui->m_constraintWidget);
65 constraintLayout->setContentsMargins(0,0,0,0);
68 QGridLayout* dataSetLayout =
new QGridLayout(
m_ui->m_dataSetWidget);
70 dataSetLayout->setContentsMargins(0,0,0,0);
72 m_ui->m_sridInputPushButton->setIcon(QIcon::fromTheme(
"srs"));
73 m_ui->m_sridOutputPushButton->setIcon(QIcon::fromTheme(
"srs"));
78 connect(
m_ui->m_applyPushButton, SIGNAL(clicked()),
this, SLOT(
applyChanges()));
80 connect(
m_ui->m_selectedDatasetListWidget, SIGNAL(itemPressed(QListWidgetItem*)),
this, SLOT(
datasetPressed(QListWidgetItem*)));
96 m_ui->m_selectedDatasetListWidget->clear();
102 m_datasource = datasource;
104 m_targetDatasource = targetDatasource;
108 for(std::list<te::da::DataSetTypePtr>::const_iterator it = datasets.begin(); it != datasets.end(); ++it)
113 if((*it)->size() == 0)
122 std::size_t idx = name.find(
".");
123 if (idx != std::string::npos)
125 name = name.substr(idx + 1, name.size() - 1);
137 m_datasets.insert(std::map<te::da::DataSetTypePtr, te::da::DataSetTypeConverter*>::value_type((*it), converter));
140 for(std::list<te::da::DataSetTypePtr>::const_iterator it = datasets.begin(); it != datasets.end(); ++it)
142 QString title = QString::fromStdString((*it)->getTitle());
144 QString name = QString::fromStdString((*it)->getName());
149 QListWidgetItem* item =
new QListWidgetItem(title);
151 m_ui->m_selectedDatasetListWidget->addItem(item);
153 if(datasets.size() == 1)
155 item->setSelected(
true);
156 datasetPressed(item);
160 if(datasets.size() != 1)
161 setControlsEnabled(
false);
171 m_ui->m_dataSetWidget->setVisible(!mode);
172 m_ui->m_constraintWidget->setVisible(!mode);
177 QListWidgetItem* item = m_ui->m_selectedDatasetListWidget->currentItem();
182 if (!m_ui->m_sridInputLineEdit->text().isEmpty())
184 int inputSRID = m_ui->m_sridInputLineEdit->text().toInt();
185 int outputSRID = m_ui->m_sridOutputLineEdit->text().toInt();
189 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Invalid output Layer SRID."));
195 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Invalid input Layer SRID."));
200 std::string dataSetAdapterName = item->text().toStdString();
202 std::map<te::da::DataSetTypePtr, te::da::DataSetTypeConverter*>::iterator it = m_datasets.begin();
204 while(it != m_datasets.end())
206 if(it->second->getConvertee()->getName() == dataSetAdapterName)
208 it->second->getResult()->setName(m_ui->m_datasetNameLineEdit->text().trimmed().toStdString());
209 it->second->getResult()->setTitle(m_ui->m_datasetTitleLineEdit->text().trimmed().toStdString());
212 if (!m_ui->m_sridInputLineEdit->text().isEmpty())
214 int inputSRID = m_ui->m_sridInputLineEdit->text().toInt();
218 if (!m_ui->m_sridOutputLineEdit->text().isEmpty())
220 outputSRID = m_ui->m_sridOutputLineEdit->text().toInt();
226 if(it->second->getResult()->getPrimaryKey())
229 pk->
setName(it->second->getResult()->getName() +
"_pk");
232 m_constraintWidget->setDataSetType(it->second->getResult());
244 srsDialog.setWindowTitle(tr(
"Choose the SRS"));
246 if(srsDialog.exec() != QDialog::Rejected)
249 m_ui->m_sridInputLineEdit->setText(QString::number(srid.first));
256 srsDialog.setWindowTitle(tr(
"Choose the SRS"));
258 if (srsDialog.exec() != QDialog::Rejected)
261 m_ui->m_sridOutputLineEdit->setText(QString::number(srid.first));
270 std::string dataSetAdapterName = item->text().toStdString();
272 std::map<te::da::DataSetTypePtr, te::da::DataSetTypeConverter*>::iterator it = m_datasets.begin();
274 while(it != m_datasets.end())
276 if(it->second->getConvertee()->getName() == dataSetAdapterName)
281 m_ui->m_datasetNameLineEdit->setEnabled(
true);
282 m_ui->m_datasetNameLineEdit->setText(QString::fromStdString(dataset->
getName()));
284 m_ui->m_datasetTitleLineEdit->setEnabled(
true);
285 m_ui->m_datasetTitleLineEdit->setText(QString::fromStdString(dataset->
getTitle()));
289 m_ui->m_sridInputPushButton->setEnabled(
true);
290 m_ui->m_sridInputLineEdit->
clear();
291 m_ui->m_sridInputLineEdit->setEnabled(
true);
293 m_ui->m_sridOutputPushButton->setEnabled(
true);
294 m_ui->m_sridOutputLineEdit->clear();
295 m_ui->m_sridOutputLineEdit->setEnabled(
true);
301 m_ui->m_sridInputLineEdit->setText(QString::fromStdString(boost::lexical_cast<std::string>(geomPropIn->
getSRID())));
308 m_ui->m_sridOutputLineEdit->setText(QString::fromStdString(boost::lexical_cast<std::string>(geomPropOut->
getSRID())));
313 m_ui->m_sridInputPushButton->setEnabled(
false);
314 m_ui->m_sridInputLineEdit->clear();
315 m_ui->m_sridInputLineEdit->setEnabled(
false);
317 m_ui->m_sridOutputPushButton->setEnabled(
false);
318 m_ui->m_sridOutputLineEdit->clear();
319 m_ui->m_sridOutputLineEdit->setEnabled(
false);
323 m_dataSetAdapterWidget->setAdapterParameters(it->second->getConvertee(), it->second, m_targetDatasource);
326 m_constraintWidget->setDataSetType(dataset);
389 QListWidgetItem* item = m_ui->m_selectedDatasetListWidget->currentItem();
394 std::string dataSetAdapterName = item->text().toStdString();
396 std::map<te::da::DataSetTypePtr, te::da::DataSetTypeConverter*>::const_iterator it = m_datasets.begin();
398 while(it != m_datasets.end())
400 if(it->second->getConvertee()->getName() == dataSetAdapterName)
412 m_ui->m_datasetNameLineEdit->clear();
413 m_ui->m_datasetTitleLineEdit->clear();
414 m_ui->m_sridInputLineEdit->clear();
415 m_ui->m_sridOutputLineEdit->clear();
420 m_ui->m_datasetNameLineEdit->setEnabled(enabled);
421 m_ui->m_datasetTitleLineEdit->setEnabled(enabled);
422 m_ui->m_sridInputLineEdit->setEnabled(enabled);
423 m_ui->m_sridInputPushButton->setEnabled(enabled);
424 m_ui->m_sridOutputLineEdit->setEnabled(enabled);
425 m_ui->m_sridOutputPushButton->setEnabled(enabled);
430 m_name = name.toStdString();
435 return dataset->getName() == m_name;
virtual void setName(const std::string &name)
It sets the constraint name.
bool operator()(const te::da::DataSetTypePtr &dataset) const
DataSetOptionsWizardPage(QWidget *parent=0)
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
TEDATAACCESSEXPORT void AssociateDataSetTypeConverterSRID(DataSetTypeConverter *converter, const int &inputSRID, const int &outputSRID=TE_UNKNOWN_SRS)
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.
void clear()
It clears the DataSetType definition.
const std::map< te::da::DataSetTypePtr, te::da::DataSetTypeConverter * > & getDatasets() const
~DataSetOptionsWizardPage()
An converter for DataSetType.
void sridInputSearchToolButtonPressed()
void showSimpleMode(const bool &mode)
void setName(const std::string &name)
It sets the property name.
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.
FindByName(const QString &name)
#define TE_UNKNOWN_SRS
A numeric value to represent a unknown SRS identification in TerraLib.
std::auto_ptr< Ui::DataSetOptionsWizardPageForm > m_ui
te::da::DataSetTypePtr getSelectedDataSet() const
std::auto_ptr< te::qt::widgets::ConstraintsIndexesListWidget > m_constraintWidget
void setControlsEnabled(bool enabled)
Property * findFirstPropertyOfType(const int t) const
returns the first property of the given data type. Caller doesn't take ownership of the returned poin...
It describes a primary key (pk) constraint.
void datasetPressed(QListWidgetItem *item)
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr
std::auto_ptr< te::qt::widgets::DataSetAdapterWidget > m_dataSetAdapterWidget
const std::string & getTitle() const
A human descriptive title for the DataSetType.
const std::string & getName() const
It returns the property name.