/**
  * Sélectionne la ligne et redirection vers le sous écran de l'édition d'une séance.
  *
  * @return outcome.
  */
 public String selectionner() {
   log.debug("----------------- MODIFIER -----------------");
   ContexteUtils.getContexteOutilControl().mettreAJourObjet(IDFORM, form);
   ContexteUtils.getContexteOutilControl()
       .mettreAJourObjet(EnseignementForm.class.getName(), enseignementControl.getForm());
   ContexteUtils.getContexteOutilControl()
       .mettreAJourObjet(ClasseGroupeControl.class.getName(), classeGroupeControl.getForm());
   form.getResultatSelectionne().setMode(AbstractForm.MODE_MODIF);
   return NavigationUtils.navigationVersSousEcranAvecSauvegardeDonnees(
       Outil.AJOUT_SEANCE,
       RechercheSeanceControl.class.getName(),
       ObjectUtils.clone(form.getResultatSelectionne()));
 }
  /** Charge la liste des séquences. */
  public void getListeSequenceSelectionnee() {

    final UtilisateurDTO utilisateurDTO =
        ContexteUtils.getContexteUtilisateur().getUtilisateurDTO();
    EnseignantDTO enseignant = new EnseignantDTO();
    enseignant.setId(utilisateurDTO.getUserDTO().getIdentifiant());

    sequenceControl.chargerListeSequence(
        enseignementControl.getForm().getEnseignementSelectionne(),
        enseignant,
        classeGroupeControl.getForm().getGroupeClasseSelectionne());
  }
  /** Appel métier de recherche des séquences en fonction de potentiels critères. */
  public void rechercher() {
    log.debug("----------------- RECHERCHE -----------------");
    if (null != enseignementControl.getForm().getEnseignementSelectionne()) {
      form.getCriteres()
          .setCodeEnseignement(
              enseignementControl.getForm().getEnseignementSelectionne().getCode());
    }

    if (sequenceControl.getForm().getSequenceSelectionnee() != null) {
      form.getCriteres()
          .setCodeSequence(sequenceControl.getForm().getSequenceSelectionnee().getCode());
    }
    final Integer idEnseignant =
        ContexteUtils.getContexteUtilisateur().getUtilisateurDTO().getUserDTO().getIdentifiant();
    form.getCriteres().setIdEnseignant(idEnseignant);
    final Integer idEtablissement =
        ContexteUtils.getContexteUtilisateur().getUtilisateurDTO().getIdEtablissement();
    form.getCriteres().setIdEtablissement(idEtablissement);

    form.getCriteres()
        .setIdEnseignantConnecte(
            ContexteUtils.getContexteUtilisateur()
                .getUtilisateurDTOConnecte()
                .getUserDTO()
                .getIdentifiant());

    form.getCriteres()
        .setGroupeClasseSelectionne(classeGroupeControl.getForm().getGroupeClasseSelectionne());

    try {
      final ResultatDTO<List<ResultatRechercheSeanceDTO>> listeSeanceDTO =
          seanceService.findSeance(form.getCriteres());

      final List<ResultatRechercheSeanceDTO> resultList = listeSeanceDTO.getValeurDTO();
      form.setListeSeance(org.crlr.utils.CollectionUtils.cloneCollection(resultList));
    } catch (MetierException e) {
      resetListeSeance();
      log.debug("{0}", e.getMessage());
    }
  }
  @PostConstruct
  public void onLoad() {
    // permet de faire un seule appel métier durant le cycle de l'outil.
    // valable pour les outils dont les paramètres ne sont pas saisies par l'utilisateur.

    enseignementControl.setListener(this);
    classeGroupeControl.setListener(this);
    sequenceControl.setListener(this);

    final RechercheSeanceForm formSave =
        (RechercheSeanceForm)
            ContexteUtils.getContexteOutilControl().recupererEtSupprimerObjet(IDFORM);
    if (formSave == null) {
      rechercherEnseignement();
      reset();
    } else {
      form = formSave;
      enseignementControl.setForm(
          (EnseignementForm)
              ContexteUtils.getContexteOutilControl()
                  .recupererEtSupprimerObjet(EnseignementForm.class.getName()));
      classeGroupeControl.setForm(
          (ClasseGroupeForm)
              ContexteUtils.getContexteOutilControl()
                  .recupererEtSupprimerObjet(ClasseGroupeControl.class.getName()));

      this.rechercher();
    }

    final ConteneurMessage conteneurMessageAcquittement =
        (ConteneurMessage)
            ContexteUtils.getContexteOutilControl()
                .recupererEtSupprimerObjet(AbstractForm.RETOUR_ACQUITTEMENT);
    if ((conteneurMessageAcquittement != null) && (conteneurMessageAcquittement.size() > 0)) {
      MessageUtils.addMessages(conteneurMessageAcquittement, null, getClass());
    }

    getListeSequenceSelectionnee();
  }
 /**
  * Verifie si l'utilisateur connecte est en lecture seul ou en modif sur cette seance. Utilisée
  * uniquement au niveau des IHM
  *
  * @return true / false
  */
 public Boolean getReadOnly() {
   final UtilisateurDTO utilisateurDTO =
       ContexteUtils.getContexteUtilisateur().getUtilisateurDTO();
   return !(this.enseignantDTO == null
       || utilisateurDTO.getUserDTO().getIdentifiant().equals(this.enseignantDTO.getId()));
 }