コード例 #1
0
ファイル: SnmpTable.java プロジェクト: max90727/fosstrak
  /**
   * 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");
    }
  }