Skip to content

Commit

Permalink
Fix : traitement de la suppression d'un package par paquet de notices.
Browse files Browse the repository at this point in the history
- ajout paramètre sur nombre de notices par paquet
- appel récursif à la méthode pour retirer les liens dans les notices liées jusqu'à épuisement
  • Loading branch information
pierre-maraval committed May 15, 2024
1 parent b28df23 commit 38a9d4a
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 1 deletion.
23 changes: 22 additions & 1 deletion src/main/java/fr/abes/kafkatosudoc/kafka/KbartListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ public class KbartListener {
@Value("${sudoc.signalDb}")
private String signalDb;

@Value("${sudoc.nbNoticesParLot}")
private int nbNoticesParLot;

private final UtilsMapper mapper;


Expand Down Expand Up @@ -288,6 +291,15 @@ public void listenKbartToDeleteFromKafka(ConsumerRecord<String, GenericRecord> p
}
}

/**
* Méthode permettant de délier les notices liées à une notice bouquet, cette méthode ne traite qu'un lot de 1000 notices maximum
* @param service méthodes permettant d'accéder au cbs
* @param provider provider
* @param packageName nom du package supprimé
* @param listError liste des erreurs éventuelles
* @throws CBSException erreur de validation du cbs
* @throws CommException erreur de communication avec le cbs
*/
@Retryable(maxAttempts = 4, retryFor = CommException.class, noRetryFor = {CBSException.class}, backoff = @Backoff(delay = 1000, multiplier = 2))
private void traiterNoticesADelier(SudocService service, String provider, String packageName, List<String> listError) throws CBSException, CommException {
try {
Expand All @@ -297,9 +309,18 @@ private void traiterNoticesADelier(SudocService service, String provider, String
//boucle sur les notices liées à partir de la seconde (la première étant la notice bouquet elle-même)
int nbNoticesLiees = service.getNoticesLiees();
log.debug("nombre de notices liées : " + nbNoticesLiees);
for (int i = 2; i <= nbNoticesLiees; i++) {
int nbNoticesADelier = (nbNoticesLiees < this.nbNoticesParLot) ? nbNoticesLiees : this.nbNoticesParLot;
for (int i = 2; i <= nbNoticesADelier; i++) {
suppressionLien469(service, listError, i, ppnNoticeBouquet);
}
//condition de sortie de la boucle récursive : il reste moins de notices à délier que le nombre plancher
if (nbNoticesLiees > this.nbNoticesParLot) {
log.debug("lot traité, déco / reco du cbs pour traitement lot suivant");
service.disconnect();
service.authenticate(serveurSudoc, portSudoc, loginSudoc, passwordSudoc);
//l'intégralité du lot n'a pas été traité, on rappelle la méthode en récursif pour traiter le lot suivant
traiterNoticesADelier(service, provider, packageName, listError);
}
} catch (CommException | IOException ex) {
service.decoRecoCbs(serveurSudoc, portSudoc, loginSudoc, passwordSudoc, ex);
}
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/application-dev.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ sudoc.port=
sudoc.password=
sudoc.login=
sudoc.signalDb=
sudoc.nbNoticesParLot=1000

mail.ws.recipient=
mail.ws.url=
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/application-prod.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ sudoc.port=
sudoc.password=
sudoc.login=
sudoc.signalDb=
sudoc.nbNoticesParLot=1000

mail.ws.recipient=
mail.ws.url=
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/application-test.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ sudoc.port=
sudoc.password=
sudoc.login=
sudoc.signalDb=
sudoc.nbNoticesParLot=1000

mail.ws.recipient=
mail.ws.url=
Expand Down

0 comments on commit 38a9d4a

Please sign in to comment.