Skip to content

Commit

Permalink
Fix : MAJ version apiSudoc, suppression poll, modification CommExcept…
Browse files Browse the repository at this point in the history
…ion en IOException
  • Loading branch information
pierre-maraval committed Apr 2, 2024
1 parent cc7c3d3 commit 09c201d
Show file tree
Hide file tree
Showing 19 changed files with 55 additions and 71 deletions.
32 changes: 16 additions & 16 deletions batch/src/main/java/fr/abes/item/traitement/ProxyRetry.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package fr.abes.item.traitement;

import fr.abes.cbs.exception.CBSException;
import fr.abes.cbs.exception.CommException;
import fr.abes.cbs.exception.ZoneException;
import fr.abes.cbs.notices.DonneeLocale;
import fr.abes.cbs.notices.Exemplaire;
Expand All @@ -28,6 +27,7 @@
import org.springframework.retry.annotation.Retryable;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

Expand All @@ -46,10 +46,10 @@ public class ProxyRetry {
*
* @param login login d'authentification
* @throws CBSException erreur de validation CBS
* @throws CommException erreur de communication avec le CBS
* @throws IOException erreur de communication avec le CBS
*/
@Retryable(include = CommException.class, exclude = CBSException.class, backoff = @Backoff(delay = 1000, multiplier = 2))
public void authenticate(String login) throws CBSException, CommException {
@Retryable(include = IOException.class, exclude = CBSException.class, backoff = @Backoff(delay = 1000, multiplier = 2))
public void authenticate(String login) throws CBSException, IOException {
log.warn(Constant.PROXY_AUTHENTICATION_WITH_LOGIN + login);
getService().getTraitement().authenticate(login);
}
Expand All @@ -64,10 +64,10 @@ public void disconnect() throws CBSException {
* @param demande demande de modification
* @param ligneFichierDtoModif dto de la ligne fichier à modifier
* @throws CBSException : erreur CBS
* @throws CommException : erreur de communication avec le CBS
* @throws IOException : erreur de communication avec le CBS
*/
@Retryable(maxAttempts = 4, include = CommException.class, exclude = {CBSException.class, ZoneException.class}, backoff = @Backoff(delay = 1000, multiplier = 2) )
public void saveExemplaire(DemandeModif demande, LigneFichierDtoModif ligneFichierDtoModif) throws CBSException, CommException, ZoneException {
@Retryable(maxAttempts = 4, include = IOException.class, exclude = {CBSException.class, ZoneException.class}, backoff = @Backoff(delay = 1000, multiplier = 2) )
public void saveExemplaire(DemandeModif demande, LigneFichierDtoModif ligneFichierDtoModif) throws CBSException, IOException, ZoneException {
ILigneFichierDtoMapper ligneFichierDtoMapper = factory.getStrategy(ILigneFichierDtoMapper.class, TYPE_DEMANDE.MODIF);
try {
//récupération de la exemplaire correpondant à la ligne du fichier en cours
Expand All @@ -82,7 +82,7 @@ public void saveExemplaire(DemandeModif demande, LigneFichierDtoModif ligneFichi
this.authenticate("M" + demande.getRcr());
}
throw ex;
} catch (CommException ex) {
} catch (IOException ex) {
log.error("Erreur de communication avec le CBS sur demande modif " + demande.getId() + " / ligne fichier n°" + ligneFichierDtoModif.getNumLigneFichier() + " / epn : " + ligneFichierDtoModif.getEpn());
//si un pb de communication avec le CBS est détecté, on se reconnecte, et on renvoie l'exception pour que le retry retente la méthode
this.disconnect();
Expand All @@ -97,11 +97,11 @@ public void saveExemplaire(DemandeModif demande, LigneFichierDtoModif ligneFichi
* @param ligneFichierDtoExemp ligne fichier à traiter
* @throws CBSException : erreur CBS
* @throws ZoneException : erreur de construction de la notice
* @throws CommException : erreur de communication avec le CBS
* @throws IOException : erreur de communication avec le CBS
*/
@Retryable(maxAttempts = 4, include = CommException.class,
@Retryable(maxAttempts = 4, include = IOException.class,
exclude = {CBSException.class, ZoneException.class}, backoff = @Backoff(delay = 1000, multiplier = 2) )
public void newExemplaire(DemandeExemp demande, LigneFichierDtoExemp ligneFichierDtoExemp) throws CBSException, ZoneException, CommException {
public void newExemplaire(DemandeExemp demande, LigneFichierDtoExemp ligneFichierDtoExemp) throws CBSException, ZoneException, IOException {
try {
ligneFichierDtoExemp.setRequete(getService().getDemandeExemp().getQueryToSudoc(demande.getIndexRecherche().getCode(), demande.getTypeExemp().getLibelle(), ligneFichierDtoExemp.getIndexRecherche().split(";")));
//lancement de la requête de récupération de la notice dans le CBS
Expand Down Expand Up @@ -140,7 +140,7 @@ public void newExemplaire(DemandeExemp demande, LigneFichierDtoExemp ligneFichie
log.error("Erreur SQL : " + sqlEx.getErrorCode());
log.error(sqlEx.getSQLState() + "|" + sqlEx.getMessage() + "|" + sqlEx.getLocalizedMessage());
}
} catch (CommException ex) {
} catch (IOException ex) {
log.error("Erreur de communication avec le CBS sur demande exemp " + demande.getId() + " / ligne fichier n°" + ligneFichierDtoExemp.getNumLigneFichier());
//si un pb de communication avec le CBS est détecté, on se reconnecte, et on renvoie l'exception pour que le retry retente la méthode
this.disconnect();
Expand All @@ -164,11 +164,11 @@ private String getL035fromDonneesLocales(String donneeLocale) throws ZoneExcepti
* @param ligneFichierDtoRecouv ligne fichier à traiter
* @throws CBSException : erreur CBS
* @throws QueryToSudocException : erreur dans le type d'index de recherche
* @throws CommException : erreur de communication avec le CBS
* @throws IOException : erreur de communication avec le CBS
*/
@Retryable(maxAttempts = 4, include = CommException.class,
@Retryable(maxAttempts = 4, include = IOException.class,
exclude = {CBSException.class, QueryToSudocException.class}, backoff = @Backoff(delay = 1000, multiplier = 2) )
public void recouvExemplaire(DemandeRecouv demande, LigneFichierDtoRecouv ligneFichierDtoRecouv) throws CommException, QueryToSudocException, CBSException {
public void recouvExemplaire(DemandeRecouv demande, LigneFichierDtoRecouv ligneFichierDtoRecouv) throws IOException, QueryToSudocException, CBSException {
ligneFichierDtoRecouv.setRequete(getService().getDemandeRecouv().getQueryToSudoc(demande.getIndexRecherche().getCode(), ligneFichierDtoRecouv.getIndexRecherche().split(";")));
try {
ligneFichierDtoRecouv.setNbReponses(getService().getDemandeRecouv().launchQueryToSudoc(demande.getIndexRecherche().getCode(), ligneFichierDtoRecouv.getIndexRecherche()));
Expand All @@ -182,7 +182,7 @@ public void recouvExemplaire(DemandeRecouv demande, LigneFichierDtoRecouv ligneF
default:
ligneFichierDtoRecouv.setListePpn(getService().getTraitement().getCbs().getListePpn().toString().replace(';', ','));
}
} catch (CommException ex) {
} catch (IOException ex) {
log.error("Erreur de communication avec le CBS sur demande recouv " + demande.getId() + " / ligne fichier n°" + ligneFichierDtoRecouv.getNumLigneFichier());
//si un pb de communication avec le CBS est détecté, on se reconnecte, et on renvoie l'exception pour que le retry retente la méthode
this.disconnect();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package fr.abes.item.traitement.traiterlignesfichierchunk;

import fr.abes.cbs.exception.CBSException;
import fr.abes.cbs.exception.CommException;
import fr.abes.cbs.exception.ZoneException;
import fr.abes.item.constant.Constant;
import fr.abes.item.constant.TYPE_DEMANDE;
Expand Down Expand Up @@ -31,6 +30,7 @@
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.sql.SQLException;

@Slf4j
Expand Down Expand Up @@ -80,7 +80,7 @@ public LigneFichierDto process(LigneFichierDto ligneFichierDto) {
default:
return processDemandeRecouv(ligneFichierDto);
}
} catch (CBSException | ZoneException | QueryToSudocException | CommException e) {
} catch (CBSException | ZoneException | QueryToSudocException | IOException e) {
log.error(Constant.ERROR_FROM_SUDOC_REQUEST_OR_METHOD_SAVEXEMPLAIRE + e);
ligneFichierDto.setRetourSudoc(e.getMessage());
} catch (JDBCConnectionException | ConstraintViolationException j) {
Expand All @@ -106,9 +106,9 @@ public LigneFichierDto process(LigneFichierDto ligneFichierDto) {
* @return la DTO de la ligne fichier modifiée en fonction du résultat du traitement
* @throws CBSException : erreur CBS
* @throws ZoneException : erreur de construction de la notice
* @throws CommException : erreur de communication avec le CBS
* @throws IOException : erreur de communication avec le CBS
*/
private LigneFichierDtoModif processDemandeModif(LigneFichierDto ligneFichierDto) throws CBSException, ZoneException, CommException {
private LigneFichierDtoModif processDemandeModif(LigneFichierDto ligneFichierDto) throws CBSException, ZoneException, IOException {
DemandeModif demandeModif = (DemandeModif) demande;
LigneFichierDtoModif ligneFichierDtoModif = (LigneFichierDtoModif) ligneFichierDto;
//sauvegarde la notice modifiée
Expand All @@ -124,9 +124,9 @@ private LigneFichierDtoModif processDemandeModif(LigneFichierDto ligneFichierDto
* @return la DTO de la ligne fichier modifiée en fonction du résultat du traitement
* @throws CBSException : erreur CBS
* @throws ZoneException : erreur de construction de la notice
* @throws CommException : erreur de communication avec le CBS
* @throws IOException : erreur de communication avec le CBS
*/
private LigneFichierDtoExemp processDemandeExemp(LigneFichierDto ligneFichierDto) throws CBSException, ZoneException, CommException {
private LigneFichierDtoExemp processDemandeExemp(LigneFichierDto ligneFichierDto) throws CBSException, ZoneException, IOException {
DemandeExemp demandeExemp = (DemandeExemp) this.demande;
LigneFichierDtoExemp ligneFichierDtoExemp = (LigneFichierDtoExemp) ligneFichierDto;
this.proxyRetry.newExemplaire(demandeExemp, ligneFichierDtoExemp);
Expand All @@ -141,9 +141,9 @@ private LigneFichierDtoExemp processDemandeExemp(LigneFichierDto ligneFichierDto
* @return la DTO ligneFichier mise à jour en fonction du résultat de la requête che
* @throws CBSException : erreur CBS
* @throws QueryToSudocException : erreur dans le type d'index de recherche
* @throws CommException : erreur de communication avec le CBS
* @throws IOException : erreur de communication avec le CBS
*/
private LigneFichierDtoRecouv processDemandeRecouv(LigneFichierDto ligneFichierDto) throws CBSException, QueryToSudocException, CommException {
private LigneFichierDtoRecouv processDemandeRecouv(LigneFichierDto ligneFichierDto) throws CBSException, QueryToSudocException, IOException {
DemandeRecouv demandeRecouv = (DemandeRecouv) this.demande;
LigneFichierDtoRecouv ligneFichierDtoRecouv = (LigneFichierDtoRecouv) ligneFichierDto;
this.proxyRetry.recouvExemplaire(demandeRecouv, ligneFichierDtoRecouv);
Expand Down
1 change: 0 additions & 1 deletion batch/src/main/resources/application-dev.properties
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ sudoc.serveur=
sudoc.port=
#login permettant de tester si le CBS répond
sudoc.login=
sudoc.poll=

batch.min.hour=8
batch.max.hour=20
Expand Down
1 change: 0 additions & 1 deletion batch/src/main/resources/application-prod.properties
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ sudoc.serveur=
sudoc.port=
#login permettant de tester si le CBS répond
sudoc.login=
sudoc.poll=

batch.min.hour=8
batch.max.hour=20
Expand Down
1 change: 0 additions & 1 deletion batch/src/main/resources/application-test.properties
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ sudoc.serveur=
sudoc.port=
#login permettant de tester si le CBS répond
sudoc.login=
sudoc.poll=

batch.min.hour=8
batch.max.hour=20
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package fr.abes.item.service;

import fr.abes.cbs.exception.CBSException;
import fr.abes.cbs.exception.CommException;
import fr.abes.cbs.exception.ZoneException;
import fr.abes.item.entities.item.*;
import fr.abes.item.exception.DemandeCheckingException;
Expand Down Expand Up @@ -42,13 +41,13 @@
public interface IDemandeExempService extends IDemandeService{
boolean hasDonneeLocaleExistante();

String[] getNoticeExemplaireAvantApres(DemandeExemp demande, LigneFichierExemp ligneFichier) throws CBSException, ZoneException, CommException;
String[] getNoticeExemplaireAvantApres(DemandeExemp demande, LigneFichierExemp ligneFichier) throws CBSException, ZoneException, IOException;

String creerExemplaireFromHeaderEtValeur(String header, String valeur, String rcr, String numExemp) throws CBSException, ZoneException;

String creerDonneesLocalesFromHeaderEtValeur(String header, String valeur) throws ZoneException;

String launchQueryToSudoc(DemandeExemp demande, String valeurs) throws CBSException, QueryToSudocException;
String launchQueryToSudoc(DemandeExemp demande, String valeurs) throws CBSException, QueryToSudocException, IOException;

LigneFichierExemp getLigneFichier(DemandeExemp demande, Integer numLigne);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package fr.abes.item.service;

import fr.abes.cbs.exception.CBSException;
import fr.abes.cbs.exception.CommException;
import fr.abes.cbs.exception.ZoneException;
import fr.abes.cbs.notices.Exemplaire;
import fr.abes.item.entities.item.*;
Expand Down Expand Up @@ -48,7 +47,7 @@
public interface IDemandeModifService extends IDemandeService{
LigneFichierModif getLigneFichier(DemandeModif demandeModif, Integer numLigne);

String getNoticeInitiale(DemandeModif demandeModif, String epn) throws CBSException, CommException, ZoneException;
String getNoticeInitiale(DemandeModif demandeModif, String epn) throws CBSException, IOException, ZoneException;

Exemplaire getNoticeTraitee(DemandeModif demandeModif, String noticeInit, LigneFichierModif ligneFichierModif) throws ZoneException;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package fr.abes.item.service;

import fr.abes.cbs.exception.CommException;
import fr.abes.item.entities.item.Demande;
import fr.abes.item.entities.item.DemandeRecouv;
import fr.abes.item.entities.item.EtatDemande;
Expand All @@ -18,7 +17,7 @@
public interface IDemandeRecouvService extends IDemandeService {
String stockerFichier(MultipartFile file, Demande demande) throws IOException, FileTypeException, FileCheckingException, DemandeCheckingException;

int launchQueryToSudoc(String codeIndex, String valeurs) throws QueryToSudocException, CommException;
int launchQueryToSudoc(String codeIndex, String valeurs) throws QueryToSudocException, IOException;

String getQueryToSudoc(String codeIndex, String[] tabValeurs) throws QueryToSudocException;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import fr.abes.cbs.process.ProcessCBS;
import fr.abes.item.entities.item.Traitement;

import java.io.IOException;
import java.util.List;

/**
Expand All @@ -28,9 +29,9 @@ public interface ITraitementService {

ProcessCBS getCbs();

void authenticate(String login) throws CBSException, CommException;
void authenticate(String login) throws CBSException, CommException, IOException;

String getNoticeFromEPN(String epn) throws CBSException, CommException, ZoneException;
String getNoticeFromEPN(String epn) throws CBSException, CommException, ZoneException, IOException;

Exemplaire creerNouvelleZone(String notice, String tag, String subTag, String valeur) throws ZoneException;

Expand All @@ -42,7 +43,7 @@ public interface ITraitementService {

Exemplaire remplacerSousZone(String notice, String tag, String subTag, String valeur) throws ZoneException;

String saveExemplaire(String noticeModifiee, String epn) throws CBSException, CommException;
String saveExemplaire(String noticeModifiee, String epn) throws CBSException, CommException, IOException;

void disconnect() throws CBSException;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package fr.abes.item.service.impl;

import fr.abes.cbs.exception.CBSException;
import fr.abes.cbs.exception.CommException;
import fr.abes.cbs.exception.ZoneException;
import fr.abes.cbs.notices.DonneeLocale;
import fr.abes.cbs.notices.Exemplaire;
Expand Down Expand Up @@ -123,7 +122,7 @@ public List<Demande> getActiveDemandesForUser(String iln) {

@Override
public boolean hasDonneeLocaleExistante() {
return (donneeLocaleExistante.isEmpty())?false:true;
return (donneeLocaleExistante.isEmpty()) ? false : true;
}

/**
Expand All @@ -148,7 +147,8 @@ public DemandeExemp majTypeExemp(Integer demandeId, TypeExemp typeExemp) {

/**
* vérification du fichier et création de l'objet correspondant
* @param file fichier issu du front
*
* @param file fichier issu du front
* @param demande demande concernée
* @return message indiquant le bon déroulement de l'opération renvoyé au front
* @throws IOException
Expand Down Expand Up @@ -360,7 +360,7 @@ public Demande closeDemande(Demande demande) throws DemandeCheckingException {
* @param ligneFichier ligneFichier à traiter
* @return la chaine de l'exemplaire construit, ou message d'erreur
*/
public String[] getNoticeExemplaireAvantApres(DemandeExemp demande, LigneFichierExemp ligneFichier) throws CBSException, CommException {
public String[] getNoticeExemplaireAvantApres(DemandeExemp demande, LigneFichierExemp ligneFichier) throws CBSException, IOException {
try {
getService().getTraitement().authenticate("M" + demande.getRcr());
String numEx = launchQueryToSudoc(demande, ligneFichier.getIndexRecherche());
Expand Down Expand Up @@ -389,18 +389,14 @@ public String[] getNoticeExemplaireAvantApres(DemandeExemp demande, LigneFichier
* @return le numéro du prochain exemplaire à créer dans la notice au format "xx"
*/
@Override
public String launchQueryToSudoc(DemandeExemp demande, String valeurs) throws CBSException, QueryToSudocException {
public String launchQueryToSudoc(DemandeExemp demande, String valeurs) throws CBSException, QueryToSudocException, IOException {
String[] tabvaleurs = valeurs.split(";");
String query = getQueryToSudoc(demande.getIndexRecherche().getCode(), demande.getTypeExemp().getLibelle(), tabvaleurs);
//TODO insérer la requête pour sauver la requête en base

if (!query.isEmpty()) {
try {
getService().getTraitement().getCbs().search(query);
nbReponses = getService().getTraitement().getCbs().getNbNotices();
} catch (CommException e) {
nbReponses = 0;
}
getService().getTraitement().getCbs().search(query);
nbReponses = getService().getTraitement().getCbs().getNbNotices();

switch (nbReponses) {
//Le sudoc n'a pas trouvé de notice correspondant au PPN ou autre critère de recherche
case 0:
Expand Down Expand Up @@ -743,7 +739,7 @@ public String getQueryToSudoc(String codeIndex, String typeExemp, String[] valeu
case "SOU":
return "tno t; tdo b; che sou " + valeur[0];
case "DAT":
if(valeur[1].isEmpty()){
if (valeur[1].isEmpty()) {
return "tno t; tdo b; apu " + valeur[0] + "; che mti " + Utilitaires.replaceDiacritical(valeur[2]);
}
return "tno t; tdo b; apu " + valeur[0] + "; che aut " + Utilitaires.replaceDiacritical(valeur[1]) + " et mti " + Utilitaires.replaceDiacritical(valeur[2]);
Expand All @@ -753,7 +749,8 @@ public String getQueryToSudoc(String codeIndex, String typeExemp, String[] valeu
}
}

/** méthode d'archivage d'une demande
/**
* méthode d'archivage d'une demande
* supprime les lignes fichiers au moment de l'archivage
*
* @param demande demande à archiver
Expand Down
Loading

0 comments on commit 09c201d

Please sign in to comment.