Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

merge develop dans main #62

Merged
merged 2 commits into from
May 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading