public void attributesChanged(AttributeEvent event) {
switch (event.getEventType()) {
case ADD_COLUMN:
AttributeColumn[] addedColumns = event.getData().getAddedColumns();
for (int i = 0; i < addedColumns.length; i++) {
AttributeColumn col = addedColumns[i];
if (col.getType().isDynamicType() && attUtils.isNodeColumn(col)) {
nodeDynamicColumns.add(col);
} else if (col.getType().isDynamicType() && attUtils.isEdgeColumn(col)) {
edgeDynamicColumns.add(col);
}
}
break;
case REMOVE_COLUMN:
AttributeColumn[] removedColumns = event.getData().getRemovedColumns();
for (int i = 0; i < removedColumns.length; i++) {
AttributeColumn col = removedColumns[i];
if (col.getType().isDynamicType() && attUtils.isNodeColumn(col)) {
nodeDynamicColumns.remove(col);
} else if (col.getType().isDynamicType() && attUtils.isEdgeColumn(col)) {
edgeDynamicColumns.remove(col);
}
}
break;
case REPLACE_COLUMN:
AttributeColumn[] replacedColumns = event.getData().getRemovedColumns();
for (int i = 0; i < replacedColumns.length; i++) {
AttributeColumn removedCol = replacedColumns[i];
if (removedCol.getType().isDynamicType() && attUtils.isNodeColumn(removedCol)) {
nodeDynamicColumns.remove(removedCol);
} else if (removedCol.getType().isDynamicType() && attUtils.isEdgeColumn(removedCol)) {
edgeDynamicColumns.remove(removedCol);
}
AttributeTable table = event.getSource();
AttributeColumn addedCol = table.getColumn(removedCol.getIndex());
if (addedCol.getType().isDynamicType() && attUtils.isNodeColumn(addedCol)) {
nodeDynamicColumns.add(addedCol);
} else if (addedCol.getType().isDynamicType() && attUtils.isEdgeColumn(addedCol)) {
edgeDynamicColumns.add(addedCol);
}
}
break;
case SET_VALUE:
case UNSET_VALUE:
AttributeValue[] values = event.getData().getTouchedValues();
for (int i = 0; i < values.length; i++) {
AttributeValue val = values[i];
if (val.getValue() != null) {
AttributeColumn col = values[i].getColumn();
if (col.getType().isDynamicType()) {
DynamicType<?> dynamicType = (DynamicType) val.getValue();
if (dynamicType != null) {
for (Interval interval : dynamicType.getIntervals(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY)) {
if (event.getEventType() == AttributeEvent.EventType.UNSET_VALUE) {
timeIntervalIndex.remove(interval);