/**
   * Returns the set of containers (Project configurations) (project_name;config_id) for the project
   * descriptions reported as changed by the ICDescriptionDelta
   *
   * @param delta
   * @return String[] of Configuration Reference IDs
   */
  private String[] getContainerIds(ICDescriptionDelta delta) {
    if (delta == null) return new String[0];
    int deltaKind = delta.getDeltaKind();

    Set<String> cfgIds = new HashSet<String>();
    switch (deltaKind) {
      case ICDescriptionDelta.ADDED:
      case ICDescriptionDelta.REMOVED:
        ICProjectDescription des = (ICProjectDescription) delta.getSetting();
        ICConfigurationDescription[] cfgs = des.getConfigurations();
        if (cfgs.length != 0) {
          for (int i = 0; i < cfgs.length; i++) {
            cfgIds.add(cfgs[i].getId());
          }
          cfgIds.add(ACTIVE_CONFIG_ID);
        }
        break;
      case ICDescriptionDelta.CHANGED:
        ICDescriptionDelta[] children = delta.getChildren();
        collectCfgIds(children, cfgIds);
        if ((delta.getChangeFlags() & ICDescriptionDelta.ACTIVE_CFG) != 0)
          cfgIds.add(ACTIVE_CONFIG_ID);
        break;
    }

    String[] ids = new String[cfgIds.size()];
    if (ids.length != 0) {
      String projName = ((ICProjectDescription) delta.getSetting()).getProject().getName();
      int i = 0;
      for (String config : cfgIds) ids[i++] = createId(projName, config);
    }
    return ids;
  }