Skip to content

Commit

Permalink
Feat : ajout méthode récupération type document notice
Browse files Browse the repository at this point in the history
Intégration dans fichier sauvegarde csv
  • Loading branch information
pierre-maraval committed Oct 21, 2024
1 parent 0981942 commit b33399a
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -155,14 +155,17 @@ private LigneFichierDtoSupp processDemandeSupp(LigneFichierDto ligneFichierDto)
//récupération des exemplaires existants pour cette ligne
List<Exemplaire> exemplairesExistants = ((DemandeSuppService) strategyFactory.getStrategy(IDemandeService.class, TYPE_DEMANDE.SUPP))
.getExemplairesExistants(ligneFichierDtoSupp.getPpn());
//TODO voir dans getTypeDocumentFromPpn comment gérer la logique de la 008 pour les notices
String oo8 = ((DemandeSuppService) strategyFactory.getStrategy(IDemandeService.class, TYPE_DEMANDE.SUPP))
.getTypeDocumentFromPpn(ligneFichierDtoSupp.getPpn());
if (ligneFichierDtoSupp.getEpn() != null) {
Optional<Exemplaire> 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());
/*TODO : voir les éventuelles erreurs à catcher dans la récupération du type de document
La zone est normalement obligatoire, et forcément sur 4 caractères (à vérifier)
Que faire en cas d'erreur de requête sur la recherche du ppn, ou de construction de l'objet NoticeConcrete
*/
String typeDoc = ((DemandeSuppService) strategyFactory.getStrategy(IDemandeService.class, TYPE_DEMANDE.SUPP))
.getTypeDocumentFromPpn(ligneFichierDtoSupp.getPpn());
this.fichierSauvegardeSuppcsv.writePpnInFile(ligneFichierDtoSupp.getPpn(), exemplaireASupprimerOpt.get(), typeDoc);
}
//supprimer l'exemplaire
this.proxyRetry.deleteExemplaire(demandeSupp, ligneFichierDtoSupp);
Expand Down
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
@@ -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,7 +70,7 @@ public Integer findTraitementByDemandeId(Integer id) {
public List<String> constructHeaderCsv() {
List<ZonesAutorisees> listZonesAutorisees = this.iZonesAutoriseesDao.findAll();
List<String> headerCsv = new ArrayList<>();
headerCsv.add("PPN");
headerCsv.add("TYPE (008);PPN");
for (ZonesAutorisees zonesAutorisees: listZonesAutorisees) {
if(!zonesAutorisees.getLabelZone().startsWith("L")){
headerCsv.add(zonesAutorisees.getLabelZone()+zonesAutorisees.getSousZonesAutorisees().remove(0).getLibelle());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +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.Notice;
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 @@ -391,19 +391,15 @@ public String[] getNoticeExemplaireAvantApres(Demande demande, LigneFichier lign
}
}

public String getTypeDocumentFromPpn(String ppn) throws CBSException, IOException, QueryToSudocException {
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 -> {
//TODO reprendre ici et voir si on peut récupérer la 008 en récupérant la notice au format String
//TODO Parce que j'ai pas envie de parser en string pour aller chercher la 008n si une méthode existe deja dans accescbs
//Notice notice = traitementService.getCbs().getClientCBS()
//String notice = traitementService.getCbs().getClientCBS().mod("1", String.valueOf(traitementService.getCbs().getLotEncours()));
//log.debug(notice);
//yield notice;
NoticeConcrete notice = traitementService.getCbs().editerNoticeConcrete("1");
yield notice.findZone("008", 0).getValeur().substring(0,2);
}
default -> throw new QueryToSudocException(Constant.ERR_FILE_MULTIPLES_NOTICES_FOUND + traitementService.getCbs().getListePpn());
};
Expand Down

0 comments on commit b33399a

Please sign in to comment.