private void loadListBreakDownElements(ActionContext context) throws Exception {
    logger.debug("AdminAction");
    Collection dbData = null;
    Collection listBreakDownElementsItems = null;
    BreakdownElementItem breakDownElementItem = null;

    // Initialisation du form si celui-ci est nul
    if (context.form() == null) {
      context.session().setAttribute(context.mapping().getAttribute(), new AdminForm());
    }

    // R?cup?ration du form bean n?cessaire pour fournir les informations ? la JSP
    AdminForm adminForm = (AdminForm) context.form();
    dbData = BreakdownElementManager.getInstance().getList(BusinessConstantes.TABLE_BREAKDOWN);

    // Constitue une liste de BreakDownElementItem ? partir des donn?es stock?es en BD
    Iterator iter = dbData.iterator();
    listBreakDownElementsItems = new ArrayList();
    HashMap breakDownElementsMap = new HashMap();

    while (iter.hasNext()) {
      BreakdownElement breakdownElement = (BreakdownElement) iter.next();
      breakDownElementItem = new BreakdownElementItem();

      breakDownElementItem.setId(breakdownElement.getId().toString());
      breakDownElementItem.setPrefix(breakdownElement.getPrefix());
      breakDownElementItem.setName(breakdownElement.getName());
      breakDownElementItem.setDetails(breakdownElement.getDetails());
      breakDownElementItem.setStartDate(breakdownElement.getStartDate());
      breakDownElementItem.setEndDate(breakdownElement.getEndDate());
      breakDownElementItem.setKind(breakdownElement.getKind().getName());

      if (breakdownElement.getEndDate() != null) {
        // Le projet est finie dons certaines options seront inaccessibles
        breakDownElementItem.setFinished(true);
      } else {
        breakDownElementItem.setFinished(false);
      }
      listBreakDownElementsItems.add(breakDownElementItem);
      // Construction de la hash map stockant la liste des BreakDownElements
      breakDownElementsMap.put(breakdownElement.getId(), breakdownElement);
    }

    // Conversion de la liste en tableau d'items
    DisplayObject[] result = new BreakdownElementItem[listBreakDownElementsItems.size()];
    listBreakDownElementsItems.toArray(result);

    // Cr?ation de la liste initialis?e avec les valeurs ? afficher
    ListBreakDownElementsModel model = new ListBreakDownElementsModel(result);
    adminForm.setDataModelListBreakDownElements(model);

    // Sauvegarde d'une HashMap stockant la liste des BreakDownElements
    context.session().setAttribute(PresentationConstantes.KEY_BDE_MAP, breakDownElementsMap);
  }
  /**
   * Terminer un projet
   *
   * @param context
   * @param id : identifiant du projet
   * @throws IOException
   * @throws ServletException
   */
  public void listBreakDownElements_onFinish(ControlActionContext context, String id)
      throws IOException, ServletException {
    try {
      BreakdownElement bde =
          BreakdownElementManager.getInstance()
              .getBreakDownElementById(new Integer(Integer.parseInt(id)));
      if (bde.getEndDate() == null) {
        bde.setEndDate(new Date());

        // On met à jour le projet
        BreakdownElementManager.getInstance().update(bde);

        // On termine toutes les activités sans fin
        Collection activities =
            ActivityManager.getInstance().getAllActivitiesByBDE(new Integer(Integer.parseInt(id)));
        for (Iterator i = activities.iterator(); i.hasNext(); ) {
          Activity a = ((Activity) i.next());
          if (a.getOnGoing().equals(BusinessConstantes.OUI)) {
            a.process();
            // Met a jour en BD l'etat de l'activite
            ActivityManager.getInstance().update(a);
          }
        }
      }
    } catch (DoublonException e) {
      context.addGlobalError("errors.persistance.doublon");
      context.forwardByName(PresentationConstantes.FORWARD_ERROR);
    } catch (NumberFormatException e) {
      context.addGlobalError("errors.persistance.global");
      context.forwardByName(PresentationConstantes.FORWARD_ERROR);
    } catch (PersistanceException e) {
      context.addGlobalError("errors.persistance.global");
      context.forwardByName(PresentationConstantes.FORWARD_ERROR);
    }
    context.forwardByName(PresentationConstantes.FORWARD_FINISH_BREAKDOWN);
  }
  /**
   * Cette m?thode est appel?e si l'aministeur clique sur l'icone de supprimer un projet
   *
   * @param context contexte d'execution de la servlet
   * @param column id du projet ? supprimer
   * @throws Exception Indique qu'une erreur s'est produite pendant le traitement
   */
  public void listBreakDownElements_onDelete(ControlActionContext context, String id)
      throws IOException, ServletException {
    HashMap bdesMap = (HashMap) context.session().getAttribute(PresentationConstantes.KEY_BDE_MAP);

    BreakdownElement bde = (BreakdownElement) bdesMap.get(new Integer(Integer.parseInt(id)));

    try {
      BreakdownElementManager.getInstance().delete(bde);
      context.addGlobalMessage("admin.listBde.confirmationDel");
      context.forwardByName(PresentationConstantes.FORWARD_DELETE_BREAKDOWN);
    } catch (PersistanceException e) {
      context.addGlobalError("errors.persistance.delete");
      context.forwardByName(PresentationConstantes.FORWARD_ERROR);
    } catch (ForeignKeyException e) {
      context.addGlobalError("errors.persistance.delete");
      context.forwardByName(PresentationConstantes.FORWARD_ERROR);
    }
  }