Skip to content

Commit

Permalink
Feat : Ajout appel procédure stockée epntoppn, alimentation fichier p…
Browse files Browse the repository at this point in the history
…réparée après appel à la procédure
  • Loading branch information
pierre-maraval committed Aug 20, 2024
1 parent 8f36818 commit 29df624
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 17 deletions.
17 changes: 17 additions & 0 deletions core/src/main/java/fr/abes/item/core/components/Epntoppn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package fr.abes.item.core.components;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

@Component
public class Epntoppn {
private final JdbcTemplate baseXmlJdbcTemplate;

public Epntoppn(JdbcTemplate baseXmlJdbcTemplate) {
this.baseXmlJdbcTemplate = baseXmlJdbcTemplate;
}

public String callFunction(String lesepns, String lercr) {
return baseXmlJdbcTemplate.queryForObject("SELECT AUTORITES.EPNTOPPN_JSON('" + lesepns + "', '" + lercr + "') from DUAL", String.class);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,11 @@ public void ecrireEnTete() {
}

/**
* Méthode permetant d'alimenter le fichier à partir d'une chaine correspondant à un appel de la fonction Oracle
* Méthode permetant d'alimenter le fichier à partir d'une chaine correspondant à une liste d'epn
* @param input résultat de l'appel à la fonction Oracle
* @param rcr rcr de la demandeModif à insérer dans le second champ du fichier
*/
public void alimenter(String input, String listeppn, String rcr) {
public void alimenterEpn(String input, String listeppn, String rcr) {
try (FileWriter fw = new FileWriter(path.resolve(filename).toString(), true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw)) {
Expand All @@ -92,7 +92,31 @@ public void alimenter(String input, String listeppn, String rcr) {
}

}


/**
* Méthode permetant d'alimenter le fichier à partir d'une chaine correspondant à une liste de PPN
* @param input résultat de l'appel à la fonction Oracle
* @param rcr rcr de la demandeModif à insérer dans le second champ du fichier
*/
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)) {
String[] tabEpn = listeEpn.split(",");
Multimap<String, String> resJson = Utilitaires.parseJson(input);
for (String epn : tabEpn) {
if (resJson.containsKey(epn)) {
for (String ppn : resJson.get(epn)) {
out.println(ppn + ";" + rcr + ";" + epn + ";");
}
} else
out.println(";" + rcr + ";" + epn + ";");
}
} catch (IOException ex) {
log.error(Constant.ERROR_UNABLE_TO_CREATE_FILE);
}

}


}
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ private void appelProcStockee(String rcr) throws IOException {
List<String> listppn = fichierInit.cutFile();
for (String listeppn : listppn) {
String resultProcStockee = procStockee.callFunction(listeppn, rcr);
fichierPrepare.alimenter(resultProcStockee, listeppn, rcr);
fichierPrepare.alimenterEpn(resultProcStockee, listeppn, rcr);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,26 +37,29 @@
@Service
@Strategy(type = IDemandeService.class, typeDemande = {TYPE_DEMANDE.SUPP})
public class DemandeSuppService extends DemandeService implements IDemandeService {
private static final Integer nbIdMaxPerRequest = 300;

private final IDemandeSuppDao demandeSuppDao;
private final ReferenceService referenceService;
private final UtilisateurService utilisateurService;
private final FileSystemStorageService storageService;

private FichierInitialSupp fichierInit;
private FichierPrepareSupp fichierPrepare;

private final Ppntoepn procStockee;
private final Ppntoepn procStockeePpnToEpn;
private final Epntoppn procStockeeEpnToPpn;

@Value("${files.upload.path}")
private String uploadPath;

public DemandeSuppService(ILibProfileDao libProfileDao, IDemandeSuppDao demandeSuppDao, FileSystemStorageService storageService, ReferenceService referenceService, UtilisateurService utilisateurService, Ppntoepn procStockee) {
public DemandeSuppService(ILibProfileDao libProfileDao, IDemandeSuppDao demandeSuppDao, FileSystemStorageService storageService, ReferenceService referenceService, UtilisateurService utilisateurService, Ppntoepn procStockeePpnToEpn, Epntoppn procStockeeEpnToPpn) {
super(libProfileDao);
this.demandeSuppDao = demandeSuppDao;
this.storageService = storageService;
this.referenceService = referenceService;
this.utilisateurService = utilisateurService;
this.procStockee = procStockee;
this.procStockeePpnToEpn = procStockeePpnToEpn;
this.procStockeeEpnToPpn = procStockeeEpnToPpn;
}

@Override
Expand All @@ -78,7 +81,7 @@ public DemandeSupp findById(Integer id) {
@Override
public Demande creerDemande(String rcr, Integer userNum) {
Calendar calendar = Calendar.getInstance();
DemandeSupp demandeSupp = new DemandeSupp(rcr, calendar.getTime(), calendar.getTime(),null,null, referenceService.findEtatDemandeById(Constant.ETATDEM_PREPARATION), utilisateurService.findById(userNum));
DemandeSupp demandeSupp = new DemandeSupp(rcr, calendar.getTime(), calendar.getTime(), null, null, referenceService.findEtatDemandeById(Constant.ETATDEM_PREPARATION), utilisateurService.findById(userNum));
demandeSupp.setIln(Objects.requireNonNull(libProfileDao.findById(rcr).orElse(null)).getIln());
setIlnShortNameOnDemande(demandeSupp);
DemandeSupp demToReturn = (DemandeSupp) save(demandeSupp);
Expand Down Expand Up @@ -155,9 +158,7 @@ private void checkEtatDemande(DemandeSupp demande) throws DemandeCheckingExcepti
switch (etat) {
case Constant.ETATDEM_PREPARATION -> preparerFichierEnPrep(demande);
case Constant.ETATDEM_PREPAREE -> changeState(demande, Constant.ETATDEM_ACOMPLETER);
case Constant.ETATDEM_ACOMPLETER -> {
changeState(demande, Constant.ETATDEM_SIMULATION);
}
case Constant.ETATDEM_ACOMPLETER -> changeState(demande, Constant.ETATDEM_SIMULATION);
}
}

Expand All @@ -181,10 +182,18 @@ private void preparerFichierEnPrep(DemandeSupp demande) throws IOException, Dema
* @throws IOException fichier illisible
*/
private void appelProcStockee(String rcr, TYPE_SUPPRESSION type) throws IOException {
List<String> listppn = fichierInit.cutFile();
for (String listeppn : listppn) {
String resultProcStockee = procStockee.callFunction(listeppn, rcr);
fichierPrepare.alimenter(resultProcStockee, listeppn, rcr);
if (type.equals(TYPE_SUPPRESSION.PPN)) {
List<String> listppn = fichierInit.cutFile();
for (String listePpn : listppn) {
String resultProcStockee = procStockeePpnToEpn.callFunction(listePpn, rcr);
fichierPrepare.alimenterEpn(resultProcStockee, listePpn, rcr);
}
} else {
List<String> listEpn = fichierInit.cutFile();
for (String listeepn : listEpn) {
String resultProcStockee = procStockeeEpnToPpn.callFunction(listeepn, rcr);
fichierPrepare.alimenterPpn(resultProcStockee, listeepn, rcr);
}
}
}

Expand Down Expand Up @@ -252,7 +261,8 @@ public Demande returnState(Integer etape, Demande demande) throws DemandeCheckin
}

@Override
public String[] getNoticeExemplaireAvantApres(Demande demande, LigneFichier ligneFichier) throws CBSException, ZoneException, IOException {
public String[] getNoticeExemplaireAvantApres(Demande demande, LigneFichier ligneFichier) throws
CBSException, ZoneException, IOException {
return new String[0];
}

Expand Down

0 comments on commit 29df624

Please sign in to comment.