private void updateColumns() { int tableVersion = attributeTable.getVersion(); if (rowVersion < tableVersion) { // Need to update AttributeColumnImpl[] columns = attributeTable.getColumns(); AttributeValueImpl[] oldValues = values; values = new AttributeValueImpl[columns.length]; for (int i = 0; i < columns.length; i++) { AttributeColumnImpl tableCol = columns[i]; boolean found = false; int j = 0; while (j < oldValues.length) { AttributeValueImpl val = oldValues[j++]; if (val.getColumn() == tableCol) { values[i] = val; found = true; break; } } if (!found) { setValue(i, tableCol.defaultValue, false); } } // Upd version rowVersion = tableVersion; } }
private void setValue(int index, AttributeValueImpl value, boolean doUpdateColumns) { if (doUpdateColumns) { updateColumns(); } AttributeValueImpl oldValue = this.values[index]; this.values[index] = value; if (!(oldValue != null && oldValue.equals(value)) && index > 0 && !value .getColumn() .getOrigin() .equals( AttributeOrigin .COMPUTED)) { // 0 is the index of node id and edge id cols, not useful to send // these events if (oldValue != null) { attributeTable.model.fireAttributeEvent( new ValueEvent(EventType.UNSET_VALUE, attributeTable, object, oldValue)); } attributeTable.model.fireAttributeEvent( new ValueEvent(EventType.SET_VALUE, attributeTable, object, value)); } }