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/ObjectIdSet.h"
33 #include "../../dataaccess/datasource/DataSourceCapabilities.h"
34 #include "../../dataaccess/datasource/DataSourceInfo.h"
35 #include "../../dataaccess/datasource/DataSourceInfoManager.h"
36 #include "../../dataaccess/datasource/DataSourceFactory.h"
37 #include "../../dataaccess/datasource/DataSourceManager.h"
38 #include "../../dataaccess/utils/Utils.h"
39 #include "../../datatype/Enums.h"
40 #include "../../datatype/Property.h"
41 #include "../../maptools/AbstractLayer.h"
42 #include "../../qt/af/Utils.h"
43 #include "../../qt/widgets/datasource/selector/DataSourceSelectorDialog.h"
44 #include "../../qt/widgets/layer/utils/DataSet2Layer.h"
45 #include "../../qt/widgets/progress/ProgressViewerDialog.h"
46 #include "../../statistics/core/Utils.h"
47 #include "../Config.h"
48 #include "../Exception.h"
50 #include "ui_ConfigInputAddressDialogForm.h"
53 #include <QFileDialog>
54 #include <QMessageBox>
58 #include <boost/algorithm/string.hpp>
59 #include <boost/filesystem.hpp>
60 #include <boost/uuid/random_generator.hpp>
61 #include <boost/uuid/uuid_io.hpp>
65 m_ui(new
Ui::ConfigInputAddressDialogForm)
75 std::string streetName;
89 m_dataSource = dataSource;
90 std::vector<std::string> names = m_dataSource->getDataSetNames();
92 m_ui->m_inputAddressLineEdit->clear();
93 m_ui->m_inputAddressLineEdit->setText(QString(names[0].c_str()));
95 m_ui->m_sTypeComboBox->clear();
96 m_ui->m_sTitleComboBox->clear();
97 m_ui->m_sNameComboBox->clear();
98 m_ui->m_sNumberComboBox->clear();
99 m_ui->m_sNeighborhoodComboBox->clear();
100 m_ui->m_sPostalCodeComboBox->clear();
102 m_ui->m_sTypeComboBox->addItem(
"");
103 m_ui->m_sTitleComboBox->addItem(
"");
104 m_ui->m_sNameComboBox->addItem(
"");
105 m_ui->m_sNumberComboBox->addItem(
"");
106 m_ui->m_sNeighborhoodComboBox->addItem(
"");
107 m_ui->m_sPostalCodeComboBox->addItem(
"");
109 std::auto_ptr<te::da::DataSetType> dsType = m_dataSource->getDataSetType(names[0]);
110 std::vector<te::dt::Property*> propsVec = dsType->getProperties();
112 for(std::size_t i = 0; i < propsVec.size(); ++i)
114 int type = propsVec[i]->getType();
117 m_ui->m_sNumberComboBox->addItem(QString(propsVec[i]->getName().c_str()));
121 m_ui->m_sTypeComboBox->addItem(QString(propsVec[i]->getName().c_str()));
122 m_ui->m_sTitleComboBox->addItem(QString(propsVec[i]->getName().c_str()));
123 m_ui->m_sNameComboBox->addItem(QString(propsVec[i]->getName().c_str()));
124 m_ui->m_sNeighborhoodComboBox->addItem(QString(propsVec[i]->getName().c_str()));
125 m_ui->m_sPostalCodeComboBox->addItem(QString(propsVec[i]->getName().c_str()));
132 return m_ui->m_inputAddressLineEdit->text().toStdString();
137 return m_ui->m_sTypeComboBox->currentText().toStdString();
142 m_ui->m_sTypeComboBox->setCurrentIndex(m_ui->m_sTypeComboBox->findText(streetType.c_str()));
147 return m_ui->m_sTitleComboBox->currentText().toStdString();
152 m_ui->m_sTitleComboBox->setCurrentIndex(m_ui->m_sTitleComboBox->findText(streetTitle.c_str()));
157 return m_ui->m_sNameComboBox->currentText().toStdString();
162 m_ui->m_sNameComboBox->setCurrentIndex(m_ui->m_sNameComboBox->findText(streetName.c_str()));
167 return m_ui->m_sNumberComboBox->currentText().toStdString();
172 m_ui->m_sNumberComboBox->setCurrentIndex(m_ui->m_sNumberComboBox->findText(streetNumber.c_str()));
177 return m_ui->m_sNeighborhoodComboBox->currentText().toStdString();
182 m_ui->m_sNeighborhoodComboBox->setCurrentIndex(m_ui->m_sNeighborhoodComboBox->findText(streetNeighborhood.c_str()));
187 return m_ui->m_sPostalCodeComboBox->currentText().toStdString();
192 m_ui->m_sPostalCodeComboBox->setCurrentIndex(m_ui->m_sPostalCodeComboBox->findText(streetPostalCode.c_str()));
197 QMessageBox::information(
this,
"Help",
"Under development");
202 std::map<std::string, std::string> connInfo = m_dataSource->getConnectionInfo();
203 std::map<std::string, std::string>::iterator it = connInfo.begin();
205 std::vector<std::string>dsNames = m_dataSource->getDataSetNames();
207 std::map<std::string, std::string> addressConfig;
208 addressConfig.insert(std::pair<std::string,std::string>(
"fileName", dsNames[0]));
209 addressConfig.insert(std::pair<std::string,std::string>(
"filePath", it->second));
210 addressConfig.insert(std::pair<std::string,std::string>(
"streetType", m_ui->m_sTypeComboBox->currentText().toStdString()));
211 addressConfig.insert(std::pair<std::string,std::string>(
"streetTitle", m_ui->m_sTitleComboBox->currentText().toStdString()));
212 addressConfig.insert(std::pair<std::string,std::string>(
"streetName", m_ui->m_sNameComboBox->currentText().toStdString()));
213 addressConfig.insert(std::pair<std::string,std::string>(
"number", m_ui->m_sNumberComboBox->currentText().toStdString()));
214 addressConfig.insert(std::pair<std::string,std::string>(
"neighborhood", m_ui->m_sNeighborhoodComboBox->currentText().toStdString()));
215 addressConfig.insert(std::pair<std::string,std::string>(
"postalCode", m_ui->m_sPostalCodeComboBox->currentText().toStdString()));
217 AddAddressConfigToSettings(addressConfig);
229 QSettings sett(QSettings::IniFormat, QSettings::UserScope, qApp->organizationName(), qApp->applicationName());
231 sett.beginGroup(
"Address Geocoding");
233 AddAddressConfigItens(addressConfig, sett);
240 std::map<std::string, std::string>::iterator it = addressConfig.begin();
242 sett.beginGroup(it->second.c_str());
244 while(it != addressConfig.end())
246 sett.setValue(it->first.c_str(), it->second.c_str());
255 std::string streetType,
256 std::string streetTitle,
257 std::string streetName,
259 std::string neighborhood,
260 std::string postalCode)
262 QSettings sett(QSettings::IniFormat, QSettings::UserScope, qApp->organizationName(), qApp->applicationName());
264 QString key1 =
"Address Geocoding/filePath";
265 QString key2 =
"Address Geocoding/streetType";
266 QString key3 =
"Address Geocoding/streetTitle";
267 QString key4 =
"Address Geocoding/streetName";
268 QString key5 =
"Address Geocoding/number";
269 QString key6 =
"Address Geocoding/neighborhood";
270 QString key7 =
"Address Geocoding/postalCode";
272 sett.setValue(key1, filePath.c_str());
273 sett.setValue(key2, streetType.c_str());
274 sett.setValue(key3, streetTitle.c_str());
275 sett.setValue(key4, streetName.c_str());
276 sett.setValue(key5, number.c_str());
277 sett.setValue(key6, neighborhood.c_str());
278 sett.setValue(key7, postalCode.c_str());
282 std::string& streetType,
283 std::string& streetTitle,
284 std::string& streetName,
286 std::string& neighborhood,
287 std::string& postalCode)
289 QSettings sett(QSettings::IniFormat, QSettings::UserScope, qApp->organizationName(), qApp->applicationName());
291 std::string key1 =
"Address Geocoding/filePath";
292 std::string key2 =
"Address Geocoding/streetType";
293 std::string key3 =
"Address Geocoding/streetTitle";
294 std::string key4 =
"Address Geocoding/streetName";
295 std::string key5 =
"Address Geocoding/number";
296 std::string key6 =
"Address Geocoding/neighborhood";
297 std::string key7 =
"Address Geocoding/postalCode";
299 filePath = sett.value(key1.c_str()).toString().toStdString();
300 streetType = sett.value(key2.c_str()).toString().toStdString();
301 streetTitle = sett.value(key3.c_str()).toString().toStdString();
302 streetName = sett.value(key4.c_str()).toString().toStdString();
303 number = sett.value(key5.c_str()).toString().toStdString();
304 neighborhood = sett.value(key5.c_str()).toString().toStdString();
305 postalCode = sett.value(key6.c_str()).toString().toStdString();
boost::shared_ptr< DataSource > DataSourcePtr