From ac656a91554ced80b88b667d3f9f1fee6449fe0d Mon Sep 17 00:00:00 2001 From: pierre-maraval Date: Wed, 2 Oct 2024 09:37:38 +0200 Subject: [PATCH] =?UTF-8?q?FIX=20:=20Modification=20=C3=A9criture=20dans?= =?UTF-8?q?=20fichier=20de=20sauvegarde=20Ecriture=20d'un=20seul=20exempla?= =?UTF-8?q?ire=20au=20lieu=20d'une=20liste?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LignesFichierProcessor.java | 8 +++++--- .../components/FichierSauvegardeSuppCsv.java | 16 +++++++--------- .../components/FichierSauvegardeSuppTxt.java | 9 +++------ 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/batch/src/main/java/fr/abes/item/batch/traitement/traiterlignesfichierchunk/LignesFichierProcessor.java b/batch/src/main/java/fr/abes/item/batch/traitement/traiterlignesfichierchunk/LignesFichierProcessor.java index d7f667e2..366dffda 100644 --- a/batch/src/main/java/fr/abes/item/batch/traitement/traiterlignesfichierchunk/LignesFichierProcessor.java +++ b/batch/src/main/java/fr/abes/item/batch/traitement/traiterlignesfichierchunk/LignesFichierProcessor.java @@ -32,6 +32,7 @@ import java.nio.file.Path; import java.sql.SQLException; import java.util.List; +import java.util.Optional; @Slf4j public class LignesFichierProcessor implements ItemProcessor, StepExecutionListener { @@ -151,9 +152,10 @@ private LigneFichierDtoSupp processDemandeSupp(LigneFichierDto ligneFichierDto) //récupération des exemplaires existants pour cette ligne List exemplairesExistants = ((DemandeSuppService) strategyFactory.getStrategy(IDemandeService.class, TYPE_DEMANDE.SUPP)) .getExemplairesExistants(ligneFichierDtoSupp.getPpn()); - if (!exemplairesExistants.isEmpty()){ - this.fichierSauvegardeSuppTxt.writePpnInFile(ligneFichierDtoSupp.getPpn(), exemplairesExistants); - this.fichierSauvegardeSuppcsv.writePpnInFile(ligneFichierDtoSupp.getPpn(), exemplairesExistants); + Optional exemplaireASupprimerOpt = exemplairesExistants.stream().filter(exemplaire -> exemplaire.findZone("A99", 0).getValeur().equals(ligneFichierDtoSupp.getEpn())).findFirst(); + if (exemplaireASupprimerOpt.isPresent()){ + this.fichierSauvegardeSuppTxt.writePpnInFile(ligneFichierDtoSupp.getPpn(), exemplaireASupprimerOpt.get()); + this.fichierSauvegardeSuppcsv.writePpnInFile(ligneFichierDtoSupp.getPpn(), exemplaireASupprimerOpt.get()); } //supprimer l'exemplaire this.proxyRetry.deleteExemplaire(demandeSupp, ligneFichierDtoSupp); diff --git a/core/src/main/java/fr/abes/item/core/components/FichierSauvegardeSuppCsv.java b/core/src/main/java/fr/abes/item/core/components/FichierSauvegardeSuppCsv.java index 97c6c306..f876a1b5 100644 --- a/core/src/main/java/fr/abes/item/core/components/FichierSauvegardeSuppCsv.java +++ b/core/src/main/java/fr/abes/item/core/components/FichierSauvegardeSuppCsv.java @@ -29,16 +29,14 @@ public FichierSauvegardeSuppCsv() { this.csvContent = new StringBuilder(); } - public void writePpnInFile(String ppn, List exemplaires) throws StorageException { + public void writePpnInFile(String ppn, Exemplaire exemplaire) throws StorageException { // TODO boucler sur chaque exemplaire et rechercher une correspondance entre une zone de l'exemplaire et la première zone du header, si correspondance alors mettre la zone exemplaire au bon index dans le csvContent - for (Exemplaire exemplaire : exemplaires) { - this.csvContent.append(ppn).append(";"); // ajout du ppn - for (String zoneAChercher : this.csvContent.toString().split(";")) { - List listZones = exemplaire.getListeZones().values().stream().filter(exemp -> exemp.getLabel().equals(zoneAChercher)).toList(); // getLabel renvoi le numéro d'exemplaire (exemple e01) - for (Zone zone : listZones) { - // TODO la zone et l'inclure dans le csvContent à la bonne place - - } + this.csvContent.append(ppn).append(";"); // ajout du ppn + for (String zoneAChercher : this.csvContent.toString().split(";")) { + List listZones = exemplaire.getListeZones().values().stream().filter(exemp -> exemp.getLabel().equals(zoneAChercher)).toList(); // getLabel renvoi le numéro d'exemplaire (exemple e01) + for (Zone zone : listZones) { + // TODO la zone et l'inclure dans le csvContent à la bonne place + } diff --git a/core/src/main/java/fr/abes/item/core/components/FichierSauvegardeSuppTxt.java b/core/src/main/java/fr/abes/item/core/components/FichierSauvegardeSuppTxt.java index d4dac8b4..d93b8956 100644 --- a/core/src/main/java/fr/abes/item/core/components/FichierSauvegardeSuppTxt.java +++ b/core/src/main/java/fr/abes/item/core/components/FichierSauvegardeSuppTxt.java @@ -15,23 +15,20 @@ import java.io.IOException; import java.io.PrintWriter; import java.nio.file.Path; -import java.util.List; @Setter @Getter @Component public class FichierSauvegardeSuppTxt extends AbstractFichier implements Fichier { - public void writePpnInFile(String ppn, List exemplaires) throws StorageException { + public void writePpnInFile(String ppn, Exemplaire exemplaire) throws StorageException { try (FileWriter fw = new FileWriter(this.getPath().resolve(this.getFilename()).toString(), true); BufferedWriter bw = new BufferedWriter(fw); PrintWriter out = new PrintWriter(bw)) { out.println(ppn); out.println("\n"); - exemplaires.forEach(exemplaire -> { - out.println(exemplaire); - out.println("\n"); - }); + out.println(exemplaire); + out.println("\n"); out.println("\n"); } catch (IOException ex) { throw new StorageException("Impossible d'écrire dans le fichier de sauvegarde txt");