27 #include "../../../dataaccess/dataset/DataSet.h" 
   28 #include "../../../dataaccess/dataset/DataSetType.h" 
   29 #include "../../../dataaccess/dataset/ObjectIdSet.h" 
   30 #include "../../../dataaccess/datasource/DataSourceCapabilities.h" 
   31 #include "../../../dataaccess/query/FunctionNames.h" 
   32 #include "../../../dataaccess/query/QueryCapabilities.h" 
   33 #include "../../../dataaccess/utils/Utils.h" 
   34 #include "../../../maptools/DataSetLayer.h" 
   35 #include "../utils/ColorPickerToolButton.h" 
   38 #include "ui_QueryDialogForm.h" 
   39 #include "ui_WhereClauseWidgetForm.h" 
   42 #include <QGridLayout> 
   43 #include <QMessageBox> 
   53     m_ui(new Ui::QueryDialogForm)
 
   58   QGridLayout* layout = 
new QGridLayout(
m_ui->m_widget);
 
   61   layout->setContentsMargins(0, 0, 0, 0);
 
   69   QGridLayout* colorPickerLayout = 
new QGridLayout(
m_ui->m_colorPickerFrame);
 
   70   colorPickerLayout->setContentsMargins(0, 0, 0, 0);
 
   78   m_ui->m_helpPushButton->setPageReference(
"widgets/query/query_dialog.html");
 
   87   return m_whereClauseWidget.get();
 
   92   m_whereClauseWidget->setLayerList(layerList);
 
   94   m_ui->m_inputLayerComboBox->clear();
 
   96   std::list<te::map::AbstractLayerPtr>::iterator it = layerList.begin();
 
   98   while(it != layerList.end())
 
  102     std::auto_ptr<te::da::DataSetType> dsType = l->getSchema();
 
  106     if(dsLayer && dsType->hasGeom())
 
  107       m_ui->m_inputLayerComboBox->addItem(l->getTitle().c_str(), QVariant::fromValue(l));
 
  112   if(m_ui->m_inputLayerComboBox->count() > 0)
 
  114     QString s = m_ui->m_inputLayerComboBox->currentText();
 
  116     onInputLayerActivated(s);
 
  122   for(
int i = 0; i < m_ui->m_inputLayerComboBox->count(); ++i)
 
  124     QVariant varLayer = m_ui->m_inputLayerComboBox->itemData(i, Qt::UserRole);
 
  129       m_ui->m_inputLayerComboBox->setCurrentIndex(i);
 
  134   if(m_ui->m_inputLayerComboBox->count() > 0)
 
  136     QString s = m_ui->m_inputLayerComboBox->currentText();
 
  138     onInputLayerActivated(s);
 
  144   if(value.empty() == 
false)
 
  146     std::string dataSetName = value;
 
  147     std::string aliasName = value;
 
  149     int pos = dataSetName.find(
".");
 
  150     if(pos != std::string::npos)
 
  152       aliasName = dataSetName.substr(pos + 1, dataSetName.size() - 1);
 
  162   return m_whereClauseWidget->getWhere();
 
  176     m_ui->m_inputLayerComboBox->addItem(layer->getTitle().c_str(), QVariant::fromValue(layer));
 
  178   int curIdx = m_ui->m_inputLayerComboBox->currentIndex();
 
  180   QVariant varLayer = m_ui->m_inputLayerComboBox->itemData(curIdx, Qt::UserRole);
 
  185     QString s = m_ui->m_inputLayerComboBox->currentText();
 
  187     onInputLayerActivated(s);
 
  192     m_whereClauseWidget->getForm()->m_layerComboBox->addItem(layer->getTitle().c_str(), QVariant::fromValue(layer));
 
  198   int curIdx = m_ui->m_inputLayerComboBox->currentIndex();
 
  200   for(
int i = 0; i < m_ui->m_inputLayerComboBox->count(); ++i)
 
  202     QVariant varLayer = m_ui->m_inputLayerComboBox->itemData(i, Qt::UserRole);
 
  207       m_ui->m_inputLayerComboBox->removeItem(i);
 
  211         if(m_ui->m_inputLayerComboBox->count() != 0)
 
  213           m_ui->m_inputLayerComboBox->setCurrentIndex(0);
 
  215           QString s = m_ui->m_inputLayerComboBox->currentText();
 
  217           onInputLayerActivated(s);
 
  221           m_whereClauseWidget->resetInterface();
 
  228   curIdx = m_whereClauseWidget->getForm()->m_layerComboBox->currentIndex();
 
  230   for(
int i = 0; i < m_whereClauseWidget->getForm()->m_layerComboBox->count(); ++i)
 
  232     QVariant varLayer = m_whereClauseWidget->getForm()->m_layerComboBox->itemData(i, Qt::UserRole);
 
  237       m_whereClauseWidget->getForm()->m_layerComboBox->removeItem(i);
 
  244   m_whereClauseWidget->resetInterface();
 
  247   int idxLayer = m_ui->m_inputLayerComboBox->currentIndex();
 
  249   QVariant varLayer = m_ui->m_inputLayerComboBox->itemData(idxLayer, Qt::UserRole);
 
  260   if(!dsPtr->isOpened())
 
  263   m_whereClauseWidget->setDataSource(dsPtr);
 
  266   std::vector<std::string> vecOperators;
 
  267   std::vector<std::string> vecSpatialOperators;
 
  268   std::vector<std::string> vecConnectors;
 
  273   std::set<std::string>::iterator it;
 
  278     vecOperators.push_back(*it);
 
  285     vecOperators.push_back(*it);
 
  289   m_whereClauseWidget->setOperatorsList(vecOperators);
 
  294     vecSpatialOperators.push_back(*it);
 
  301     vecSpatialOperators.clear();
 
  312   m_whereClauseWidget->setSpatialOperatorsList(vecSpatialOperators);
 
  317     vecConnectors.push_back(*it);
 
  321   m_whereClauseWidget->setConnectorsList(vecConnectors);
 
  324   std::auto_ptr<te::da::DataSetType> dsType = dsLayer->getSchema();
 
  326   std::string dsName = dsType->getName();
 
  327   std::string aliasName = setAliasName(dsName);
 
  329   std::vector<std::pair<std::string, std::string> > list;
 
  330   list.push_back(std::pair<std::string, std::string>(dsName, aliasName));
 
  332   m_whereClauseWidget->setFromItems(list);
 
  335   std::vector<std::string> inputProperties;
 
  336   std::vector<std::string> geomProperties;
 
  338   for(
size_t i = 0; i < dsType->size(); ++i)
 
  340     std::string propName = dsType->getProperty(i)->getName();
 
  343       geomProperties.push_back(propName);
 
  345       inputProperties.push_back(propName);
 
  348   m_whereClauseWidget->setAttributeList(inputProperties);
 
  349   m_whereClauseWidget->setGeomAttributeList(geomProperties, dsLayer->getSRID());
 
  356   if(wh == 0 || wh->
getExp() == 0)
 
  358     QMessageBox::information(
this, tr(
"Query"), tr(
"Add a restriction expression first."));
 
  363   int index = m_ui->m_inputLayerComboBox->currentIndex();
 
  365   QVariant varLayer = m_ui->m_inputLayerComboBox->itemData(index, Qt::UserRole);
 
  374     setCursor(Qt::WaitCursor);
 
  380     std::auto_ptr<const te::map::LayerSchema> schema(layer->getSchema());
 
  383     std::auto_ptr<te::da::DataSet> dataset = layer->getData(e);
 
  384     assert(dataset.get());
 
  386     if(m_ui->m_newSelRadioButton->isChecked())
 
  389       dataset->moveBeforeFirst();
 
  394       layer->clearSelected();
 
  397       emit layerSelectedObjectsChanged(layer);
 
  399     else if(m_ui->m_addSelRadioButton->isChecked())
 
  402       dataset->moveBeforeFirst();
 
  409       emit layerSelectedObjectsChanged(layer);
 
  412     emit highlightLayerObjects(layer, dataset.get(), m_colorPicker->getColor());
 
  414     setCursor(Qt::ArrowCursor);
 
  418   catch(std::exception& e)
 
  420     setCursor(Qt::ArrowCursor);
 
  421     QMessageBox::information(
this, tr(
"Query"), e.what());
 
TEDATAACCESSEXPORT DataSourcePtr GetDataSource(const std::string &datasourceId, const bool opened=true)
Search for a data source with the informed id in the DataSourceManager. 
 
const std::set< std::string > & getComparsionOperators() const 
 
static const std::string sm_ST_Equals
 
static const std::string sm_ST_Overlaps
 
boost::shared_ptr< DataSource > DataSourcePtr
 
static const std::string sm_ST_Touches
 
static const std::string sm_ST_Intersects
 
A class that represents the known capabilities of a specific data source, i.e. this class informs all...
 
const std::set< std::string > & getArithmeticOperators() const 
 
void setExpression(te::da::Expression *expression, bool isClauseIn)
It set the expression that can be used to retrieve the data set that contains the all indentified ele...
 
static const std::string sm_ST_Contains
 
const QueryCapabilities & getQueryCapabilities() const 
 
Q_DECLARE_METATYPE(te::map::AbstractLayerPtr)
 
This is an abstract class that models a query expression. 
 
const std::set< std::string > & getLogicalOperators() const 
 
static const std::string sm_ST_Crosses
 
A class that informs the query support of a given data source. 
 
const std::string & getDataSourceId() const 
 
This class represents a set of unique ids created in the same context. i.e. from the same data set...
 
A class that can be used to model a filter expression that can be applied to a query. 
 
static const std::string sm_ST_EnvelopeIntersects
 
Expression * getExp() const 
 
TEDATAACCESSEXPORT ObjectIdSet * GenerateOIDSet(DataSet *dataset, const DataSetType *type)
 
const std::set< std::string > & getSpatialTopologicOperators() const 
 
This file defines a class for a Query Dialog Dialog. 
 
static const std::string sm_ST_Disjoint
 
static const std::string sm_ST_Within
 
A layer with reference to a dataset. 
 
virtual Expression * clone() const =0
It creates a new copy of this expression. 
 
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr