Last active
November 19, 2020 14:18
-
-
Save Toilal/1da690ffc85f29758677ec1a4d8646f7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public List<DoublonPP> findNombreDoublonPP(boolean nomPatronymique, | |
boolean prenom, boolean dateNaissance, boolean telephoneDomicile, | |
boolean telephonePortable, boolean rue, boolean codePostal) { | |
if (!nomPatronymique && !prenom && !dateNaissance && !telephoneDomicile | |
&& !telephonePortable && !rue && !codePostal) { | |
return null; | |
} | |
try { | |
StringBuilder queryString = new StringBuilder(); | |
queryString.append("SELECT COUNT('x'), "); | |
if (nomPatronymique) { | |
queryString.append("nom "); | |
} | |
if (prenom) { | |
if (nomPatronymique) { | |
queryString.append(", "); | |
} | |
queryString.append("prenom "); | |
} | |
if (dateNaissance) { | |
if (prenom || nomPatronymique) { | |
queryString.append(", "); | |
} | |
queryString.append("date_naissance "); | |
} | |
if (telephoneDomicile) { | |
if (prenom || nomPatronymique || dateNaissance) { | |
queryString.append(", "); | |
} | |
queryString.append("domicile "); | |
} | |
if (telephonePortable) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile) { | |
queryString.append(", "); | |
} | |
queryString.append("mobile "); | |
} | |
if (rue) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile || telephonePortable) { | |
queryString.append(", "); | |
} | |
queryString.append("rue "); | |
} | |
if (codePostal) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile || telephonePortable || rue) { | |
queryString.append(", "); | |
} | |
queryString.append("code_postal "); | |
} | |
queryString.append("FROM (SELECT DISTINCT id_personne_pp, "); | |
if (nomPatronymique) { | |
queryString.append("nom "); | |
} | |
if (prenom) { | |
if (nomPatronymique) { | |
queryString.append(", "); | |
} | |
queryString.append("prenom "); | |
} | |
if (dateNaissance) { | |
if (prenom || nomPatronymique) { | |
queryString.append(", "); | |
} | |
queryString.append("date_naissance "); | |
} | |
if (telephoneDomicile) { | |
if (prenom || nomPatronymique || dateNaissance) { | |
queryString.append(", "); | |
} | |
queryString.append("domicile "); | |
} | |
if (telephonePortable) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile) { | |
queryString.append(", "); | |
} | |
queryString.append("mobile "); | |
} | |
if (rue) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile || telephonePortable) { | |
queryString.append(", "); | |
} | |
queryString.append("rue "); | |
} | |
if (codePostal) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile || telephonePortable || rue) { | |
queryString.append(", "); | |
} | |
queryString.append("code_postal "); | |
} | |
queryString | |
.append("FROM (SELECT pp.id_personne AS id_personne_pp, "); | |
if (nomPatronymique) { | |
queryString.append("pp.nom_patronymique AS nom "); | |
} | |
if (prenom) { | |
if (nomPatronymique) { | |
queryString.append(", "); | |
} | |
queryString.append("pp.prenom AS prenom "); | |
} | |
if (dateNaissance) { | |
if (prenom || nomPatronymique) { | |
queryString.append(", "); | |
} | |
queryString.append("pp.date_naissance AS date_naissance "); | |
} | |
if (telephoneDomicile) { | |
if (prenom || nomPatronymique || dateNaissance) { | |
queryString.append(", "); | |
} | |
queryString | |
.append("coord_domicile.info_coordonnee AS domicile "); | |
} | |
if (telephonePortable) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile) { | |
queryString.append(", "); | |
} | |
queryString.append("coord_mobile.info_coordonnee AS mobile "); | |
} | |
if (rue) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile || telephonePortable) { | |
queryString.append(", "); | |
} | |
queryString.append("IFNULL(adr.voie,adr_porteur.voie) AS rue "); | |
} | |
if (codePostal) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile || telephonePortable || rue) { | |
queryString.append(", "); | |
} | |
queryString | |
.append("IFNULL(adr.code_postal,adr_porteur.code_postal) AS code_postal "); | |
} | |
queryString.append("FROM personne_physique AS pp "); | |
if (rue || codePostal) { | |
queryString | |
.append("LEFT OUTER JOIN adresse adr ON (adr.id_personne=pp.id_personne) " | |
+ "LEFT OUTER JOIN groupe_personne adr_liee " | |
+ "ON (adr_liee.id_personne2=pp.id_personne AND adr_liee.code_nature_lien= '" | |
+ Constants.CODE_NATURE_LIEN_ADRESSE | |
+ "') " | |
+ "LEFT OUTER JOIN adresse adr_porteur ON (adr_porteur.id_personne=adr_liee.id_personne1) "); | |
} | |
if (telephoneDomicile) { | |
queryString | |
.append("LEFT OUTER JOIN coordonnee coord_domicile " | |
+ "ON (coord_domicile.id_personne=pp.id_personne AND coord_domicile.code_coordonnee= '" | |
+ Constants.CODE_COORDONNEE_DOMICILE + "') "); | |
} | |
if (telephonePortable) { | |
queryString | |
.append("LEFT OUTER JOIN coordonnee coord_mobile " | |
+ "ON (coord_mobile.id_personne=pp.id_personne AND coord_mobile.code_coordonnee= '" | |
+ Constants.CODE_COORDONNEE_MOBILE + "') "); | |
} | |
// on récupère l'objet personne pour vérifier que celle-ci n'est pas logiquement supprimée | |
queryString.append("LEFT OUTER JOIN personne p ON (p.id_personne = pp.id_personne ) " + | |
"WHERE p.code_etat_personne != '" + Constants.CODE_ETAT_PERSONNE_SUPPRIMEE + "' "); | |
queryString.append(") AS selection1) AS selection2 "); | |
queryString.append("WHERE ( "); | |
if (nomPatronymique) { | |
queryString.append("nom IS NOT NULL "); | |
} | |
if (prenom) { | |
if (nomPatronymique) { | |
queryString.append("AND "); | |
} | |
queryString.append("prenom IS NOT NULL "); | |
} | |
if (dateNaissance) { | |
if (prenom || nomPatronymique) { | |
queryString.append("AND "); | |
} | |
queryString.append("date_naissance IS NOT NULL "); | |
} | |
if (telephoneDomicile) { | |
if (prenom || nomPatronymique || dateNaissance) { | |
queryString.append("AND "); | |
} | |
queryString.append("domicile IS NOT NULL "); | |
} | |
if (telephonePortable) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile) { | |
queryString.append("AND "); | |
} | |
queryString.append("mobile IS NOT NULL "); | |
} | |
if (rue) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile || telephonePortable) { | |
queryString.append("AND "); | |
} | |
queryString.append("rue IS NOT NULL "); | |
} | |
if (codePostal) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile || telephonePortable || rue) { | |
queryString.append("AND "); | |
} | |
queryString.append("code_postal IS NOT NULL "); | |
} | |
queryString.append(") "); | |
queryString.append("GROUP BY "); | |
if (nomPatronymique) { | |
queryString.append("nom "); | |
} | |
if (prenom) { | |
if (nomPatronymique) { | |
queryString.append(", "); | |
} | |
queryString.append("prenom "); | |
} | |
if (dateNaissance) { | |
if (prenom || nomPatronymique) { | |
queryString.append(", "); | |
} | |
queryString.append("date_naissance "); | |
} | |
if (telephoneDomicile) { | |
if (prenom || nomPatronymique || dateNaissance) { | |
queryString.append(", "); | |
} | |
queryString.append("domicile "); | |
} | |
if (telephonePortable) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile) { | |
queryString.append(", "); | |
} | |
queryString.append("mobile "); | |
} | |
if (rue) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile || telephonePortable) { | |
queryString.append(", "); | |
} | |
queryString.append("rue "); | |
} | |
if (codePostal) { | |
if (prenom || nomPatronymique || dateNaissance | |
|| telephoneDomicile || telephonePortable || rue) { | |
queryString.append(", "); | |
} | |
queryString.append("code_postal "); | |
} | |
queryString.append("HAVING(COUNT('x')>1) "); | |
Query query = entityManager.createNativeQuery(queryString | |
.toString()); | |
//query.setMaxResults(Constants.MAX_SEARCH_RESULTS); | |
List<Object[]> listeTemp = query.getResultList(); | |
// Conversion de l'objet récupéré en sortie en DoublonPP | |
if (!CollectionUtils.isEmpty(listeTemp)) { | |
List<DoublonPP> listeNombreDoublons = new ArrayList<DoublonPP>(); | |
for (Object[] doublon : listeTemp) { | |
DoublonPP doublonPP = new DoublonPP(); | |
doublonPP.setNombreOccurences(((BigInteger) doublon[0]).intValueExact()); | |
if (nomPatronymique) { | |
String nomPP = (String) doublon[1]; | |
doublonPP.setNom(nomPP); | |
} | |
if (prenom) { | |
String prenomPP = null; | |
if (nomPatronymique) { | |
prenomPP = (String) doublon[2]; | |
} else { | |
prenomPP = (String) doublon[1]; | |
} | |
doublonPP.setPrenom(prenomPP); | |
} | |
if (dateNaissance) { | |
Date dateNaissancePP = null; | |
if (nomPatronymique) { | |
if (prenom) { | |
dateNaissancePP = (Date) doublon[3]; | |
} else { | |
dateNaissancePP = (Date) doublon[2]; | |
} | |
} else if (prenom) { | |
dateNaissancePP = (Date) doublon[2]; | |
} else { | |
dateNaissancePP = (Date) doublon[1]; | |
} | |
doublonPP.setDateNaissance(dateNaissancePP); | |
} | |
if (telephoneDomicile) { | |
String domicilePP = null; | |
if (nomPatronymique) { | |
if (prenom) { | |
if (dateNaissance) { | |
domicilePP = (String) doublon[4]; | |
} else { | |
domicilePP = (String) doublon[3]; | |
} | |
} else if (dateNaissance) { | |
domicilePP = (String) doublon[3]; | |
} else { | |
domicilePP = (String) doublon[2]; | |
} | |
} else if (prenom) { | |
if (dateNaissance) { | |
domicilePP = (String) doublon[3]; | |
} else { | |
domicilePP = (String) doublon[2]; | |
} | |
} else if (dateNaissance) { | |
domicilePP = (String) doublon[2]; | |
} else { | |
domicilePP = (String) doublon[1]; | |
} | |
doublonPP.setTelephoneDom(domicilePP); | |
} | |
if (telephonePortable) { | |
String mobilePP = null; | |
if (nomPatronymique) { | |
if (prenom) { | |
if (dateNaissance) { | |
if (telephoneDomicile) { | |
mobilePP = (String) doublon[5]; | |
} else { | |
mobilePP = (String) doublon[4]; | |
} | |
} else { | |
if (telephoneDomicile) { | |
mobilePP = (String) doublon[4]; | |
} else { | |
mobilePP = (String) doublon[3]; | |
} | |
} | |
} else { | |
if (dateNaissance) { | |
if (telephoneDomicile) { | |
mobilePP = (String) doublon[4]; | |
} else { | |
mobilePP = (String) doublon[3]; | |
} | |
} else { | |
if (telephoneDomicile) { | |
mobilePP = (String) doublon[3]; | |
} else { | |
mobilePP = (String) doublon[2]; | |
} | |
} | |
} | |
} else if (prenom) { | |
if (dateNaissance) { | |
if (telephoneDomicile) { | |
mobilePP = (String) doublon[4]; | |
} else { | |
mobilePP = (String) doublon[3]; | |
} | |
} else { | |
if (telephoneDomicile) { | |
mobilePP = (String) doublon[3]; | |
} else { | |
mobilePP = (String) doublon[2]; | |
} | |
} | |
} else if (dateNaissance) { | |
if (telephoneDomicile) { | |
mobilePP = (String) doublon[3]; | |
} else { | |
mobilePP = (String) doublon[2]; | |
} | |
} else if (telephoneDomicile) { | |
mobilePP = (String) doublon[2]; | |
} else { | |
mobilePP = (String) doublon[1]; | |
} | |
doublonPP.setTelephonePort(mobilePP); | |
} | |
if (rue) { | |
String ruePP = null; | |
if (nomPatronymique) { | |
if (prenom) { | |
if (dateNaissance) { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
ruePP = (String) doublon[6]; | |
} else { | |
ruePP = (String) doublon[5]; | |
} | |
} else { | |
if (telephonePortable) { | |
ruePP = (String) doublon[5]; | |
} else { | |
ruePP = (String) doublon[4]; | |
} | |
} | |
} else { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
ruePP = (String) doublon[5]; | |
} else { | |
ruePP = (String) doublon[4]; | |
} | |
} else { | |
if (telephonePortable) { | |
ruePP = (String) doublon[4]; | |
} else { | |
ruePP = (String) doublon[3]; | |
} | |
} | |
} | |
} else { | |
if (dateNaissance) { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
ruePP = (String) doublon[5]; | |
} else { | |
ruePP = (String) doublon[4]; | |
} | |
} else { | |
if (telephonePortable) { | |
ruePP = (String) doublon[4]; | |
} else { | |
ruePP = (String) doublon[3]; | |
} | |
} | |
} else { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
ruePP = (String) doublon[4]; | |
} else { | |
ruePP = (String) doublon[3]; | |
} | |
} else { | |
if (telephonePortable) { | |
ruePP = (String) doublon[3]; | |
} else { | |
ruePP = (String) doublon[2]; | |
} | |
} | |
} | |
} | |
} else { | |
if (prenom) { | |
if (dateNaissance) { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
ruePP = (String) doublon[5]; | |
} else { | |
ruePP = (String) doublon[4]; | |
} | |
} else { | |
if (telephonePortable) { | |
ruePP = (String) doublon[4]; | |
} else { | |
ruePP = (String) doublon[3]; | |
} | |
} | |
} else { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
ruePP = (String) doublon[4]; | |
} else { | |
ruePP = (String) doublon[3]; | |
} | |
} else { | |
if (telephonePortable) { | |
ruePP = (String) doublon[3]; | |
} else { | |
ruePP = (String) doublon[2]; | |
} | |
} | |
} | |
} else { | |
if (dateNaissance) { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
ruePP = (String) doublon[4]; | |
} else { | |
ruePP = (String) doublon[3]; | |
} | |
} else { | |
if (telephonePortable) { | |
ruePP = (String) doublon[3]; | |
} else { | |
ruePP = (String) doublon[2]; | |
} | |
} | |
} else { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
ruePP = (String) doublon[3]; | |
} else { | |
ruePP = (String) doublon[2]; | |
} | |
} else { | |
if (telephonePortable) { | |
ruePP = (String) doublon[2]; | |
} else { | |
ruePP = (String) doublon[1]; | |
} | |
} | |
} | |
} | |
} | |
doublonPP.setRue(ruePP); | |
} | |
if (codePostal) { | |
String codePostalPP = null; | |
if (nomPatronymique) { | |
if (prenom) { | |
if (dateNaissance) { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[7]; | |
} else { | |
codePostalPP = (String) doublon[6]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[6]; | |
} else { | |
codePostalPP = (String) doublon[5]; | |
} | |
} | |
} else { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[6]; | |
} else { | |
codePostalPP = (String) doublon[5]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[5]; | |
} else { | |
codePostalPP = (String) doublon[4]; | |
} | |
} | |
} | |
} else { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[6]; | |
} else { | |
codePostalPP = (String) doublon[5]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[5]; | |
} else { | |
codePostalPP = (String) doublon[4]; | |
} | |
} | |
} else { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[5]; | |
} else { | |
codePostalPP = (String) doublon[4]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[4]; | |
} else { | |
codePostalPP = (String) doublon[3]; | |
} | |
} | |
} | |
} | |
} else { | |
if (dateNaissance) { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[6]; | |
} else { | |
codePostalPP = (String) doublon[5]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[5]; | |
} else { | |
codePostalPP = (String) doublon[4]; | |
} | |
} | |
} else { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[5]; | |
} else { | |
codePostalPP = (String) doublon[4]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[4]; | |
} else { | |
codePostalPP = (String) doublon[3]; | |
} | |
} | |
} | |
} else { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[5]; | |
} else { | |
codePostalPP = (String) doublon[4]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[4]; | |
} else { | |
codePostalPP = (String) doublon[3]; | |
} | |
} | |
} else { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[4]; | |
} else { | |
codePostalPP = (String) doublon[3]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[3]; | |
} else { | |
codePostalPP = (String) doublon[2]; | |
} | |
} | |
} | |
} | |
} | |
} else { | |
if (prenom) { | |
if (dateNaissance) { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[6]; | |
} else { | |
codePostalPP = (String) doublon[5]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[5]; | |
} else { | |
codePostalPP = (String) doublon[4]; | |
} | |
} | |
} else { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[5]; | |
} else { | |
codePostalPP = (String) doublon[4]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[4]; | |
} else { | |
codePostalPP = (String) doublon[3]; | |
} | |
} | |
} | |
} else { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[5]; | |
} else { | |
codePostalPP = (String) doublon[4]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[4]; | |
} else { | |
codePostalPP = (String) doublon[3]; | |
} | |
} | |
} else { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[4]; | |
} else { | |
codePostalPP = (String) doublon[3]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[3]; | |
} else { | |
codePostalPP = (String) doublon[2]; | |
} | |
} | |
} | |
} | |
} else { | |
if (dateNaissance) { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[5]; | |
} else { | |
codePostalPP = (String) doublon[4]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[4]; | |
} else { | |
codePostalPP = (String) doublon[3]; | |
} | |
} | |
} else { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[4]; | |
} else { | |
codePostalPP = (String) doublon[3]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[3]; | |
} else { | |
codePostalPP = (String) doublon[2]; | |
} | |
} | |
} | |
} else { | |
if (telephoneDomicile) { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[4]; | |
} else { | |
codePostalPP = (String) doublon[3]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[3]; | |
} else { | |
codePostalPP = (String) doublon[2]; | |
} | |
} | |
} else { | |
if (telephonePortable) { | |
if (rue) { | |
codePostalPP = (String) doublon[3]; | |
} else { | |
codePostalPP = (String) doublon[2]; | |
} | |
} else { | |
if (rue) { | |
codePostalPP = (String) doublon[2]; | |
} else { | |
codePostalPP = (String) doublon[1]; | |
} | |
} | |
} | |
} | |
} | |
} | |
doublonPP.setCodePostal(codePostalPP); | |
} | |
listeNombreDoublons.add(doublonPP); | |
} | |
return listeNombreDoublons; | |
} | |
return null; | |
} finally { | |
entityManager.close(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment