Skip to content

Commit

Permalink
Merge pull request #43 from abes-esr/CDE-372-ajouter-le-detail-de-la-…
Browse files Browse the repository at this point in the history
…notice-dans-le-mail-derreur

CDE-372 : Ajout raw type sur list dans workInProgress
  • Loading branch information
EryneKL authored Mar 12, 2024
2 parents 2799851 + dfb2751 commit 35cc88b
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 25 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package fr.abes.kafkatosudoc.configuration;

import fr.abes.LigneKbartConnect;
import fr.abes.LigneKbartImprime;
import fr.abes.kafkatosudoc.kafka.WorkInProgress;
import io.confluent.kafka.serializers.KafkaAvroDeserializer;
import io.confluent.kafka.serializers.KafkaAvroDeserializerConfig;
Expand Down Expand Up @@ -74,7 +76,17 @@ private ConsumerFactory<String, String> consumerDeletePackageFactory() {
}

@Bean
public Map<String, WorkInProgress> workInProgressMap() {
public Map<String, WorkInProgress<LigneKbartConnect>> workInProgressMap() {
return Collections.synchronizedMap(new HashMap<>());
}

@Bean
public Map<String, WorkInProgress<LigneKbartConnect>> workInProgressMapExNihilo() {
return Collections.synchronizedMap(new HashMap<>());
}

@Bean
public Map<String, WorkInProgress<LigneKbartImprime>> workInProgressMapImprime() {
return Collections.synchronizedMap(new HashMap<>());
}
}
24 changes: 12 additions & 12 deletions src/main/java/fr/abes/kafkatosudoc/kafka/KbartListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,13 @@ public class KbartListener {

private final EmailService emailService;

private final Map<String, WorkInProgress> workInProgressMap;
private final Map<String, WorkInProgress<LigneKbartConnect>> workInProgressMap;

private final Map<String, WorkInProgress> workInProgressMapExNihilo;
private final Map<String, WorkInProgress<LigneKbartConnect>> workInProgressMapExNihilo;

private final Map<String, WorkInProgress> workInProgressMapImprime;
private final Map<String, WorkInProgress<LigneKbartImprime>> workInProgressMapImprime;

public KbartListener(UtilsMapper mapper, BaconService baconService, EmailService emailService, Map<String, WorkInProgress> workInProgressMap, Map<String, WorkInProgress> workInProgressMapExNihilo, Map<String, WorkInProgress> workInProgressMapImprime) {
public KbartListener(UtilsMapper mapper, BaconService baconService, EmailService emailService, Map<String, WorkInProgress<LigneKbartConnect>> workInProgressMap, Map<String, WorkInProgress<LigneKbartConnect>> workInProgressMapExNihilo, Map<String, WorkInProgress<LigneKbartImprime>> workInProgressMapImprime) {
this.mapper = mapper;
this.baconService = baconService;
this.emailService = emailService;
Expand All @@ -77,7 +77,7 @@ public void listenKbartToCreateFromKafka(ConsumerRecord<String, LigneKbartConnec
log.debug("Entrée dans création à partir du kbart");
String filename = lignesKbart.key();
if (!this.workInProgressMap.containsKey(filename))
this.workInProgressMap.put(lignesKbart.key(), new WorkInProgress());
this.workInProgressMap.put(lignesKbart.key(), new WorkInProgress<LigneKbartConnect>());

if (lignesKbart.value().getBESTPPN() != null && !lignesKbart.value().getBESTPPN().isEmpty()) {
//on alimente la liste des notices d'un package qui sera traitée intégralement
Expand Down Expand Up @@ -277,7 +277,7 @@ public void listenKbartFromKafkaExNihilo(ConsumerRecord<String, LigneKbartConnec

// S'il s'agit d'un premier message d'un fichier kbart, on créé un WorkInProgress avec le nom du fichier et le nombre total de ligne
if (!this.workInProgressMapExNihilo.containsKey(filename)) {
this.workInProgressMapExNihilo.put(filename, new WorkInProgress());
this.workInProgressMapExNihilo.put(filename, new WorkInProgress<>());
ligneKbart.headers().forEach(header -> {
if (header.key().equals("nbLinesTotal")) { //Si on est à la dernière ligne du fichier
this.workInProgressMapExNihilo.get(filename).setNbLinesTotal(Integer.parseInt(new String(header.value()))); //on indique le nb total de lignes du fichier
Expand Down Expand Up @@ -320,7 +320,7 @@ public void listenKbartFromKafkaExNihilo(ConsumerRecord<String, LigneKbartConnec
// On déconnecte du Sudoc, on envoie les messages d'erreurs s'il y a des erreurs et on supprime le WorkInProgress
service.disconnect();
if (!this.workInProgressMapExNihilo.get(filename).getErrorMessages().isEmpty())
emailService.sendErrorMessagesExNihilo(filename, this.workInProgressMap.get(filename));
emailService.sendErrorMessagesExNihilo(filename, this.workInProgressMapExNihilo.get(filename));
this.workInProgressMapExNihilo.remove(filename);
} catch (CBSException e) {
log.warn("Erreur de déconnexion du Sudoc");
Expand All @@ -342,7 +342,7 @@ public void listenKbartFromKafkaImprime(ConsumerRecord<String, LigneKbartImprime

// S'il s'agit d'un premier message d'un fichier kbart, on créé un WorkInProgress avec le nom du fichier et le nombre total de ligne
if (!this.workInProgressMapImprime.containsKey(filename)) {
this.workInProgressMapImprime.put(filename, new WorkInProgress());
this.workInProgressMapImprime.put(filename, new WorkInProgress<>());
lignesKbart.headers().forEach(header -> {
if (header.key().equals("nbLinesTotal")) { //Si on est à la dernière ligne du fichier
this.workInProgressMapImprime.get(filename).setNbLinesTotal(Integer.parseInt(new String(header.value()))); //on indique le nb total de lignes du fichier
Expand All @@ -352,7 +352,7 @@ public void listenKbartFromKafkaImprime(ConsumerRecord<String, LigneKbartImprime

// On incrémente le compteur de ligne et on ajoute chaque ligne dans le WorkInProgress associé au nom du fichier kbart
this.workInProgressMapImprime.get(filename).incrementCurrentNbLignes();
this.workInProgressMapImprime.get(filename).addNoticeImprime(lignesKbart.value());
this.workInProgressMapImprime.get(filename).addNotice(lignesKbart.value());

//Si le nombre de lignes traitées est égal au nombre de lignes total du fichier, on est arrivé en fin de fichier, on traite dans le sudoc
if (this.workInProgressMapImprime.get(filename).getCurrentNbLines().equals(this.workInProgressMapImprime.get(filename).getNbLinesTotal())) {
Expand All @@ -366,8 +366,8 @@ public void listenKbartFromKafkaImprime(ConsumerRecord<String, LigneKbartImprime
//authentification sur la base maitre du sudoc pour récupérer la notice imprimée
service.authenticate(serveurSudoc, portSudoc, loginSudoc, passwordSudoc);

if (this.workInProgressMapImprime.get(filename).getListeNoticesImprime() != null && !this.workInProgressMapImprime.get(filename).getListeNoticesImprime().isEmpty()) {
for (LigneKbartImprime ligneKbartImprime : this.workInProgressMapImprime.get(filename).getListeNoticesImprime()) {
if (this.workInProgressMapImprime.get(filename).getListeNotices() != null && !this.workInProgressMapImprime.get(filename).getListeNotices().isEmpty()) {
for (LigneKbartImprime ligneKbartImprime : this.workInProgressMapImprime.get(filename).getListeNotices()) {
KbartAndImprimeDto kbartAndImprimeDto = new KbartAndImprimeDto();
kbartAndImprimeDto.setKbart(mapper.map(ligneKbartImprime, LigneKbartImprime.class));
kbartAndImprimeDto.setNotice(service.getNoticeFromPpn(ligneKbartImprime.getPpn().toString()));
Expand All @@ -392,7 +392,7 @@ public void listenKbartFromKafkaImprime(ConsumerRecord<String, LigneKbartImprime
// On déconnecte du Sudoc, on envoie les messages d'erreurs s'il y a des erreurs et on supprime le WorkInProgress
service.disconnect();
if (!this.workInProgressMapImprime.get(filename).getErrorMessages().isEmpty())
emailService.sendErrorMessagesImprime(filename, this.workInProgressMap.get(filename));
emailService.sendErrorMessagesImprime(filename, this.workInProgressMapImprime.get(filename));
this.workInProgressMapImprime.remove(filename);
} catch (CBSException e) {
log.warn("Erreur de déconnexion du Sudoc");
Expand Down
12 changes: 3 additions & 9 deletions src/main/java/fr/abes/kafkatosudoc/kafka/WorkInProgress.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package fr.abes.kafkatosudoc.kafka;

import fr.abes.LigneKbartConnect;
import fr.abes.LigneKbartImprime;
import fr.abes.kafkatosudoc.dto.ERROR_TYPE;
import fr.abes.kafkatosudoc.dto.ErrorMessage;
import jakarta.json.Json;
Expand All @@ -14,10 +13,8 @@

@Getter
@Setter
public class WorkInProgress {
private final List<LigneKbartConnect> listeNotices;

private final List<LigneKbartImprime> listeNoticesImprime;
public class WorkInProgress<T> {
private final List<T> listeNotices;

private Integer currentNbLines;

Expand All @@ -27,18 +24,15 @@ public class WorkInProgress {

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

public void addNotice(LigneKbartConnect notice) {
public void addNotice(T notice) {
this.listeNotices.add(notice);
}

public void addNoticeImprime(LigneKbartImprime notice) { this.listeNoticesImprime.add(notice); }

public void incrementCurrentNbLignes() {
this.currentNbLines++;
}
Expand Down
8 changes: 5 additions & 3 deletions src/main/java/fr/abes/kafkatosudoc/service/EmailService.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import fr.abes.LigneKbartConnect;
import fr.abes.LigneKbartImprime;
import fr.abes.kafkatosudoc.dto.ERROR_TYPE;
import fr.abes.kafkatosudoc.dto.ErrorMessage;
import fr.abes.kafkatosudoc.dto.mail.MailDto;
Expand Down Expand Up @@ -39,7 +41,7 @@ public class EmailService {
@Value("${spring.profiles.active}")
private String env;

public void sendErrorsMessageCreateFromKafka(String filename, WorkInProgress workInProgress) {
public void sendErrorsMessageCreateFromKafka(String filename, WorkInProgress<LigneKbartConnect> workInProgress) {
JsonObject listErrors = Json.createObjectBuilder()
.add("kbart info : ", getKbartInfo(filename))
.add(workInProgress.getErrorMessages().stream().filter(m -> m.getType().equals(ERROR_TYPE.CONNEXION)).count() + " erreur(s) de connection CBS lors d'une mise à jour des zones 469 de liens vers les notices bouquets)", formatListToJson(workInProgress.getErrorMessages().stream().filter(m -> m.getType().equals(ERROR_TYPE.CONNEXION)).toList()))
Expand All @@ -60,15 +62,15 @@ private JsonObjectBuilder formatListToJson(List<ErrorMessage> list) {
return jsonObjectBuilder;
}

public void sendErrorMessagesExNihilo(String filename, WorkInProgress workInProgress) {
public void sendErrorMessagesExNihilo(String filename, WorkInProgress<LigneKbartConnect> workInProgress) {
JsonObject listErrors = Json.createObjectBuilder()
.add("kbart info : ", getKbartInfo(filename))
.add(workInProgress.getErrorMessages().stream().filter(m -> m.getType().equals(ERROR_TYPE.EXNIHILO)).count() + " erreur(s) lors de la création de notice(s) ExNihilo", workInProgress.getErrorMessages().stream().filter(m -> m.getType().equals(ERROR_TYPE.EXNIHILO)).toList().toString())
.build();
sendErrorsMessage(filename, listErrors);
}

public void sendErrorMessagesImprime(String filename, WorkInProgress workInProgress) {
public void sendErrorMessagesImprime(String filename, WorkInProgress<LigneKbartImprime> workInProgress) {
JsonObject listErrors = Json.createObjectBuilder()
.add("kbart info : ", getKbartInfo(filename))
.add(workInProgress.getErrorMessages().stream().filter(m -> m.getType().equals(ERROR_TYPE.FROMIMPRIME)).count() + " erreur(s) lors de la création de notice(s) électronique(s) à partir d'un imprimé",workInProgress.getErrorMessages().stream().filter(m -> m.getType().equals(ERROR_TYPE.FROMIMPRIME)).toList().toString())
Expand Down

0 comments on commit 35cc88b

Please sign in to comment.