Skip to content

Commit

Permalink
FEAT : CDE-368-modifier-kafka-2-sudoc :
Browse files Browse the repository at this point in the history
     - ajout d'une liste de messages d'erreurs dans WorkInProgress.java
     - envoi du mail uniquement lorsque tous les messages sont lus dans KbartListener.java
     - simplification de la méthode d'envoi du mail dans EmailService.java
  • Loading branch information
EryneKL committed Feb 26, 2024
1 parent b7ddda2 commit 7f77970
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 19 deletions.
15 changes: 13 additions & 2 deletions src/main/java/fr/abes/kafkatosudoc/kafka/KbartListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ public void listenKbartToCreateFromKafka(ConsumerRecord<String, LigneKbartConnec
if (this.workInProgressMap.get(filename).getCurrentNbLines().equals(this.workInProgressMap.get(filename).getNbLinesTotal())) {
log.debug("Traitement des notices existantes dans le Sudoc");
traiterPackageDansSudoc(this.workInProgressMap.get(filename).getListeNotices(), filename);
// TODO traiter l'envoi du mail contenant les erreurs relevées
emailService.sendErrorsMessage(this.workInProgressMap.get(filename).getListErrorMessages(), filename);
this.workInProgressMap.remove(filename);
}

Expand Down Expand Up @@ -132,10 +134,19 @@ private void traiterPackageDansSudoc(List<LigneKbartConnect> listeNotices, Strin
}
} catch (CBSException e) {
log.error(e.getMessage(), e.getCause());
emailService.sendErrorMailAuthentification(filename, packageKbartDto, e);
this.workInProgressMap.get(filename).addErrorMessage("Une erreur s'est produite lors de l'authentification sur le CBS. Provider : " + packageKbartDto.getProvider() +
" Package : " + packageKbartDto.getPackageName() +
" Date : " + packageKbartDto.getDatePackage() + " Message : " + e.getMessage());
// TODO supprimer ce code mort
// emailService.sendErrorMailAuthentification(filename, packageKbartDto, e);
} catch (IllegalDateException e) {
log.error("Erreur lors du traitement du package dans le Sudoc : format de date incorrect", e.getCause());
emailService.sendErrorMailDate(filename, packageKbartDto, e);
this.workInProgressMap.get(filename).addErrorMessage("Une erreur s'est produite lors du traitement du package dans le Sudoc. Provider : " + packageKbartDto.getProvider() +
" Package : " + packageKbartDto.getPackageName() +
" Date : " + packageKbartDto.getDatePackage() +
" Format de date incorrect. Message : " + e.getMessage());
// TODO supprimer ce code mort
// emailService.sendErrorMailDate(filename, packageKbartDto, e);
} finally {
try {
service.disconnect();
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/fr/abes/kafkatosudoc/kafka/WorkInProgress.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,13 @@ public class WorkInProgress {

private Integer nbLinesTotal;

private List<String> listErrorMessages;

public WorkInProgress() {
this.listeNotices = new ArrayList<>();
this.currentNbLines = 0;
this.nbLinesTotal = -1;
this.listErrorMessages = new ArrayList<>();
}

public void addNotice(LigneKbartConnect notice) {
Expand All @@ -30,4 +33,8 @@ public void addNotice(LigneKbartConnect notice) {
public void incrementCurrentNbLignes() {
this.currentNbLines++;
}

public void addErrorMessage(String errorMessage) {
this.listErrorMessages.add(errorMessage);
}
}
43 changes: 26 additions & 17 deletions src/main/java/fr/abes/kafkatosudoc/service/EmailService.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.List;

@Slf4j
@Service
Expand All @@ -47,29 +48,37 @@ public void sendErrorMailConnect(String filename, LigneKbartConnect kbart, Excep
log.info("L'email a été correctement envoyé.");
}

public void sendErrorMailDate(String filename, PackageKbartDto packageKbartDto, IllegalDateException e) {
String body = "Une erreur s'est produite lors du traitement du package dans le Sudoc. Provider : " + packageKbartDto.getProvider() +
" Package : " + packageKbartDto.getPackageName() +
" Date : " + packageKbartDto.getDatePackage() +
" Format de date incorrect. Message : " + e.getMessage();
public void sendErrorsMessage(List<String> listErrorsMessages, String filename) {
// Création du mail
String requestJson = mailToJSON(this.recipient, "[CONVERGENCE]["+env.toUpperCase()+"] Erreur lors du traitement sur le fichier " + filename, body);
String requestJson = mailToJSON(this.recipient, "[CONVERGENCE]["+env.toUpperCase()+"] Erreur lors du traitement sur le fichier " + filename, String.valueOf(listErrorsMessages));
// Envoi du message par mail
sendMail(requestJson);
log.info("L'email a été correctement envoyé.");
}

public void sendErrorMailAuthentification(String filename, PackageKbartDto packageKbartDto, CBSException e) {
String body = "Une erreur s'est produite lors de l'authentification sur le CBS. Provider : " + packageKbartDto.getProvider() +
" Package : " + packageKbartDto.getPackageName() +
" Date : " + packageKbartDto.getDatePackage() +
" Message : " + e.getMessage();
// Création du mail
String requestJson = mailToJSON(this.recipient, "[CONVERGENCE]["+env.toUpperCase()+"] Erreur lors du traitement sur le fichier " + filename, body);
// Envoi du message par mail
sendMail(requestJson);
log.info("L'email a été correctement envoyé.");
}
// public void sendErrorMailDate(String filename, PackageKbartDto packageKbartDto, IllegalDateException e) {
// String body = "Une erreur s'est produite lors du traitement du package dans le Sudoc. Provider : " + packageKbartDto.getProvider() +
// " Package : " + packageKbartDto.getPackageName() +
// " Date : " + packageKbartDto.getDatePackage() +
// " Format de date incorrect. Message : " + e.getMessage();
// // Création du mail
// String requestJson = mailToJSON(this.recipient, "[CONVERGENCE]["+env.toUpperCase()+"] Erreur lors du traitement sur le fichier " + filename, body);
// // Envoi du message par mail
// sendMail(requestJson);
// log.info("L'email a été correctement envoyé.");
// }
//
// public void sendErrorMailAuthentification(String filename, PackageKbartDto packageKbartDto, CBSException e) {
// String body = "Une erreur s'est produite lors de l'authentification sur le CBS. Provider : " + packageKbartDto.getProvider() +
// " Package : " + packageKbartDto.getPackageName() +
// " Date : " + packageKbartDto.getDatePackage() +
// " Message : " + e.getMessage();
// // Création du mail
// String requestJson = mailToJSON(this.recipient, "[CONVERGENCE]["+env.toUpperCase()+"] Erreur lors du traitement sur le fichier " + filename, body);
// // Envoi du message par mail
// sendMail(requestJson);
// log.info("L'email a été correctement envoyé.");
// }

public void sendErrorMailImprime(String filename, LigneKbartImprime kbart, Exception e) {
StringBuilder body = new StringBuilder("Une erreur s'est produite lors de la création de la notice électronique à partir de l'imprimé n°");
Expand Down

0 comments on commit 7f77970

Please sign in to comment.