27 #include "../../../common/STLUtils.h"
28 #include "../../../dataaccess/dataset/Constraint.h"
29 #include "../../../dataaccess/dataset/DataSetType.h"
30 #include "../../../dataaccess/dataset/Index.h"
31 #include "../../../dataaccess/dataset/PrimaryKey.h"
32 #include "../../../dataaccess/dataset/UniqueKey.h"
33 #include "../../../datatype/Property.h"
36 #include "ui_ConstraintsIndexesListWidgetForm.h"
38 #define CONSTRAINT_PK_TYPE "Primary Key"
39 #define CONSTRAINT_UK_TYPE "Unique Key"
40 #define CONSTRAINT_UNKNOWN_TYPE "Unknown"
41 #define INDEX_TYPE "Index"
46 m_ui(new Ui::ConstraintsIndexesListWidgetForm)
51 m_ui->m_addToolButton->setIcon(QIcon::fromTheme(
"list-add"));
52 m_ui->m_removeToolButton->setIcon(QIcon::fromTheme(
"list-remove"));
53 m_ui->m_editToolButton->setIcon(QIcon::fromTheme(
"preferences-system"));
57 connect(
m_ui->m_tableWidget, SIGNAL(cellClicked(
int,
int)),
this, SLOT(
onCellClicked(
int,
int)));
73 listDataSetProperties();
83 if(w.exec() == QDialog::Accepted)
85 listDataSetProperties();
91 int row = m_ui->m_tableWidget->currentRow();
96 std::string type = m_ui->m_tableWidget->item(row, 1)->text().toStdString();
97 std::string name = m_ui->m_tableWidget->item(row, 0)->text().toStdString();
101 removePrimaryKey(name);
105 removeUniqueKey(name);
112 m_ui->m_removeToolButton->setEnabled(
false);
114 listDataSetProperties();
124 m_ui->m_removeToolButton->setEnabled(
true);
129 m_ui->m_tableWidget->setRowCount(0);
132 if(m_dsType->getPrimaryKey())
134 addConstraint(m_dsType->getPrimaryKey());
138 size_t size = m_dsType->getNumberOfUniqueKeys();
140 for(
size_t t = 0; t < size; ++t)
142 addConstraint(m_dsType->getUniqueKey(t));
146 size = m_dsType->getNumberOfIndexes();
148 for(
size_t t = 0; t < size; ++t)
150 addIndex(m_dsType->getIndex(t));
153 m_ui->m_tableWidget->resizeColumnsToContents();
158 std::string name = c->
getName();
159 std::string type =
"";
160 std::string properties =
"";
165 properties = getPropertiesStr(dynamic_cast<te::da::PrimaryKey*>(c)->getProperties());
170 properties = getPropertiesStr(dynamic_cast<te::da::UniqueKey*>(c)->getProperties());
177 addTableItem(name, type, properties);
182 std::string name = i->
getName();
183 std::string type = tr(
INDEX_TYPE).toStdString();
184 std::string properties = getPropertiesStr(i->
getProperties());
186 addTableItem(name, type, properties);
193 if(pk && pk->
getName() == name)
195 m_dsType->remove(pk);
201 size_t size = m_dsType->getNumberOfUniqueKeys();
203 for(
size_t t = 0; t < size; ++t)
209 m_dsType->remove(uk);
217 size_t size = m_dsType->getNumberOfIndexes();
219 for(
size_t t = 0; t < size; ++t)
234 int newrow = m_ui->m_tableWidget->rowCount();
236 m_ui->m_tableWidget->insertRow(newrow);
238 QTableWidgetItem* itemName =
new QTableWidgetItem(QString::fromStdString(name));
239 m_ui->m_tableWidget->setItem(newrow, 0, itemName);
241 QTableWidgetItem* itemType =
new QTableWidgetItem(QString::fromStdString(type));
242 m_ui->m_tableWidget->setItem(newrow, 1, itemType);
244 QTableWidgetItem* itemProp =
new QTableWidgetItem(QString::fromStdString(properties));
245 m_ui->m_tableWidget->setItem(newrow, 2, itemProp);
250 std::string str =
"";
252 for(
size_t t = 0; t < vec.size(); ++t)
254 str += vec[t]->getName();
It describes an index associated to a DataSetType.
void listDataSetProperties()
std::string getPropertiesStr(std::vector< te::dt::Property * > vec)
A class used to define a constraint or index property creator.
#define CONSTRAINT_UK_TYPE
void onAddToolButtonClicked()
#define CONSTRAINT_UNKNOWN_TYPE
void addTableItem(std::string name, std::string type, std::string properties)
It describes a primary key (pk) constraint.
void onEditToolButtonClicked()
void addIndex(te::da::Index *i)
const std::vector< te::dt::Property * > & getProperties() const
It returns the properties that take part of the index.
void removeIndex(const std::string &name)
ConstraintsIndexesListWidget(QWidget *parent=0, Qt::WindowFlags f=0)
Ui::ConstraintsIndexesListWidgetForm * getForm() const
void addConstraint(te::da::Constraint *c)
#define CONSTRAINT_PK_TYPE
const std::string & getName() const
It returns the index name.
It describes a unique key (uk) constraint.
virtual const std::string & getName() const
It returns the constraint name.
void removeUniqueKey(const std::string &name)
This file has the ConstraintsIndexesListWidget class.
void onCellClicked(int row, int col)
A class that models the description of a dataset.
A dialog for creating a constraint or a index property.
~ConstraintsIndexesListWidget()
virtual ConstraintType getType() const =0
It returns the constraint type.
void removePrimaryKey(const std::string &name)
std::auto_ptr< Ui::ConstraintsIndexesListWidgetForm > m_ui
void onRemoveToolButtonClicked()
void setDataSetType(te::da::DataSetType *dsType)