/** Charge les personnes pour la fusion. */
  private void chargerPersonnesFusion() {
    LoadingPopup.afficher(
        new LoadingPopupConfiguration(presenterConstants.chargementPersonnesFusionEnCours()));
    final AsyncCallback<ParametresFusionModel> asyncCallback =
        new AsyncCallback<ParametresFusionModel>() {
          @Override
          public void onFailure(Throwable caught) {
            LoadingPopup.stopAll();
            ErrorPopup.afficher(new ErrorPopupConfiguration(caught));
          }

          @Override
          public void onSuccess(ParametresFusionModel result) {
            LoadingPopup.stop();
            personneSourceEncours = result.getPersonneSource();
            personneCibleEnCours = result.getPersonneCible();
            view.chargerPersonnes(personneSourceEncours, personneCibleEnCours);
          }
        };
    fusionRpcService.preparerFusion(idPersonne1, idPersonne2, asyncCallback);
  }
  /** Vailde la fusion. */
  private void validerFusion() {
    LoadingPopup.afficher(
        new LoadingPopupConfiguration(presenterConstants.validationFusionEnCours()));
    // Récupération de la personne source et de la personne cible
    final ParametresFusionModel parametresFusion = new ParametresFusionModel();
    parametresFusion.setPersonneSource(personneSourceEncours);
    parametresFusion.setPersonneCible(personneCibleEnCours);

    // Appel asynchrone
    final AsyncCallback<Object> asyncCallback =
        new AsyncCallback<Object>() {

          @Override
          public void onFailure(Throwable caught) {
            LoadingPopup.stopAll();
            if (caught instanceof ControleIntegriteFusionExceptionGwt) {
              afficherMessageErreurControleIntegrite((ControleIntegriteFusionExceptionGwt) caught);
            } else {
              ErrorPopup.afficher(new ErrorPopupConfiguration(caught));
            }
          }

          @Override
          public void onSuccess(Object result) {
            LoadingPopup.stop();
            // Envoi d'un évènement dans le bus pour mettre à jour la sélection de doublon
            fireEventLocalBus(new MajSelectionDoublonsEvent());
            // Envoi d'un évènement pour indiquer la fin de la fusion des deux personnes
            fireEventLocalBus(
                new FinFusionPersonnesEvent(
                    personneSourceEncours.getIdentifiant(), personneCibleEnCours.getIdentifiant()));

            // Initialisation de la vue de la fusion
            view.initVue();
          }
        };
    fusionRpcService.validerFusion(parametresFusion, asyncCallback);
  }