if (!canMerge(personne1, personne2, vex))
{
throw vex;
}
final DossierPersonne dossierPersonne = new DossierPersonne();
final Compte compte1 = compteService.findByPersonne(personne1);
final Compte compte2 = compteService.findByPersonne(personne2);
final Compte compteAGarder = getCompteAGarder(compte1, compte2);
if (compteAGarder != null)
{
Compte newCompte = new Compte(compteAGarder);
dossierPersonne.setCompte(newCompte);
Personne personneAGarder = new Personne(compteAGarder.getPersonne());
personneAGarder.setCompte(newCompte);
dossierPersonne.getCompte().setPersonne(personneAGarder);
dossierPersonne.setPersonne(personneAGarder);
}
else
{
final Personne personne = getPersonneAGarder(personne1, personne2);
dossierPersonne.setPersonne(new Personne(personne));
}
final List<InfoSaison> infosSaison1 = infoSaisonService
.findByPersonneSaisonActive(personne1);
final List<InfoSaison> infosSaison2 = infoSaisonService
.findByPersonneSaisonActive(personne2);
dossierPersonne.setInfoSaisons(preMergeInfosSaison(infosSaison1,
infosSaison2));
return dossierPersonne;
}