bool BaseTable::addColumn(const ColumnDefinition& def){ if ( _columnDefinitionsByName.contains(def.name())) { kernel()->issues()->log(TR("Adding duplicate column %1").arg(name()),IssueObject::itWarning); return false; } _columnDefinitionsByName[def.name()] = def; _columnDefinitionsByIndex[def.id()] = _columnDefinitionsByName[def.name()]; _columns = _columnDefinitionsByName.size(); return true; }
bool AttributeDefinition::addColumn(const ColumnDefinition& def){ if ( _columnDefinitionsByName.find(def.name()) != _columnDefinitionsByName.end()) { // no duplicates return false; } ColumnDefinition coldef = def; coldef.columnindex(_columnDefinitionsByIndex.size()); _columnDefinitionsByName[coldef.name()] = _columnDefinitionsByIndex.size(); _columnDefinitionsByIndex.push_back(coldef); return true; }
void AttributeDefinition::columndefinition(const ColumnDefinition &coldef) { if ( coldef.id() >= _columnDefinitionsByIndex.size()) { addColumn({coldef.name(), coldef.datadef().domain<>()}); } else { auto iter1 = _columnDefinitionsByName.find(coldef.name()); if ( iter1 != _columnDefinitionsByName.end()) { ColumnDefinition cdef = coldef; cdef.columnindex((*iter1).second); _columnDefinitionsByIndex[cdef.columnindex()] = cdef; (*iter1).second = cdef.columnindex(); }else { addColumn(coldef); } } }
bool FlatTable::addColumn(const ColumnDefinition &def) { bool ok = BaseTable::addColumn(def); if(!ok) { return false; } if ( isDataLoaded()) { for(Record& row : _datagrid) { row.addColumn(); row.changed(true); } initValuesColumn(def.name()); } return true; }
void BaseTable::initValuesColumn(const QString& colname){ ColumnDefinition def = columndefinition(colname); if ( !def.isValid()){ ERROR2(WARN_INVALID_OBJECT,TR("column definition"), name()); return; } IlwisTypes valueType = def.datadef().domain<>()->valueType(); std::vector<QVariant> col(recordCount()); for(auto& var : col) { if ( hasType(valueType, itINTEGER | itDOMAINITEM)) var = QVariant((int)iUNDEF); else if ( hasType(valueType, itDOUBLE | itFLOAT)) var = QVariant(rUNDEF); else if ( hasType(valueType, itSTRING)) var = QVariant(sUNDEF); else if ( hasType(valueType, itCOORDINATE)) var.setValue(crdUNDEF); } column(def.name(),col); }