Skip to content

Commit

Permalink
Merge branch 'develop' into ITEM-267-batch-modifier-la-methode-de-sau…
Browse files Browse the repository at this point in the history
…vegarde-csv
  • Loading branch information
jvk88511334 committed Oct 23, 2024
2 parents 680f8c7 + 52d1c00 commit 8c20ada
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 51 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ protected void checkRcr(String rcrFichier, String rcr, int ligneCourante) throws
* @throws FileCheckingException : erreur de format de fichier
*/
protected void checkPpn(String ppn, int ligneCourante) throws FileCheckingException {
if (!ppn.matches("^\\d{8}[0-9X]$")){
if (!ppn.matches("^(\\d{8}[0-9X])?$")){
throw new FileCheckingException(Constant.ERR_FILE_ERRLINE + ligneCourante + Constant.ERR_FILE_WRONGPPN);
}
}
Expand All @@ -110,7 +110,7 @@ protected void checkPpn(String ppn, int ligneCourante) throws FileCheckingExcept
* @throws FileCheckingException: erreur de format de l'epn
*/
protected void checkEpn(String epn, int ligneCourante) throws FileCheckingException {
if (!epn.matches("^\\d{8}[0-9X]$")) {
if (!epn.matches("^(\\d{8}[0-9X])?$")) {
throw new FileCheckingException(Constant.ERR_FILE_ERRLINE + ligneCourante + Constant.ERR_FILE_WRONGEPN);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public void checkFileContent(Demande d) throws FileCheckingException, IOExceptio
* @throws FileCheckingException : erreur dans le format de la ligne
*/
private void check3Cols(String ligne) throws FileCheckingException {
if (ligne.split(";").length < 3) {
if (ligne.split(";").length != 3) {
throw new FileCheckingException(Constant.ERR_FILE_3COL_SUPP);
}
if (ligne.length() < 11) {
Expand All @@ -84,12 +84,17 @@ private void check3Cols(String ligne) throws FileCheckingException {
*/
private void checkBodyLine(String ligne, DemandeSupp demandeSupp) throws FileCheckingException {
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);
}
String[] tabligne = ligne.split(";");
// contrôle du ppn
if (demandeSupp.getTypeSuppression().equals(TYPE_SUPPRESSION.EPN) && tabligne[0] != null) {
checkPpn(tabligne[0], ligneCourante);
}
checkRcr(tabligne[1], demandeSupp.getRcr(), ligneCourante);
//cas ou l'epn est renseigné
// contrôle de l'epn s'il est renseigné
if (tabligne.length > 2)
checkEpn(tabligne[2], ligneCourante);
} catch (IndexOutOfBoundsException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

@Slf4j
Expand All @@ -40,13 +39,14 @@ public int getType() {
return Constant.ETATDEM_PREPAREE;
}


@Override
public TYPE_DEMANDE getDemandeType() {return TYPE_DEMANDE.MODIF; }
public TYPE_DEMANDE getDemandeType() {
return TYPE_DEMANDE.MODIF;
}

@Override
public void checkFileContent(Demande demandeModif) {
//nothing to do
//nothing to do
}

@Override
Expand Down Expand Up @@ -98,8 +98,8 @@ public void alimenterEpn(String input, String listeppn, String rcr) {
*/
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)) {
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw)) {
String[] tabEpn = listeEpn.split(",");
Multimap<String, String> resJson = Utilitaires.parseJson(input, true);
for (String epn : tabEpn) {
Expand All @@ -125,9 +125,10 @@ public void trierLignesDeCorrespondances() throws IOException {

List<String> correspondanceSortList = new ArrayList<>();
String header = reader.readLine();//cette ligne enleve le header et le stock
correspondanceSortList.add(header + "\n");
correspondanceSortList.add(header);
reader.lines().sorted().forEach(line -> {
correspondanceSortList.add(line+"\n");
correspondanceSortList.add("\n");
correspondanceSortList.add(line);
});
reader.close();
fileReader.close();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,53 +14,18 @@
@Plugin(name = "ItemLogAppender", category = "core", elementType = Appender.ELEMENT_TYPE)
public class ItemLogAppender extends AbstractAppender {

// Utilisation d'un ThreadLocal pour stocker l'heure de début de chaque méthode
private static final ThreadLocal<Long> startTime = new ThreadLocal<>();

// Seuil en ms au dessus duquel on veut afficher un message
private final int msSeuilDetection = 0;

protected ItemLogAppender(String name, Filter filter) {
super(name, filter, null);
}

// Méthode à appeler pour démarrer le chronométrage
public static void startMethodExecution() {
startTime.set(System.currentTimeMillis());
}

/**
* Appender permettant une normalisation des logs
* Pour obtenir le temps d'execution d'une méthode, ajoutez
* ItemLogAppender.startMethodExecution();
* au début d'une méthode. L'appender calcule par méthode sans
* besoin d'une borne d'arrêt ou de fin
* @param event
*/
@Override
public void append(LogEvent event) {
if (event.getLevel().isMoreSpecificThan(Level.INFO)) {
String originalMessage = event.getMessage().getFormattedMessage();
String demandeId = ThreadContext.get("demandeId");
String typeDemande = ThreadContext.get("typeDemande");
if (demandeId != null && typeDemande != null) {
// Calcul du temps d'exécution
Long startTimeValue = startTime.get();
long executionTime = startTimeValue != null ? System.currentTimeMillis() - startTimeValue : -1;

if (executionTime < msSeuilDetection) {
System.out.println("DEM_" + typeDemande + "_" + demandeId + " / "
+ event.getSource().getClassName() + " / "
+ event.getSource().getMethodName() + " : "
+ originalMessage);
}
//Uniquement si un ItemLogAppender.startMethodExecution(); à été placé au début d'une méthode
else{
System.out.println("DEM_" + typeDemande + "_" + demandeId + " / "
+ event.getSource().getClassName() + " / "
+ event.getSource().getMethodName() + " : "
+ originalMessage + " / Execution time: " + executionTime + " ms");
}
System.out.println("DEM_" + typeDemande + "_" + demandeId + " : " + originalMessage);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ public class Constant implements Serializable {
public static final String ERR_FILE_TOOMUCH_SUPP = Constant.ERR_FILE_TOOMUCH_START + Constant.MAX_LIGNE_FICHIER_INIT_SUPP + Constant.ERR_FILE_TOOMUCH_END;
public static final String ERR_FILE_3COL_MODIF = "La première ligne du fichier doit contenir 4 colonnes (ppn;rcr;epn;zone).";
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_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.";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ private void stockerFichierOnDisk(MultipartFile file, Fichier fichier, DemandeSu
}
}

private void checkEtatDemande(DemandeSupp demande) throws DemandeCheckingException, IOException, FileTypeException {
private void checkEtatDemande(DemandeSupp demande) throws DemandeCheckingException, IOException, FileTypeException, FileCheckingException {
int etat = demande.getEtatDemande().getNumEtat();
switch (etat) {
case Constant.ETATDEM_PREPARATION -> preparerFichierEnPrep(demande);
Expand All @@ -178,16 +178,16 @@ private void checkEtatDemande(DemandeSupp demande) throws DemandeCheckingExcepti
}
}

private void preparerFichierEnPrep(DemandeSupp demande) throws IOException, DemandeCheckingException, FileTypeException {
private void preparerFichierEnPrep(DemandeSupp demande) throws IOException, DemandeCheckingException, FileTypeException, FileCheckingException {
if (demande.getTypeSuppression() != null) {
//Suppression d'un éventuel fichier existant sur le disque
storageService.delete(fichierPrepare.getFilename());
//Ecriture ligne d'en-tête dans FichierApresWS
fichierPrepare.ecrireEnTete();
//Alimentation du fichier par appel à la procédure Oracle ppntoepn
appelProcStockee(demande.getRcr(), demande.getTypeSuppression());
demande.setEtatDemande(new EtatDemande(Constant.ETATDEM_PREPAREE));
fichierPrepare.trierLignesDeCorrespondances();
demande.setEtatDemande(new EtatDemande(Constant.ETATDEM_PREPAREE));
save(demande);
checkEtatDemande(demande);
}
Expand Down

0 comments on commit 8c20ada

Please sign in to comment.