From 95dfe1165de1604ec7ca33c368011016885670f7 Mon Sep 17 00:00:00 2001 From: le-maire Date: Fri, 3 Nov 2023 11:23:54 +0100 Subject: [PATCH] fix: verrification des matches dans regex pour le status et de la date de soutenance --- .../dto/these/TheseMappee.java | 55 +++++++++++-------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/src/main/java/fr/abes/theses_batch_indexation/dto/these/TheseMappee.java b/src/main/java/fr/abes/theses_batch_indexation/dto/these/TheseMappee.java index b9b9e07..262a921 100644 --- a/src/main/java/fr/abes/theses_batch_indexation/dto/these/TheseMappee.java +++ b/src/main/java/fr/abes/theses_batch_indexation/dto/these/TheseMappee.java @@ -230,27 +230,6 @@ public TheseMappee(Mets mets, List oaiSets) { log.error("impossible de récupérer le getIndicCines pour " + nnt + "(NullPointerException)"); } - - // status - try { - log.info("traitement de status"); - - status = "enCours"; - - final String regex = ".*\\/([0-9,A-Z]*)"; - final String urlperene = mets.getDmdSec().stream().filter(d -> d.getMdWrap().getXmlData().getStarGestion() != null).findFirst().orElse(null) - .getMdWrap().getXmlData().getStarGestion().getTraitements().getSorties().getDiffusion().getUrlPerenne(); - final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE); - final Matcher matcher = pattern.matcher(urlperene); - - if (isNnt(matcher.group(1))) { - status = "soutenue"; - } - } catch (NullPointerException e) { - log.error("PB pour status de " + nnt + "," + e.getMessage()); - } - - // isSoutenue log.info("traitement de isSoutenue"); @@ -265,6 +244,37 @@ public TheseMappee(Mets mets, List oaiSets) { log.error("PB pour isSoutenue de " + nnt + e.getMessage()); } + // status + try { + log.info("traitement de status"); + + status = "soutenue"; + + Optional starGestion = mets.getDmdSec().stream().filter(d -> d.getMdWrap().getXmlData().getStarGestion() != null).findFirst(); + Optional stepGestion = mets.getDmdSec().stream().filter(d -> d.getMdWrap().getXmlData().getStepGestion() != null).findFirst(); + + if (starGestion.isPresent()) { + final String regex = ".*\\/([0-9,A-Z]*)"; + final String urlperene = starGestion.get().getMdWrap().getXmlData().getStarGestion().getTraitements().getSorties().getDiffusion().getUrlPerenne(); + if (urlperene != null) { + final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE); + final Matcher matcher = pattern.matcher(urlperene); + + if (matcher.matches() && isNnt(matcher.group(1))) { + status = "soutenue"; + } else { + status = "enCours"; + } + } + } + if (stepGestion.isPresent()) { + status = "enCours"; + } + + } catch (NullPointerException e) { + log.error("PB pour status de " + nnt + "," + e.getMessage()); + } + // date filtre log.info("traitement de datefiltre "); @@ -338,8 +348,7 @@ public TheseMappee(Mets mets, List oaiSets) { } else if (p.getType().equals("autreType")) { pdto.setType(p.getAutreType()); } - } - catch (Exception eTypePartenaireRecherche) { + } catch (Exception eTypePartenaireRecherche) { log.error("pb lors de la récupération du type du partenaire de recherche pour nnt = " + nnt); }