/** * Updates the table in a way that there exists for every given <code>RowObjectContainer</code> * object one table row. * * @param conts <code>RowObjectContainer</code> objects */ public void updateStoredRows(Vector<RowObjectContainer> conts) { Vector<RowObjectContainer> oldConts = new Vector< RowObjectContainer>(); // row object containers that are already listet in the table Vector<RowObjectContainer> newConts = new Vector< RowObjectContainer>(); // new row object containers that should be added to the table Vector<RowObjectContainer> delConts = new Vector< RowObjectContainer>(); // row object containers that should be remove from the table Vector<RowObjectContainer> storedConts = new Vector<RowObjectContainer>(); Iterator iter = getModel().iterator(); while (iter.hasNext()) { storedConts.add(((SnmpTableRow) iter.next()).getRowObjectContainer()); } Enumeration<RowObjectContainer> elements; // find already existing and new row object containers in the table elements = conts.elements(); while (elements.hasMoreElements()) { RowObjectContainer curCont = elements.nextElement(); if (storedConts.contains(curCont)) { oldConts.add(curCont); } else { newConts.add(curCont); } } // find row object containers that should be deleted from the table elements = storedConts.elements(); while (elements.hasMoreElements()) { RowObjectContainer curCont = elements.nextElement(); if (!conts.contains(curCont)) { delConts.add(curCont); } } // find rows that should be deleted Vector<SnmpTableRow> delRows = new Vector<SnmpTableRow>(); // the rows that should be deleted will be stored here Iterator rowIterator = getModel().iterator(); while (rowIterator.hasNext()) { SnmpTableRow row = (SnmpTableRow) (rowIterator.next()); if ((row.getRowObjectContainer().getRowObjects() == null) || (delConts.contains(row.getRowObjectContainer()))) { delRows.add(row); } } // delete rows Enumeration<SnmpTableRow> delElements = delRows.elements(); while (delElements.hasMoreElements()) { SnmpTableRow row = delElements.nextElement(); removeRow(row.getIndex()); log.debug("Row with index " + row.getIndex() + " removed"); } // add new rows elements = newConts.elements(); while (elements.hasMoreElements()) { RowObjectContainer curCont = elements.nextElement(); SnmpTableRow row = SnmpTableRow.getSnmpTableRow(curCont); addRow(row); log.debug("Row with index " + row.getIndex() + " added"); } }