private void addSelections(boolean all) {

    List<Object[]> selected = new ArrayList<Object[]>();
    int[] rows;

    if (all) {
      int rowCount = individualsSTP.getTable().getModel().getRowCount();
      rows = new int[rowCount];
      for (int i = 0; i < rowCount; i++) {
        rows[i] = i;
      }
    } else {
      rows = individualsSTP.getTable().getSelectedRows();
    }

    for (int r : rows) {
      int realRow = individualsSTP.getActualRowAt(r);
      Object[] o = individualsRetriever.getIndividuals().get(realRow);
      selected.add(o);
    }

    for (int i : rows) {
      selectedRows.add(individualsSTP.getActualRowAt(i));
    }

    for (Object[] s : selected) {
      selectedHospitalIDs.add(s[INDEX_OF_HOSPITAL_ID].toString());
    }

    refreshSelectionIndicator();
  }
 public Set<String> getDNAIDsOfSelectedIndividuals() {
   Set<String> ids = new HashSet<String>();
   for (int i : selectedRows) {
     String dnaID = (String) individualsRetriever.getIndividuals().get(i)[INDEX_OF_DNA_IDS];
     ids.add(dnaID);
   }
   return ids;
 }
 public Set<String> getInverseOfHospitalIDsOfSelectedIndividuals() {
   List<Object[]> allRows = individualsRetriever.getIndividuals();
   Set<String> results = new HashSet<String>();
   Set<String> selected = getHospitalIDsOfSelectedIndividuals();
   for (Object[] row : allRows) {
     String id = (String) row[INDEX_OF_HOSPITAL_ID];
     if (!selected.contains(id)) {
       results.add(id);
     }
   }
   return results;
 }
  public void setSelectedIndividuals(Set<String> s) {
    selectedRows.removeAll(selectedRows);
    selectedHospitalIDs = s;
    hasMadeSelections = true;

    for (String arbitraryHostpitalID : s) {
      int rowNumber = 0;
      List<Object[]> individuals = individualsRetriever.getIndividuals();
      for (Object[] inOrderRow : individuals) {
        if (inOrderRow[INDEX_OF_HOSPITAL_ID].equals(arbitraryHostpitalID)) {
          selectedRows.add(rowNumber);
        }
        rowNumber++;
      }
    }
    refreshSelectionIndicator();
  }