Skip to content

Commit

Permalink
Merge pull request #71 from abes-esr/develop
Browse files Browse the repository at this point in the history
develop
  • Loading branch information
EryneKL authored Oct 23, 2024
2 parents 7556faa + be25a7c commit dc05e51
Show file tree
Hide file tree
Showing 9 changed files with 41 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,19 @@ private LigneFichierDtoSupp processDemandeSupp(LigneFichierDto ligneFichierDto)
if (ligneFichierDtoSupp.getEpn() != null) {
Optional<Exemplaire> exemplaireASupprimerOpt = exemplairesExistants.stream().filter(exemplaire -> exemplaire.findZone("A99", 0).getValeur().equals(ligneFichierDtoSupp.getEpn())).findFirst();
if (exemplaireASupprimerOpt.isPresent()) {
//Type de document non présent dans le fichier de sauvegarde txt, seulement dans le csv
this.fichierSauvegardeSuppTxt.writePpnInFile(ligneFichierDtoSupp.getPpn(), exemplaireASupprimerOpt.get());
this.fichierSauvegardeSuppcsv.writePpnInFile(ligneFichierDtoSupp.getPpn(), exemplaireASupprimerOpt.get());
try{
String typeDoc = ((DemandeSuppService) strategyFactory.getStrategy(IDemandeService.class, TYPE_DEMANDE.SUPP))
.getTypeDocumentFromPpn(ligneFichierDtoSupp.getPpn());
this.fichierSauvegardeSuppcsv.writePpnInFile(ligneFichierDtoSupp.getPpn(), exemplaireASupprimerOpt.get(), typeDoc);
} catch (CBSException | IOException | ZoneException | QueryToSudocException e) {
if(e.getClass().equals(QueryToSudocException.class)){
this.fichierSauvegardeSuppcsv.writePpnInFile(ligneFichierDtoSupp.getPpn(), exemplaireASupprimerOpt.get(), e.getMessage());
}else{
this.fichierSauvegardeSuppcsv.writePpnInFile(ligneFichierDtoSupp.getPpn(), exemplaireASupprimerOpt.get(), "");
}
}
}
//supprimer l'exemplaire
this.proxyRetry.deleteExemplaire(demandeSupp, ligneFichierDtoSupp);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ protected int getIndexZone(IndexRecherche indexCourant, String[] tabLigne, int i
*/
protected void checkRcr(String rcrFichier, String rcr, int ligneCourante) throws FileCheckingException {
if (!rcrFichier.equals(rcr)) {
throw new FileCheckingException(Constant.ERR_FILE_ERRLINE + ligneCourante + Constant.ERR_FILE_WRONGRCR);
throw new FileCheckingException(Constant.ERR_FILE_LINE + ligneCourante + " : " + Constant.ERR_FILE_WRONGRCR);
}
}

Expand All @@ -100,7 +100,7 @@ protected void checkRcr(String rcrFichier, String rcr, int ligneCourante) throws
*/
protected void checkPpn(String ppn, int ligneCourante) throws FileCheckingException {
if (!ppn.matches("^(\\d{8}[0-9X])?$")){
throw new FileCheckingException(Constant.ERR_FILE_ERRLINE + ligneCourante + Constant.ERR_FILE_WRONGPPN);
throw new FileCheckingException(Constant.ERR_FILE_LINE + ligneCourante + " : " + Constant.ERR_FILE_WRONGPPN);
}
}

Expand All @@ -111,7 +111,7 @@ protected void checkPpn(String ppn, int ligneCourante) throws FileCheckingExcept
*/
protected void checkEpn(String epn, int ligneCourante) throws FileCheckingException {
if (!epn.matches("^(\\d{8}[0-9X])?$")) {
throw new FileCheckingException(Constant.ERR_FILE_ERRLINE + ligneCourante + Constant.ERR_FILE_WRONGEPN);
throw new FileCheckingException(Constant.ERR_FILE_LINE + ligneCourante + " : " + Constant.ERR_FILE_WRONGEPN);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ private void checkBodyLine(String ligne, DemandeSupp demandeSupp) throws FileChe
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);
throw new FileCheckingException(Constant.ERR_FILE_LINE + ligne + " : " + Constant.ERR_FILE_3COL_SUPP_ANY_LINE);
}
String[] tabligne = ligne.split(";");
// contrôle du ppn
Expand All @@ -98,7 +98,7 @@ private void checkBodyLine(String ligne, DemandeSupp demandeSupp) throws FileChe
if (tabligne.length > 2)
checkEpn(tabligne[2], ligneCourante);
} catch (IndexOutOfBoundsException e) {
throw new FileCheckingException(Constant.ERR_FILE_ERRLINE + ligneCourante + Constant.ERR_FILE_LINELENGTH);
throw new FileCheckingException(Constant.ERR_FILE_LINE + ligneCourante + " : " + Constant.ERR_FILE_LINELENGTH);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,15 @@ public FichierSauvegardeSuppCsv(ReferenceService referenceService) {
this.referenceService = referenceService;
}

public void writePpnInFile(String ppn, Exemplaire exemplaire) throws StorageException {
public void writePpnInFile(String ppn, Exemplaire exemplaire, String typeDoc) throws StorageException {
try (FileWriter fw = new FileWriter(this.getPath().resolve(this.getFilename()).toString(), true);
BufferedWriter bw = new BufferedWriter(fw);
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<String> listDeReference = referenceService.constructHeaderCsv();
listDeReference.remove(0);
// ajout de la ligne
out.println(ppn + ";" + gererZones(listDeReference, exemplaire));
out.println(typeDoc + ";" + ppn + ";" + gererZones(listDeReference, exemplaire));
} catch (IOException ex) {
throw new StorageException("Impossible d'écrire dans le fichier de sauvegarde csv");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ public class Constant implements Serializable {
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 doit contenir trois colones";
public static final String ERR_FILE_ERRLINE = "Erreur ligne ";
public static final String ERR_FILE_LINE = "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.";
public static final String ERR_FILE_LINELENGTH = " : Il y a un problème lié à la longueur de la ligne.";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package fr.abes.item.core.service;

import fr.abes.item.core.entities.item.*;
import fr.abes.item.core.repository.item.*;
import fr.abes.item.core.repository.item.IEtatDemandeDao;
import fr.abes.item.core.repository.item.ITraitementDao;
import fr.abes.item.core.repository.item.ITypeExempDao;
import fr.abes.item.core.repository.item.IZonesAutoriseesDao;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
Expand Down Expand Up @@ -67,6 +70,7 @@ public Integer findTraitementByDemandeId(Integer id) {
public List<String> constructHeaderCsv() {
List<ZonesAutorisees> listZonesAutorisees = this.iZonesAutoriseesDao.findAll();
List<String> headerCsv = new ArrayList<>();
headerCsv.add("TYPE (008)");
headerCsv.add("PPN");
for (ZonesAutorisees zonesAutorisees: listZonesAutorisees) {
if(!zonesAutorisees.getLabelZone().startsWith("L")){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import fr.abes.cbs.exception.CBSException;
import fr.abes.cbs.exception.ZoneException;
import fr.abes.cbs.notices.Exemplaire;
import fr.abes.cbs.notices.NoticeConcrete;
import fr.abes.item.core.components.*;
import fr.abes.item.core.configuration.factory.FichierFactory;
import fr.abes.item.core.configuration.factory.Strategy;
Expand Down Expand Up @@ -390,6 +391,20 @@ public String[] getNoticeExemplaireAvantApres(Demande demande, LigneFichier lign
}
}

public String getTypeDocumentFromPpn(String ppn) throws CBSException, IOException, QueryToSudocException, ZoneException {
String query = "che ppn " + ppn;
traitementService.getCbs().search(query);
int nbReponses = traitementService.getCbs().getNbNotices();
return switch (nbReponses) {
case 0 -> throw new QueryToSudocException(Constant.ERR_FILE_NOTICE_NOT_FOUND);
case 1 -> {
NoticeConcrete notice = traitementService.getCbs().editerNoticeConcrete("1");
yield notice.getNoticeBiblio().findZone("008", 0).findSubLabel("$a").substring(0,2);
}
default -> throw new QueryToSudocException(Constant.ERR_FILE_MULTIPLES_NOTICES_FOUND + traitementService.getCbs().getListePpn());
};
}

public List<Exemplaire> getExemplairesExistants(LigneFichierSupp ligneFichierSupp) throws IOException, QueryToSudocException, CBSException, ZoneException {
return getExemplairesExistants(ligneFichierSupp.getPpn());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ void constructHeaderCsv() {
Mockito.when(iZonesAutoriseesDao.findAll()).thenReturn(zonesAutoriseesList);

List<String> test = referenceService.constructHeaderCsv();
List<String> reference = List.of("PPN;917$a;930$c;$d;".split(";"));
List<String> reference = List.of("TYPE (008);PPN;917$a;930$c;$d;".split(";"));

assertEquals(reference,test);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,6 @@ void addZeros(){
assertThat(Utilitaires.addZeros(str, 9)).isEqualTo("000000012");
}

@Test
void stringToRemove(){
String string = "230727409;seau;bleu;;;";
String stringResult = Utilitaires.removeSemicolonFromEndOfLine(string);
System.out.println(stringResult);
}

/**
* Test de vérification de la méthode supprimant les données locales de la première ligne du fichier
*/
Expand Down

0 comments on commit dc05e51

Please sign in to comment.