diff --git a/batch/pom.xml b/batch/pom.xml index 47c5e2a4..1023f84b 100644 --- a/batch/pom.xml +++ b/batch/pom.xml @@ -3,7 +3,7 @@ itembackoffice fr.abes.item - 3.2.0 + 3.2.1-SNAPSHOT 4.0.0 jar diff --git a/batch/src/main/resources/log4j2.xml b/batch/src/main/resources/log4j2.xml index d6c18ce6..e1ec43bc 100644 --- a/batch/src/main/resources/log4j2.xml +++ b/batch/src/main/resources/log4j2.xml @@ -5,7 +5,7 @@ + pattern="%style{%d{ISO8601}}{white} %highlight{%-5level }[%style{%t}{bright,blue}] %style{%C{1.}}{dark,yellow}: %msg%n%throwable" /> @@ -14,6 +14,7 @@ + diff --git a/core/pom.xml b/core/pom.xml index 27b96032..9ce01464 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -3,7 +3,7 @@ itembackoffice fr.abes.item - 3.2.0 + 3.2.1-SNAPSHOT 4.0.0 jar 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 919c7c97..dda7e97a 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 @@ -13,10 +13,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import java.io.BufferedWriter; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; +import java.io.*; import java.nio.file.Path; import java.util.List; @@ -38,10 +35,11 @@ public void writePpnInFile(String ppn, Exemplaire exemplaire, String typeDoc) th PrintWriter out = new PrintWriter(bw)) { // création de la liste de référence pour trouver l'emplacement de chaque zone et sous-zone List listDeReference = referenceService.constructHeaderCsv(); - listDeReference.remove(0); - listDeReference.remove(0); + listDeReference.subList(0, 4).clear(); // ajout de la ligne - out.println(typeDoc + ";" + ppn + ";" + gererZones(listDeReference, exemplaire)); + String rcr = exemplaire.findZone("930", 0).findSubLabel("$b"); + String epn = exemplaire.findZone("A99", 0).getValeur(); + out.println(typeDoc + ";" + ppn + ";" + rcr + ";" + epn + ";" + gererZones(listDeReference, exemplaire)); } catch (IOException ex) { throw new StorageException("Impossible d'écrire dans le fichier de sauvegarde csv"); } @@ -110,13 +108,25 @@ public void checkFileContent(Demande d) throws FileCheckingException, IOExceptio } public void writeHeader() { - try (FileWriter fw = new FileWriter(this.getPath().resolve(this.getFilename()).toString(), true); - BufferedWriter bw = new BufferedWriter(fw); - PrintWriter out = new PrintWriter(bw)) { - // ajout de la ligne - out.println(String.join(";", this.referenceService.constructHeaderCsv())); + if (!isHeaderExist()) { + try (FileWriter fw = new FileWriter(this.getPath().resolve(this.getFilename()).toString(), true); + BufferedWriter bw = new BufferedWriter(fw); + PrintWriter out = new PrintWriter(bw)) { + // ajout de la ligne + out.println(String.join(";", this.referenceService.constructHeaderCsv())); + } catch (IOException ex) { + throw new StorageException(Constant.ERR_FILE_WRITING + "de sauvegarde csv"); + } + } + } + + private boolean isHeaderExist() { + try (FileReader fr = new FileReader(this.getPath().resolve(this.getFilename()).toString()); + BufferedReader br = new BufferedReader(fr)) { + String line = br.readLine(); + return line != null && line.startsWith("TYPE (008);PPN;"); } catch (IOException ex) { - throw new StorageException("Impossible d'écrire dans le fichier de sauvegarde csv"); + throw new StorageException(Constant.ERR_FILE_READING + " de sauvegarde csv"); } } } 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 ee008613..60e05090 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 @@ -27,7 +27,7 @@ public void writePpnInFile(String ppn, Exemplaire exemplaire) throws StorageExce 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("PPN " + ppn); out.print("\n"); out.println(exemplaire); out.println("\n"); 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 381db2e0..b811a14b 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 @@ -142,6 +142,7 @@ public class Constant implements Serializable { public static final String ERR_FILE_STORAGE_FILE = "Echec de stockage du fichier suivant : "; public static final String ERR_FILE_STORAGE_FILE_UNREADABLE = "Fichier illisible, verifier que le format du fichier est bien un fichier texte."; public static final String ERR_FILE_READING = "Ne peut pas lire le fichier : "; + public static final String ERR_FILE_WRITING = "Echec de l'écriture dans le fichier "; /**Specific errors on file checking*/ public static final String ERR_FILE_LIGNE_ANORNALE = "L'en-tête du fichier est non conforme : il contient des caractères parasites. Merci de consulter la documentation utilisateur à cette adresse : http://documentation.abes.fr/aideitem/index.html"; diff --git a/core/src/main/java/fr/abes/item/core/service/ReferenceService.java b/core/src/main/java/fr/abes/item/core/service/ReferenceService.java index b9148726..859ba6eb 100644 --- a/core/src/main/java/fr/abes/item/core/service/ReferenceService.java +++ b/core/src/main/java/fr/abes/item/core/service/ReferenceService.java @@ -72,6 +72,8 @@ public List constructHeaderCsv() { List headerCsv = new ArrayList<>(); headerCsv.add("TYPE (008)"); headerCsv.add("PPN"); + headerCsv.add("RCR"); + headerCsv.add("EPN"); for (ZonesAutorisees zonesAutorisees: listZonesAutorisees) { if(!zonesAutorisees.getLabelZone().startsWith("L")){ headerCsv.add(zonesAutorisees.getLabelZone()+zonesAutorisees.getSousZonesAutorisees().remove(0).getLibelle()); 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 8601980d..3e4c4f33 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 @@ -355,7 +355,7 @@ public String[] getNoticeExemplaireAvantApres(Demande demande, LigneFichier lign DemandeSupp demandeSupp = (DemandeSupp) demande; try { traitementService.authenticate("M" + demandeSupp.getRcr()); - List exemplairesExistants = getExemplairesExistants(ligneFichierSupp); + List exemplairesExistants = getExemplairesExistants(ligneFichierSupp.getPpn()); //On ne conserve que les EPN de son RCR exemplairesExistants = exemplairesExistants.stream().filter(exemplaire -> exemplaire.findZone("930", 0).findSubLabel("$b").equals(demandeSupp.getRcr())).toList(); if (exemplairesExistants.isEmpty()) { @@ -393,15 +393,7 @@ public String getTypeDocumentFromPpn(String ppn) throws CBSException, IOExceptio }; } - public List getExemplairesExistants(LigneFichierSupp ligneFichierSupp) throws IOException, QueryToSudocException, CBSException, ZoneException { - return getExemplairesExistants(ligneFichierSupp.getPpn()); - } - public List getExemplairesExistants(String ppn) throws IOException, QueryToSudocException, CBSException, ZoneException { - return getExemplairesExistantsInternal(ppn); - } - - private List getExemplairesExistantsInternal(String ppn) throws IOException, QueryToSudocException, CBSException, ZoneException { String query = "che ppn " + ppn; traitementService.getCbs().search(query); int nbReponses = traitementService.getCbs().getNbNotices(); diff --git a/core/src/test/java/fr/abes/item/core/service/ReferenceServiceTest.java b/core/src/test/java/fr/abes/item/core/service/ReferenceServiceTest.java index 9dc79223..c919cab1 100644 --- a/core/src/test/java/fr/abes/item/core/service/ReferenceServiceTest.java +++ b/core/src/test/java/fr/abes/item/core/service/ReferenceServiceTest.java @@ -1,10 +1,7 @@ package fr.abes.item.core.service; -import fr.abes.cbs.exception.CBSException; -import fr.abes.cbs.exception.ZoneException; import fr.abes.item.core.entities.item.SousZonesAutorisees; import fr.abes.item.core.entities.item.ZonesAutorisees; -import fr.abes.item.core.exception.QueryToSudocException; import fr.abes.item.core.repository.item.IEtatDemandeDao; import fr.abes.item.core.repository.item.ITraitementDao; import fr.abes.item.core.repository.item.ITypeExempDao; @@ -15,7 +12,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; -import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -65,7 +61,7 @@ void constructHeaderCsv() { Mockito.when(iZonesAutoriseesDao.findAll()).thenReturn(zonesAutoriseesList); List test = referenceService.constructHeaderCsv(); - List reference = List.of("TYPE (008);PPN;917$a;930$c;$d;".split(";")); + List reference = List.of("TYPE (008);PPN;RCR;EPN;917$a;930$c;$d;".split(";")); assertEquals(reference,test); diff --git a/pom.xml b/pom.xml index fddf3226..8212a06d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ fr.abes.item itembackoffice - 3.2.0 + 3.2.1-SNAPSHOT core web @@ -77,7 +77,7 @@ fr.abes.api-communes AccesCbs - 2.5.74 + 2.5.76 diff --git a/web/pom.xml b/web/pom.xml index 794af9b3..ca19dd83 100644 --- a/web/pom.xml +++ b/web/pom.xml @@ -3,7 +3,7 @@ itembackoffice fr.abes.item - 3.2.0 + 3.2.1-SNAPSHOT 4.0.0 jar