Search in sources :

Example 1 with RowsDeletedEvent

use of org.cytoscape.model.events.RowsDeletedEvent in project cytoscape-impl by cytoscape.

the class CyTableImpl method deleteRows.

@Override
public boolean deleteRows(final Collection<?> primaryKeys) {
    boolean changed = false;
    synchronized (lock) {
        // collect the attribute maps for the columns, faster to normalize column names outside the main loop
        Collection<CyColumn> columns = getColumns();
        List<ColumnData> attributeMaps = new ArrayList<>(columns.size());
        for (CyColumn col : columns) {
            final String normalizedColName = normalizeColumnName(col.getName());
            final ColumnData keyToValueMap = attributes.get(normalizedColName);
            if (keyToValueMap != null) {
                attributeMaps.add(keyToValueMap);
            }
        }
        // batch remove from rowList for performance
        Set<CyRow> rowsToRemoveFromList = new HashSet<>();
        // main loop
        for (Object key : primaryKeys) {
            checkKey(key);
            CyRow row = rows.remove(key);
            if (row != null) {
                rowsToRemoveFromList.add(row);
                for (ColumnData keyToValueMap : attributeMaps) {
                    keyToValueMap.remove(key);
                }
                changed = true;
            }
        }
        rowList.removeAll(rowsToRemoveFromList);
    }
    if (changed)
        eventHelper.fireEvent(new RowsDeletedEvent(this, (Collection<Object>) primaryKeys));
    return changed;
}
Also used : RowsDeletedEvent(org.cytoscape.model.events.RowsDeletedEvent) CyColumn(org.cytoscape.model.CyColumn) ArrayList(java.util.ArrayList) ColumnData(org.cytoscape.model.internal.column.ColumnData) CyRow(org.cytoscape.model.CyRow) HashSet(java.util.HashSet)

Aggregations

ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1 CyColumn (org.cytoscape.model.CyColumn)1 CyRow (org.cytoscape.model.CyRow)1 RowsDeletedEvent (org.cytoscape.model.events.RowsDeletedEvent)1 ColumnData (org.cytoscape.model.internal.column.ColumnData)1