Skip to content

Commit

Permalink
add: ajout try finally pour libérer le mutex
Browse files Browse the repository at this point in the history
  • Loading branch information
slemaire777 committed Jun 6, 2024
1 parent c9dbab7 commit 485bc22
Showing 1 changed file with 58 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -135,80 +135,83 @@ public TheseModel process(TheseModel theseModel) throws Exception {
mutex.unlock();
}

if (!dbService.estPresentDansTableDocument(theseModel.getIdDoc())) {
dbService.supprimerTheseATraiter(theseModel.getId(), TableIndexationES.indexation_es_personne);
return theseModel;
}
try {
if (!dbService.estPresentDansTableDocument(theseModel.getIdDoc())) {
dbService.supprimerTheseATraiter(theseModel.getId(), TableIndexationES.indexation_es_personne);
return theseModel;
}

// Rechercher les personnes qui ont cette thèse dans leur list et suppimer les personnes sans nnt
elasticSearchUtils.deletePersonneModelESSansPPN(theseModel.getId());
// Rechercher les personnes qui ont cette thèse dans leur list et suppimer les personnes sans nnt
elasticSearchUtils.deletePersonneModelESSansPPN(theseModel.getId());

log.info("fin suppression");
// sortir la liste des personnes de la thèse
List<PersonneModelES> personnesTefList = getPersonnesModelESFromTef(theseModel.getId());
log.info("fin suppression");
// sortir la liste des personnes de la thèse
List<PersonneModelES> personnesTefList = getPersonnesModelESFromTef(theseModel.getId());

log.info("1");
List<PersonneModelES> personneModelESList = new ArrayList<>(elasticSearchUtils.getPersonnesModelESAvecId(theseModel.getId()))
.stream().map(PersonneModelES::new).filter(PersonneModelES::isHas_idref).collect(Collectors.toList());
log.info("1");
List<PersonneModelES> personneModelESList = new ArrayList<>(elasticSearchUtils.getPersonnesModelESAvecId(theseModel.getId()))
.stream().map(PersonneModelES::new).filter(PersonneModelES::isHas_idref).collect(Collectors.toList());

log.info("fin recupération");
//personneModelESAvecIds.addAll(personnesTef);
//personnesTef.addAll(personneModelESAvecIds);
log.info("fin recupération");
//personneModelESAvecIds.addAll(personnesTef);
//personnesTef.addAll(personneModelESAvecIds);

List<PersonneModelES> personneModelESEtTef = new ArrayList<>(personneModelESList);
List<PersonneModelES> personneModelESEtTef = new ArrayList<>(personneModelESList);

// Dédoublonage des personnes en gardant celles de ES
for (PersonneModelES personneTef : personnesTefList) {
// Dédoublonage des personnes en gardant celles de ES
for (PersonneModelES personneTef : personnesTefList) {

if (personneModelESList.stream().noneMatch(p -> p.getPpn().equals(personneTef.getPpn()))) {
personneModelESEtTef.add(personneTef);
if (personneModelESList.stream().noneMatch(p -> p.getPpn().equals(personneTef.getPpn()))) {
personneModelESEtTef.add(personneTef);
}
}
}

log.info("2 début traitement");
log.info("2 début traitement");

Optional<TheseModelES> theseModelES = Optional.empty();
Optional<TheseModelES> theseModelES = Optional.empty();

for (PersonneModelES personneES : personneModelESEtTef) {
for (PersonneModelES personneES : personneModelESEtTef) {

Optional<PersonneModelES> personneModelES;
if (personneES.isHas_idref()) {
personneModelES = personnesTefList.stream().filter(p -> p.isHas_idref() && p.getPpn().equals(personneES.getPpn())).findFirst();
} else {
// si pas de idref, construction des personnes (sans idref); pas sur que ca fonctionne avec NomPrenom car si on change de nomPrenom
personneModelES = personnesTefList.stream().filter(p -> p.getNom().equals(personneES.getNom()) && p.getPrenom().equals(personneES.getPrenom())).findFirst();
}
if (personneModelES.isPresent()) {
theseModelES = personneModelES.get().getTheses().stream().findFirst();
}
Optional<PersonneModelES> personneModelES;
if (personneES.isHas_idref()) {
personneModelES = personnesTefList.stream().filter(p -> p.isHas_idref() && p.getPpn().equals(personneES.getPpn())).findFirst();
} else {
// si pas de idref, construction des personnes (sans idref); pas sur que ca fonctionne avec NomPrenom car si on change de nomPrenom
personneModelES = personnesTefList.stream().filter(p -> p.getNom().equals(personneES.getNom()) && p.getPrenom().equals(personneES.getPrenom())).findFirst();
}
if (personneModelES.isPresent()) {
theseModelES = personneModelES.get().getTheses().stream().findFirst();
}

// Enlever la thèse en cours
personneES.getTheses().removeIf(t -> t.getId().equals(theseModel.getIdSujet()) || t.getId().equals(theseModel.getNnt()));
personneES.getTheses_id().removeIf(t -> t.equals(theseModel.getIdSujet()) || t.equals(theseModel.getNnt()));
// Enlever la thèse en cours
personneES.getTheses().removeIf(t -> t.getId().equals(theseModel.getIdSujet()) || t.getId().equals(theseModel.getNnt()));
personneES.getTheses_id().removeIf(t -> t.equals(theseModel.getIdSujet()) || t.equals(theseModel.getNnt()));

if (theseModelES.isPresent()) {
// Ajout de la thèse en cours
personneES.getTheses().add(theseModelES.get());
personneES.getTheses_id().add(theseModelES.get().getId());
if (theseModelES.isPresent()) {
// Ajout de la thèse en cours
personneES.getTheses().add(theseModelES.get());
personneES.getTheses_id().add(theseModelES.get().getId());
}
}
}

log.info("5");

elasticSearchUtils.indexerPersonnesDansEs(personneModelESEtTef, elasticConfig);
log.info("5");

log.info("6 fin traitement");
elasticSearchUtils.indexerPersonnesDansEs(personneModelESEtTef, elasticConfig);

try {
mutex.lock();
thesesEnTraitement.removeAll(nntLies);
} catch (Exception e) {
for (Object nnt : nntLies) {
log.error("nnt lies " + nnt);
log.info("6 fin traitement");
}
finally {
try {
mutex.lock();
thesesEnTraitement.removeAll(nntLies);
} catch (Exception e) {
for (Object nnt : nntLies) {
log.error("nnt lies " + nnt);
}
log.error("removeall de nntlies ne fonctionne pas : " + e);
} finally {
mutex.unlock();
}
log.error("removeall de nntlies ne fonctionne pas : " + e);
} finally {
mutex.unlock();
}

dbService.supprimerTheseATraiter(theseModel.getId(), TableIndexationES.indexation_es_personne);
Expand Down

0 comments on commit 485bc22

Please sign in to comment.