From b19cf5a143bcd08640d1d5dced3f311701c1531a Mon Sep 17 00:00:00 2001 From: EryneKL <97091460+EryneKL@users.noreply.github.com> Date: Fri, 18 Oct 2024 11:00:19 +0200 Subject: [PATCH 1/9] FEAT ITEM-306-back-envoi-dun-fichier-epn-modifier-le-message-derreur-du-check-content-dans-le-cas-dun-epn-sans-ppn-ex-341725201-622042351 --- .../item/core/components/FichierPrepare.java | 4 +-- .../core/components/FichierPrepareSupp.java | 28 +++++++++++++++++++ .../core/service/impl/DemandeSuppService.java | 8 ++++-- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/fr/abes/item/core/components/FichierPrepare.java b/core/src/main/java/fr/abes/item/core/components/FichierPrepare.java index d152a7d2..0ba527ad 100644 --- a/core/src/main/java/fr/abes/item/core/components/FichierPrepare.java +++ b/core/src/main/java/fr/abes/item/core/components/FichierPrepare.java @@ -98,8 +98,8 @@ public void alimenterEpn(String input, String listeppn, String rcr) { */ public void alimenterPpn(String input, String listeEpn, String rcr) { try (FileWriter fw = new FileWriter(path.resolve(filename).toString(), true); - BufferedWriter bw = new BufferedWriter(fw); - PrintWriter out = new PrintWriter(bw)) { + BufferedWriter bw = new BufferedWriter(fw); + PrintWriter out = new PrintWriter(bw)) { String[] tabEpn = listeEpn.split(","); Multimap resJson = Utilitaires.parseJson(input, true); for (String epn : tabEpn) { diff --git a/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java b/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java index ab239261..e9667dc9 100644 --- a/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java +++ b/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java @@ -3,9 +3,17 @@ import fr.abes.item.core.constant.Constant; import fr.abes.item.core.constant.TYPE_DEMANDE; import fr.abes.item.core.entities.item.Demande; +import fr.abes.item.core.exception.FileCheckingException; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + @Component public class FichierPrepareSupp extends FichierPrepare implements Fichier { @@ -20,4 +28,24 @@ public FichierPrepareSupp(@Value("") final String filename) { public void generateFileName(Demande demande) { this.filename = Constant.FIC_CORRESPONDANCE_NAME + demande.getId() + Constant.EXTENSIONCSV; } + + public void controleIntegriteDesCorrespondances() throws IOException, FileCheckingException { + List epnSansCorrespondance = new ArrayList<>(); + try (FileInputStream fileReader = new FileInputStream(path.resolve(filename).toString()); + BufferedReader reader = new BufferedReader(new InputStreamReader(fileReader, StandardCharsets.UTF_8))) { + + reader.readLine();//cette ligne enleve le header et le stoc + + reader.lines().forEach(line -> { + Matcher m = Pattern.compile("^(?\\d{8}[0-9X]);(?\\d{9});(?\\d{8}[0-9X])?;$").matcher(line); + if (m.group("PPN").isEmpty()) { + epnSansCorrespondance.add(m.group("EPN")); + } + }); + } + if (!epnSansCorrespondance.isEmpty()) { + throw new FileCheckingException("EPN sans correspondance : " + String.join(", ", epnSansCorrespondance)); + } + } + } diff --git a/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java b/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java index a3a6746f..9081b5e8 100644 --- a/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java +++ b/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java @@ -160,7 +160,7 @@ private void stockerFichierOnDisk(MultipartFile file, Fichier fichier, DemandeSu } } - private void checkEtatDemande(DemandeSupp demande) throws DemandeCheckingException, IOException, FileTypeException { + private void checkEtatDemande(DemandeSupp demande) throws DemandeCheckingException, IOException, FileTypeException, FileCheckingException { int etat = demande.getEtatDemande().getNumEtat(); switch (etat) { case Constant.ETATDEM_PREPARATION -> preparerFichierEnPrep(demande); @@ -177,7 +177,7 @@ private void checkEtatDemande(DemandeSupp demande) throws DemandeCheckingExcepti } } - private void preparerFichierEnPrep(DemandeSupp demande) throws IOException, DemandeCheckingException, FileTypeException { + private void preparerFichierEnPrep(DemandeSupp demande) throws IOException, DemandeCheckingException, FileTypeException, FileCheckingException { if (demande.getTypeSuppression() != null) { //Suppression d'un éventuel fichier existant sur le disque storageService.delete(fichierPrepare.getFilename()); @@ -185,8 +185,10 @@ private void preparerFichierEnPrep(DemandeSupp demande) throws IOException, Dema fichierPrepare.ecrireEnTete(); //Alimentation du fichier par appel à la procédure Oracle ppntoepn appelProcStockee(demande.getRcr(), demande.getTypeSuppression()); - demande.setEtatDemande(new EtatDemande(Constant.ETATDEM_PREPAREE)); + // TODO effectuer un contrôle d'intégrité du fichier de correspondance. Si PPN absent, alors throw une erreur (à créer) "correspondance(s) incomplète(s) ligne(s) ..." + fichierPrepare.controleIntegriteDesCorrespondances(); fichierPrepare.trierLignesDeCorrespondances(); + demande.setEtatDemande(new EtatDemande(Constant.ETATDEM_PREPAREE)); save(demande); checkEtatDemande(demande); } From 31dca1e487400d09024042e5efcb143a617221dd Mon Sep 17 00:00:00 2001 From: EryneKL <97091460+EryneKL@users.noreply.github.com> Date: Fri, 18 Oct 2024 15:28:33 +0200 Subject: [PATCH 2/9] FEAT ITEM-306-back-envoi-dun-fichier-epn-modifier-le-message-derreur-du-check-content-dans-le-cas-dun-epn-sans-ppn-ex-341725201-622042351 --- .../core/components/FichierPrepareSupp.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java b/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java index e9667dc9..20f946e3 100644 --- a/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java +++ b/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java @@ -8,11 +8,8 @@ import org.springframework.stereotype.Component; import java.io.*; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; @Component public class FichierPrepareSupp extends FichierPrepare implements Fichier { @@ -31,17 +28,19 @@ public void generateFileName(Demande demande) { public void controleIntegriteDesCorrespondances() throws IOException, FileCheckingException { List epnSansCorrespondance = new ArrayList<>(); - try (FileInputStream fileReader = new FileInputStream(path.resolve(filename).toString()); - BufferedReader reader = new BufferedReader(new InputStreamReader(fileReader, StandardCharsets.UTF_8))) { - - reader.readLine();//cette ligne enleve le header et le stoc - - reader.lines().forEach(line -> { - Matcher m = Pattern.compile("^(?\\d{8}[0-9X]);(?\\d{9});(?\\d{8}[0-9X])?;$").matcher(line); - if (m.group("PPN").isEmpty()) { - epnSansCorrespondance.add(m.group("EPN")); + try (FileReader fileReader = new FileReader(path.resolve(filename).toString()); + BufferedReader reader = new BufferedReader(fileReader);) { + + // TODO vérifier que tous les epn sans correspondances sont bien catchés + reader.readLine();//cette ligne enleve le header + String line = reader.readLine(); + while (reader.readLine() != null) { + List ppnRcrEpn = List.of(line.split(";")); + if (ppnRcrEpn.get(0).isEmpty()) { + epnSansCorrespondance.add(ppnRcrEpn.get(2)); } - }); + line = reader.readLine(); + } } if (!epnSansCorrespondance.isEmpty()) { throw new FileCheckingException("EPN sans correspondance : " + String.join(", ", epnSansCorrespondance)); From 90d272feb083cfeb12e85cf5e2add0de19ed69c4 Mon Sep 17 00:00:00 2001 From: SamuelQuetin Date: Fri, 18 Oct 2024 15:49:29 +0200 Subject: [PATCH 3/9] =?UTF-8?q?Ajout=20condition=20si=20EPN=20Fix,=20une?= =?UTF-8?q?=20Ligne=20etait=20saut=C3=A9=20au=20debut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../item/core/components/FichierPrepareSupp.java | 13 ++++--------- .../item/core/service/impl/DemandeSuppService.java | 3 ++- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java b/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java index 20f946e3..f1353dea 100644 --- a/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java +++ b/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java @@ -30,17 +30,12 @@ public void controleIntegriteDesCorrespondances() throws IOException, FileChecki List epnSansCorrespondance = new ArrayList<>(); try (FileReader fileReader = new FileReader(path.resolve(filename).toString()); BufferedReader reader = new BufferedReader(fileReader);) { - - // TODO vérifier que tous les epn sans correspondances sont bien catchés reader.readLine();//cette ligne enleve le header - String line = reader.readLine(); - while (reader.readLine() != null) { - List ppnRcrEpn = List.of(line.split(";")); - if (ppnRcrEpn.get(0).isEmpty()) { - epnSansCorrespondance.add(ppnRcrEpn.get(2)); + reader.lines().forEach(line -> { + if(line.split(";")[0].isEmpty()){ + epnSansCorrespondance.add(line.split(";")[2]); } - line = reader.readLine(); - } + }); } if (!epnSansCorrespondance.isEmpty()) { throw new FileCheckingException("EPN sans correspondance : " + String.join(", ", epnSansCorrespondance)); diff --git a/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java b/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java index 9081b5e8..ccf8ce69 100644 --- a/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java +++ b/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java @@ -186,7 +186,8 @@ private void preparerFichierEnPrep(DemandeSupp demande) throws IOException, Dema //Alimentation du fichier par appel à la procédure Oracle ppntoepn appelProcStockee(demande.getRcr(), demande.getTypeSuppression()); // TODO effectuer un contrôle d'intégrité du fichier de correspondance. Si PPN absent, alors throw une erreur (à créer) "correspondance(s) incomplète(s) ligne(s) ..." - fichierPrepare.controleIntegriteDesCorrespondances(); + if(demande.getTypeSuppression().equals(TYPE_SUPPRESSION.EPN)) + fichierPrepare.controleIntegriteDesCorrespondances(); fichierPrepare.trierLignesDeCorrespondances(); demande.setEtatDemande(new EtatDemande(Constant.ETATDEM_PREPAREE)); save(demande); From 463e03a62e1d4f2f3f2820c552412ac62ce28aa9 Mon Sep 17 00:00:00 2001 From: Jerome Villiseck Date: Mon, 21 Oct 2024 10:04:21 +0200 Subject: [PATCH 4/9] =?UTF-8?q?Revert=20"ITEM-241=20:=20Ajout=20classe=20e?= =?UTF-8?q?t=20m=C3=A9thode=20dans=20sortie=20de=20logs"=20This=20reverts?= =?UTF-8?q?=20commit=20982a9dba?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/configuration/ItemLogAppender.java | 37 +------------------ 1 file changed, 1 insertion(+), 36 deletions(-) diff --git a/core/src/main/java/fr/abes/item/core/configuration/ItemLogAppender.java b/core/src/main/java/fr/abes/item/core/configuration/ItemLogAppender.java index d0c68d30..c97ee378 100644 --- a/core/src/main/java/fr/abes/item/core/configuration/ItemLogAppender.java +++ b/core/src/main/java/fr/abes/item/core/configuration/ItemLogAppender.java @@ -14,29 +14,10 @@ @Plugin(name = "ItemLogAppender", category = "core", elementType = Appender.ELEMENT_TYPE) public class ItemLogAppender extends AbstractAppender { - // Utilisation d'un ThreadLocal pour stocker l'heure de début de chaque méthode - private static final ThreadLocal startTime = new ThreadLocal<>(); - - // Seuil en ms au dessus duquel on veut afficher un message - private final int msSeuilDetection = 0; - protected ItemLogAppender(String name, Filter filter) { super(name, filter, null); } - // Méthode à appeler pour démarrer le chronométrage - public static void startMethodExecution() { - startTime.set(System.currentTimeMillis()); - } - - /** - * Appender permettant une normalisation des logs - * Pour obtenir le temps d'execution d'une méthode, ajoutez - * ItemLogAppender.startMethodExecution(); - * au début d'une méthode. L'appender calcule par méthode sans - * besoin d'une borne d'arrêt ou de fin - * @param event - */ @Override public void append(LogEvent event) { if (event.getLevel().isMoreSpecificThan(Level.INFO)) { @@ -44,23 +25,7 @@ public void append(LogEvent event) { String demandeId = ThreadContext.get("demandeId"); String typeDemande = ThreadContext.get("typeDemande"); if (demandeId != null && typeDemande != null) { - // Calcul du temps d'exécution - Long startTimeValue = startTime.get(); - long executionTime = startTimeValue != null ? System.currentTimeMillis() - startTimeValue : -1; - - if (executionTime < msSeuilDetection) { - System.out.println("DEM_" + typeDemande + "_" + demandeId + " / " - + event.getSource().getClassName() + " / " - + event.getSource().getMethodName() + " : " - + originalMessage); - } - //Uniquement si un ItemLogAppender.startMethodExecution(); à été placé au début d'une méthode - else{ - System.out.println("DEM_" + typeDemande + "_" + demandeId + " / " - + event.getSource().getClassName() + " / " - + event.getSource().getMethodName() + " : " - + originalMessage + " / Execution time: " + executionTime + " ms"); - } + System.out.println("DEM_" + typeDemande + "_" + demandeId + " : " + originalMessage); } } } From e7d4a646fdab8c73066a7fc2d59eb7aa9d1c8816 Mon Sep 17 00:00:00 2001 From: EryneKL <97091460+EryneKL@users.noreply.github.com> Date: Mon, 21 Oct 2024 10:46:41 +0200 Subject: [PATCH 5/9] FEAT ITEM-304-back-corriger-les-lignes-vides-en-fin-de-fichier --- .../abes/item/core/components/FichierPrepare.java | 13 +++++++------ .../item/core/service/impl/DemandeSuppService.java | 1 - 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/fr/abes/item/core/components/FichierPrepare.java b/core/src/main/java/fr/abes/item/core/components/FichierPrepare.java index 0ba527ad..7d21f498 100644 --- a/core/src/main/java/fr/abes/item/core/components/FichierPrepare.java +++ b/core/src/main/java/fr/abes/item/core/components/FichierPrepare.java @@ -13,7 +13,6 @@ import java.io.*; import java.util.ArrayList; -import java.util.Collections; import java.util.List; @Slf4j @@ -40,13 +39,14 @@ public int getType() { return Constant.ETATDEM_PREPAREE; } - @Override - public TYPE_DEMANDE getDemandeType() {return TYPE_DEMANDE.MODIF; } + public TYPE_DEMANDE getDemandeType() { + return TYPE_DEMANDE.MODIF; + } @Override public void checkFileContent(Demande demandeModif) { - //nothing to do + //nothing to do } @Override @@ -125,9 +125,10 @@ public void trierLignesDeCorrespondances() throws IOException { List correspondanceSortList = new ArrayList<>(); String header = reader.readLine();//cette ligne enleve le header et le stock - correspondanceSortList.add(header + "\n"); + correspondanceSortList.add(header); reader.lines().sorted().forEach(line -> { - correspondanceSortList.add(line+"\n"); + correspondanceSortList.add("\n"); + correspondanceSortList.add(line); }); reader.close(); fileReader.close(); diff --git a/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java b/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java index ccf8ce69..6d4a77c8 100644 --- a/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java +++ b/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java @@ -185,7 +185,6 @@ private void preparerFichierEnPrep(DemandeSupp demande) throws IOException, Dema fichierPrepare.ecrireEnTete(); //Alimentation du fichier par appel à la procédure Oracle ppntoepn appelProcStockee(demande.getRcr(), demande.getTypeSuppression()); - // TODO effectuer un contrôle d'intégrité du fichier de correspondance. Si PPN absent, alors throw une erreur (à créer) "correspondance(s) incomplète(s) ligne(s) ..." if(demande.getTypeSuppression().equals(TYPE_SUPPRESSION.EPN)) fichierPrepare.controleIntegriteDesCorrespondances(); fichierPrepare.trierLignesDeCorrespondances(); From f9256642266760b80010b9420a76925310232ef8 Mon Sep 17 00:00:00 2001 From: EryneKL <97091460+EryneKL@users.noreply.github.com> Date: Mon, 21 Oct 2024 13:47:06 +0200 Subject: [PATCH 6/9] FEAT ITEM-304-back-corriger-les-lignes-vides-en-fin-de-fichier --- .../item/core/components/AbstractFichier.java | 4 ++-- .../core/components/FichierPrepareSupp.java | 22 ------------------- .../core/service/impl/DemandeSuppService.java | 2 -- 3 files changed, 2 insertions(+), 26 deletions(-) diff --git a/core/src/main/java/fr/abes/item/core/components/AbstractFichier.java b/core/src/main/java/fr/abes/item/core/components/AbstractFichier.java index 4fa2ff0e..a9fe14bd 100644 --- a/core/src/main/java/fr/abes/item/core/components/AbstractFichier.java +++ b/core/src/main/java/fr/abes/item/core/components/AbstractFichier.java @@ -99,7 +99,7 @@ protected void checkRcr(String rcrFichier, String rcr, int ligneCourante) throws * @throws FileCheckingException : erreur de format de fichier */ protected void checkPpn(String ppn, int ligneCourante) throws FileCheckingException { - if (!ppn.matches("^\\d{8}[0-9X]$")){ + if (!ppn.matches("^(\\d{8}[0-9X])?$")){ throw new FileCheckingException(Constant.ERR_FILE_ERRLINE + ligneCourante + Constant.ERR_FILE_WRONGPPN); } } @@ -110,7 +110,7 @@ protected void checkPpn(String ppn, int ligneCourante) throws FileCheckingExcept * @throws FileCheckingException: erreur de format de l'epn */ protected void checkEpn(String epn, int ligneCourante) throws FileCheckingException { - if (!epn.matches("^\\d{8}[0-9X]$")) { + if (!epn.matches("^(\\d{8}[0-9X])?$")) { throw new FileCheckingException(Constant.ERR_FILE_ERRLINE + ligneCourante + Constant.ERR_FILE_WRONGEPN); } } diff --git a/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java b/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java index f1353dea..ab239261 100644 --- a/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java +++ b/core/src/main/java/fr/abes/item/core/components/FichierPrepareSupp.java @@ -3,14 +3,9 @@ import fr.abes.item.core.constant.Constant; import fr.abes.item.core.constant.TYPE_DEMANDE; import fr.abes.item.core.entities.item.Demande; -import fr.abes.item.core.exception.FileCheckingException; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import java.io.*; -import java.util.ArrayList; -import java.util.List; - @Component public class FichierPrepareSupp extends FichierPrepare implements Fichier { @@ -25,21 +20,4 @@ public FichierPrepareSupp(@Value("") final String filename) { public void generateFileName(Demande demande) { this.filename = Constant.FIC_CORRESPONDANCE_NAME + demande.getId() + Constant.EXTENSIONCSV; } - - public void controleIntegriteDesCorrespondances() throws IOException, FileCheckingException { - List epnSansCorrespondance = new ArrayList<>(); - try (FileReader fileReader = new FileReader(path.resolve(filename).toString()); - BufferedReader reader = new BufferedReader(fileReader);) { - reader.readLine();//cette ligne enleve le header - reader.lines().forEach(line -> { - if(line.split(";")[0].isEmpty()){ - epnSansCorrespondance.add(line.split(";")[2]); - } - }); - } - if (!epnSansCorrespondance.isEmpty()) { - throw new FileCheckingException("EPN sans correspondance : " + String.join(", ", epnSansCorrespondance)); - } - } - } diff --git a/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java b/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java index 6d4a77c8..81321ba1 100644 --- a/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java +++ b/core/src/main/java/fr/abes/item/core/service/impl/DemandeSuppService.java @@ -185,8 +185,6 @@ private void preparerFichierEnPrep(DemandeSupp demande) throws IOException, Dema fichierPrepare.ecrireEnTete(); //Alimentation du fichier par appel à la procédure Oracle ppntoepn appelProcStockee(demande.getRcr(), demande.getTypeSuppression()); - if(demande.getTypeSuppression().equals(TYPE_SUPPRESSION.EPN)) - fichierPrepare.controleIntegriteDesCorrespondances(); fichierPrepare.trierLignesDeCorrespondances(); demande.setEtatDemande(new EtatDemande(Constant.ETATDEM_PREPAREE)); save(demande); From 2fe2fe3e822fd7e16b70d46fa25b8f28d6dc1132 Mon Sep 17 00:00:00 2001 From: EryneKL <97091460+EryneKL@users.noreply.github.com> Date: Mon, 21 Oct 2024 14:56:28 +0200 Subject: [PATCH 7/9] =?UTF-8?q?FEAT=20ITEM-308-back-ajuster-le-controles-s?= =?UTF-8?q?ur-le-nombres-de-colonnes-par-ligne-dans-un-fichier-de-correspo?= =?UTF-8?q?ndances=20:=20=20=20=20=20=20-=20ajout=20d'une=20constante=20da?= =?UTF-8?q?ns=20Constant.java=20=20=20=20=20=20-=20ajout=20d'un=20contr?= =?UTF-8?q?=C3=B4le=20de=20longueur=20de=20ligne=20dans=20la=20m=C3=A9thod?= =?UTF-8?q?e=20checkBodyLine()=20dans=20FichierEnrichiSupp.java=20=20=20?= =?UTF-8?q?=20=20=20-=20modification=20d'un=20contr=C3=B4le=20de=20longueu?= =?UTF-8?q?r=20de=20ligne=20dans=20la=20m=C3=A9thode=20check3Cols()=20dans?= =?UTF-8?q?=20FichierEnrichiSupp.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/abes/item/core/components/FichierEnrichiSupp.java | 9 +++++++-- .../main/java/fr/abes/item/core/constant/Constant.java | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/fr/abes/item/core/components/FichierEnrichiSupp.java b/core/src/main/java/fr/abes/item/core/components/FichierEnrichiSupp.java index e6a4bed8..6de2ecfa 100644 --- a/core/src/main/java/fr/abes/item/core/components/FichierEnrichiSupp.java +++ b/core/src/main/java/fr/abes/item/core/components/FichierEnrichiSupp.java @@ -65,7 +65,7 @@ public void checkFileContent(Demande d) throws FileCheckingException, IOExceptio * @throws FileCheckingException : erreur dans le format de la ligne */ private void check3Cols(String ligne) throws FileCheckingException { - if (ligne.split(";").length < 3) { + if (ligne.split(";").length != 3) { throw new FileCheckingException(Constant.ERR_FILE_3COL_SUPP); } if (ligne.length() < 11) { @@ -84,12 +84,17 @@ private void check3Cols(String ligne) throws FileCheckingException { */ private void checkBodyLine(String ligne, DemandeSupp demandeSupp) throws FileCheckingException { try { + // contrôle de la longueur de la ligne + if (ligne.split(";").length > 3) { + throw new FileCheckingException(Constant.ERR_FILE_ERRLINE + " \"" + ligne + "\" " + Constant.ERR_FILE_3COL_SUPP_ANY_LINE); + } String[] tabligne = ligne.split(";"); + // contrôle du ppn if (demandeSupp.getTypeSuppression().equals(TYPE_SUPPRESSION.EPN) && tabligne[0] != null) { checkPpn(tabligne[0], ligneCourante); } checkRcr(tabligne[1], demandeSupp.getRcr(), ligneCourante); - //cas ou l'epn est renseigné + // contrôle de l'epn s'il est renseigné if (tabligne.length > 2) checkEpn(tabligne[2], ligneCourante); } catch (IndexOutOfBoundsException e) { diff --git a/core/src/main/java/fr/abes/item/core/constant/Constant.java b/core/src/main/java/fr/abes/item/core/constant/Constant.java index 625e15dc..0aa396b7 100644 --- a/core/src/main/java/fr/abes/item/core/constant/Constant.java +++ b/core/src/main/java/fr/abes/item/core/constant/Constant.java @@ -109,6 +109,7 @@ public class Constant implements Serializable { public static final String ERR_FILE_TOOMUCH_SUPP = Constant.ERR_FILE_TOOMUCH_START + Constant.MAX_LIGNE_FICHIER_INIT_SUPP + Constant.ERR_FILE_TOOMUCH_END; public static final String ERR_FILE_3COL_MODIF = "La première ligne du fichier doit contenir 4 colonnes (ppn;rcr;epn;zone)."; public static final String ERR_FILE_3COL_SUPP = "La première ligne du fichier doit contenir 3 colonnes (ppn;rcr;epn)"; + public static final String ERR_FILE_3COL_SUPP_ANY_LINE = "La ligne ne doit contenir que trois colones"; public static final String ERR_FILE_ERRLINE = "Erreur ligne "; public static final String ERR_FILE_ONLYONEPPN = "la ligne ne doit contenir qu'un ppn (sur 9 caractères)."; public static final String ERR_FILE_HEAD4TH = "La valeur en-tête de la quatrieme colonne n'est pas valide."; From cf7bf4750427a95c5d7d2d2af12301835219ad1e Mon Sep 17 00:00:00 2001 From: EryneKL <97091460+EryneKL@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:26:35 +0200 Subject: [PATCH 8/9] =?UTF-8?q?FEAT=20ITEM-308-back-ajuster-le-controles-s?= =?UTF-8?q?ur-le-nombres-de-colonnes-par-ligne-dans-un-fichier-de-correspo?= =?UTF-8?q?ndances=20:=20=20=20=20=20=20-=20modification=20d'une=20constan?= =?UTF-8?q?te=20dans=20Constant.java=20=20=20=20=20=20-=20modification=20d?= =?UTF-8?q?'un=20contr=C3=B4le=20de=20longueur=20de=20ligne=20dans=20la=20?= =?UTF-8?q?m=C3=A9thode=20checkBodyLine()=20dans=20FichierEnrichiSupp.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/fr/abes/item/core/components/FichierEnrichiSupp.java | 3 ++- core/src/main/java/fr/abes/item/core/constant/Constant.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/fr/abes/item/core/components/FichierEnrichiSupp.java b/core/src/main/java/fr/abes/item/core/components/FichierEnrichiSupp.java index 6de2ecfa..0e409de6 100644 --- a/core/src/main/java/fr/abes/item/core/components/FichierEnrichiSupp.java +++ b/core/src/main/java/fr/abes/item/core/components/FichierEnrichiSupp.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; import java.io.BufferedReader; import java.io.FileInputStream; @@ -85,7 +86,7 @@ private void check3Cols(String ligne) throws FileCheckingException { private void checkBodyLine(String ligne, DemandeSupp demandeSupp) throws FileCheckingException { try { // contrôle de la longueur de la ligne - if (ligne.split(";").length > 3) { + if (ligne.split(";").length > 3 || StringUtils.countOccurrencesOf(ligne, ";") != 3) { throw new FileCheckingException(Constant.ERR_FILE_ERRLINE + " \"" + ligne + "\" " + Constant.ERR_FILE_3COL_SUPP_ANY_LINE); } String[] tabligne = ligne.split(";"); diff --git a/core/src/main/java/fr/abes/item/core/constant/Constant.java b/core/src/main/java/fr/abes/item/core/constant/Constant.java index 0aa396b7..8e380b8a 100644 --- a/core/src/main/java/fr/abes/item/core/constant/Constant.java +++ b/core/src/main/java/fr/abes/item/core/constant/Constant.java @@ -109,7 +109,7 @@ public class Constant implements Serializable { public static final String ERR_FILE_TOOMUCH_SUPP = Constant.ERR_FILE_TOOMUCH_START + Constant.MAX_LIGNE_FICHIER_INIT_SUPP + Constant.ERR_FILE_TOOMUCH_END; public static final String ERR_FILE_3COL_MODIF = "La première ligne du fichier doit contenir 4 colonnes (ppn;rcr;epn;zone)."; public static final String ERR_FILE_3COL_SUPP = "La première ligne du fichier doit contenir 3 colonnes (ppn;rcr;epn)"; - public static final String ERR_FILE_3COL_SUPP_ANY_LINE = "La ligne ne doit contenir que trois colones"; + public static final String ERR_FILE_3COL_SUPP_ANY_LINE = "La ligne doit contenir trois colones"; public static final String ERR_FILE_ERRLINE = "Erreur ligne "; public static final String ERR_FILE_ONLYONEPPN = "la ligne ne doit contenir qu'un ppn (sur 9 caractères)."; public static final String ERR_FILE_HEAD4TH = "La valeur en-tête de la quatrieme colonne n'est pas valide."; From 1bdcfebc07d8beffd336381b858101735c1b1935 Mon Sep 17 00:00:00 2001 From: EryneKL <97091460+EryneKL@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:30:52 +0200 Subject: [PATCH 9/9] =?UTF-8?q?FEAT=20ITEM-308-back-ajuster-le-controles-s?= =?UTF-8?q?ur-le-nombres-de-colonnes-par-ligne-dans-un-fichier-de-correspo?= =?UTF-8?q?ndances=20:=20=20=20=20=20=20-=20modification=20d'un=20contr?= =?UTF-8?q?=C3=B4le=20de=20longueur=20de=20ligne=20dans=20la=20m=C3=A9thod?= =?UTF-8?q?e=20checkBodyLine()=20dans=20FichierEnrichiSupp.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/fr/abes/item/core/components/FichierEnrichiSupp.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/src/main/java/fr/abes/item/core/components/FichierEnrichiSupp.java b/core/src/main/java/fr/abes/item/core/components/FichierEnrichiSupp.java index 0e409de6..6de2ecfa 100644 --- a/core/src/main/java/fr/abes/item/core/components/FichierEnrichiSupp.java +++ b/core/src/main/java/fr/abes/item/core/components/FichierEnrichiSupp.java @@ -10,7 +10,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.springframework.util.StringUtils; import java.io.BufferedReader; import java.io.FileInputStream; @@ -86,7 +85,7 @@ private void check3Cols(String ligne) throws FileCheckingException { private void checkBodyLine(String ligne, DemandeSupp demandeSupp) throws FileCheckingException { try { // contrôle de la longueur de la ligne - if (ligne.split(";").length > 3 || StringUtils.countOccurrencesOf(ligne, ";") != 3) { + if (ligne.split(";").length > 3) { throw new FileCheckingException(Constant.ERR_FILE_ERRLINE + " \"" + ligne + "\" " + Constant.ERR_FILE_3COL_SUPP_ANY_LINE); } String[] tabligne = ligne.split(";");