void IndexWidget::selectIndexingType(void) { fast_update_chk->setEnabled(IndexingType(indexing_cmb->currentText())==IndexingType::gin); fill_factor_chk->setEnabled(IndexingType(indexing_cmb->currentText())==IndexingType::btree); buffering_chk->setEnabled(IndexingType(indexing_cmb->currentText())==IndexingType::gist); fill_factor_sb->setEnabled(fill_factor_chk->isChecked() && fill_factor_chk->isEnabled()); }
void OperatorClassWidget::applyConfiguration(void) { try { OperatorClass *op_class=nullptr; unsigned i, count; startConfiguration<OperatorClass>(); op_class=dynamic_cast<OperatorClass *>(this->object); op_class->setDefault(op_class->isDefault()); op_class->setFamily(dynamic_cast<OperatorFamily *>(family_sel->getSelectedObject())); op_class->setIndexingType(IndexingType(indexing_cmb->currentText())); op_class->setDataType(data_type->getPgSQLType()); op_class->removeElements(); count=elements_tab->getRowCount(); for(i=0; i < count; i++) op_class->addElement(elements_tab->getRowData(i).value<OperatorClassElement>()); BaseObjectWidget::applyConfiguration(); finishConfiguration(); } catch(Exception &e) { cancelConfiguration(); throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
void OperatorFamilyWidget::applyConfiguration(void) { try { OperatorFamily *op_family=NULL; startConfiguration<OperatorFamily>(); op_family=dynamic_cast<OperatorFamily *>(this->object); op_family->setIndexingType(IndexingType(indexing_cmb->currentText())); BaseObjectWidget::applyConfiguration(); finishConfiguration(); } catch(Exception &e) { cancelConfiguration(); throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
void IndexWidget::applyConfiguration(void) { try { Index *index=nullptr; vector<IndexElement> idx_elems; startConfiguration<Index>(); index=dynamic_cast<Index *>(this->object); BaseObjectWidget::applyConfiguration(); index->setIndexAttribute(Index::FAST_UPDATE, fast_update_chk->isChecked()); index->setIndexAttribute(Index::CONCURRENT, concurrent_chk->isChecked()); index->setIndexAttribute(Index::UNIQUE, unique_chk->isChecked()); index->setIndexAttribute(Index::BUFFERING, buffering_chk->isChecked()); index->setPredicate(predicate_txt->toPlainText().toUtf8()); index->setIndexingType(IndexingType(indexing_cmb->currentText())); if(fill_factor_chk->isChecked()) index->setFillFactor(fill_factor_sb->value()); else index->setFillFactor(0); elements_wgt->getElements(idx_elems); index->addIndexElements(idx_elems); finishConfiguration(); } catch(Exception &e) { cancelConfiguration(); throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
void IndexWidget::applyConfiguration(void) { try { Index *index=NULL; unsigned i, count; startConfiguration<Index>(); index=dynamic_cast<Index *>(this->object); index->setIndexAttribute(Index::FAST_UPDATE, fast_update_chk->isChecked()); index->setIndexAttribute(Index::CONCURRENT, concurrent_chk->isChecked()); index->setIndexAttribute(Index::UNIQUE, unique_chk->isChecked()); index->setConditionalExpression(cond_expr_txt->toPlainText().toUtf8()); index->setIndexingType(IndexingType(indexing_cmb->currentText())); if(fill_factor_chk->isChecked()) index->setFillFactor(fill_factor_sb->value()); else index->setFillFactor(0); index->removeElements(); count=elements_tab->getRowCount(); for(i=0; i < count; i++) index->addElement(elements_tab->getRowData(i).value<IndexElement>()); BaseObjectWidget::applyConfiguration(); finishConfiguration(); } catch(Exception &e) { cancelConfiguration(); throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
void ConstraintWidget::applyConfiguration(void) { try { Constraint *constr=nullptr; unsigned i, col_id, count; Column *column=nullptr; ObjectTableWidget *aux_col_tab=nullptr; vector<ExcludeElement> excl_elems; startConfiguration<Constraint>(); constr=dynamic_cast<Constraint *>(this->object); constr->setConstraintType(ConstraintType(constr_type_cmb->currentText())); constr->setExpression(expression_txt->toPlainText().toUtf8()); if(fill_factor_chk->isChecked()) constr->setFillFactor(fill_factor_sb->value()); else constr->setFillFactor(0); constr->setMatchType(MatchType(match_cmb->currentText())); constr->setDeferrable(deferrable_chk->isChecked()); constr->setDeferralType(DeferralType(deferral_cmb->currentText())); constr->setActionType(ActionType(on_delete_cmb->currentText()),Constraint::DELETE_ACTION); constr->setActionType(ActionType(on_update_cmb->currentText()),Constraint::UPDATE_ACTION); constr->setNoInherit(no_inherit_chk->isChecked()); if(indexing_chk->isChecked()) constr->setIndexType(IndexingType(indexing_cmb->currentText())); else constr->setIndexType(BaseType::null); if(constr->getConstraintType()==ConstraintType::foreign_key) constr->setReferencedTable(dynamic_cast<BaseTable *>(ref_table_sel->getSelectedObject())); constr->removeColumns(); for(col_id=Constraint::SOURCE_COLS; col_id <= Constraint::REFERENCED_COLS; col_id++) { aux_col_tab=(col_id==Constraint::SOURCE_COLS ? columns_tab : ref_columns_tab); count=aux_col_tab->getRowCount(); for(i=0; i < count; i++) { column=reinterpret_cast<Column *>(aux_col_tab->getRowData(i).value<void *>()); constr->addColumn(column, col_id); } } excl_elems_wgt->getElements(excl_elems); constr->addExcludeElements(excl_elems); //Raises an error if the user try to create a primary key that has columns added by relationship (not supported) if(constr->getConstraintType()==ConstraintType::primary_key && constr->isReferRelationshipAddedColumn()) throw Exception(ERR_PK_USING_COLS_ADDED_BY_REL,__PRETTY_FUNCTION__,__FILE__,__LINE__); BaseObjectWidget::applyConfiguration(); /* Raises an error if the constraint type requires at least one column to be assinged and there is no columns configured on the form */ if(((constr->getConstraintType()==ConstraintType::foreign_key || constr->getConstraintType()==ConstraintType::primary_key) && constr->getColumnCount(Constraint::SOURCE_COLS)==0) || (constr->getConstraintType()==ConstraintType::foreign_key && constr->getColumnCount(Constraint::REFERENCED_COLS)==0)) throw Exception(ERR_CONSTR_NO_COLUMNS,__PRETTY_FUNCTION__,__FILE__,__LINE__); finishConfiguration(); //For the foreign keys, updates the fk relationships on the model if(constr->getConstraintType()==ConstraintType::foreign_key) this->model->updateTableFKRelationships(dynamic_cast<Table *>(this->table)); } catch(Exception &e) { Messagebox msg_box; cancelConfiguration(); msg_box.show(e); } }