/**
   * Cette m?thode est appel?e si l'aministeur clique sur l'icone de supprimer un utilisateur
   *
   * @param context contexte d'execution de la servlet
   * @param column id de l'utilisateur ? supprimer
   * @throws Exception Indique qu'une erreur s'est produite pendant le traitement
   */
  public void listUsers_onDelete(ControlActionContext context, String id)
      throws IOException, ServletException {

    HashMap usersMap =
        (HashMap) context.session().getAttribute(PresentationConstantes.KEY_USERS_MAP);

    User user = (User) usersMap.get(new Integer(Integer.parseInt(id)));

    User userCourant = null;

    userCourant = (User) context.session().getAttribute(PresentationConstantes.KEY_USER);

    // Un utilisateur ne peut pas supprimer son compte
    if (((Integer) userCourant.getId()).compareTo(new Integer(id)) == 0) {
      context.addGlobalError("errors.admin.deleteCurrentUser");
      context.forwardByName(PresentationConstantes.FORWARD_ERROR);
      return;
    }

    try {
      UserManager.getInstance().delete(user);
      context.addGlobalMessage("admin.listUsers.confirmationDel");
      context.forwardByName(PresentationConstantes.FORWARD_DELETE_USER);
    } catch (NumberFormatException e) {
      context.addGlobalError("errors.persistance.delete");
      context.forwardByName(PresentationConstantes.FORWARD_ERROR);
    } 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);
    }
  }
  /**
   * @param context
   * @throws Exception
   */
  private void loadListUsers(ActionContext context) throws Exception {
    logger.debug("AdminAction");

    Collection dbData = null;
    Collection listUsersItems = null;
    UserItem userItem = 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();

    // R?cup?ration de la liste des utilisateurs
    dbData = UserManager.getInstance().getList(BusinessConstantes.TABLE_USER);

    // Constitue une liste d'UserItem ? partir des donn?es stock?es en BD
    Iterator iter = dbData.iterator();
    listUsersItems = new ArrayList();
    HashMap usersMap = new HashMap();
    while (iter.hasNext()) {
      User user = (User) iter.next();
      userItem = new UserItem();

      userItem.setId(user.getId().toString());
      userItem.setFirstName(user.getFirstName());
      userItem.setLastName(user.getLastName());
      userItem.setLogin(user.getLogin());
      userItem.setRole(user.getRole().getCode());

      listUsersItems.add(userItem);
      // Construction de la hash map stockant la liste des utilisateurs
      usersMap.put(user.getId(), user);
    }

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

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

    // Sauvegarde d'une HashMap stockant la liste des utilisateurs
    context.session().setAttribute(PresentationConstantes.KEY_USERS_MAP, usersMap);
  }