Skip to content

Commit

Permalink
Merge pull request #59 from abes-esr/ITEM-269-back-modifier-lordre-de…
Browse files Browse the repository at this point in the history
…-tri-du-fichier

Item 269 back modifier lordre de tri du fichier
  • Loading branch information
SamuelQuetin authored Oct 17, 2024
2 parents bc8d9a4 + cb7d442 commit fafa29c
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 20 deletions.
57 changes: 44 additions & 13 deletions core/src/main/java/fr/abes/item/core/components/FichierPrepare.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,20 @@
import org.springframework.beans.factory.annotation.Value;
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.util.ArrayList;
import java.util.Collections;
import java.util.List;

@Slf4j
@Component
public class FichierPrepare extends AbstractFichier implements Fichier {

@Autowired
public FichierPrepare(@Value("") final String filename) {
this.filename = filename;
}

@Override
public String getFilename() {
return this.filename;
Expand All @@ -34,7 +34,7 @@ public String getFilename() {
public void setFilename(String filename) {
this.filename = filename;
}

@Override
public int getType() {
return Constant.ETATDEM_PREPAREE;
Expand All @@ -53,7 +53,7 @@ public void checkFileContent(Demande demandeModif) {
public void generateFileName(Demande demande) {
this.filename = Constant.FIC_PREPARE_NAME + demande.getId() + Constant.EXTENSIONCSV;
}

/**
* Méthode d'écriture de la première ligne dans le fichier
*/
Expand All @@ -64,9 +64,9 @@ public void ecrireEnTete() {
out.println("PPN;RCR;EPN;");
} catch (IOException ex) {
log.error(Constant.ERROR_UNABLE_TO_CREATE_FILE);
}
}
}

/**
* 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
Expand All @@ -88,8 +88,7 @@ public void alimenterEpn(String input, String listeppn, String rcr) {
}
} catch (IOException ex) {
log.error(Constant.ERROR_UNABLE_TO_CREATE_FILE);
}

}
}

/**
Expand All @@ -114,8 +113,40 @@ public void alimenterPpn(String input, String listeEpn, String rcr) {
} catch (IOException ex) {
log.error(Constant.ERROR_UNABLE_TO_CREATE_FILE);
}
}

/**
* Méthode qui permet de trier le contenu du fichier de correspondance
* @throws IOException renvoi une exception si le fichier ne peut être lu
*/
public void trierLignesDeCorrespondances() throws IOException {
FileReader fileReader = new FileReader(path.resolve(filename).toString());
BufferedReader reader = new BufferedReader(fileReader);

List<String> correspondanceSortList = new ArrayList<>();
String header = reader.readLine();//cette ligne enleve le header et le stock
correspondanceSortList.add(header + "\n");
reader.lines().sorted().forEach(line -> {
correspondanceSortList.add(line+"\n");
});
reader.close();
fileReader.close();
String result = String.join("", correspondanceSortList);
ecrireFichierTrie(result);
}

/**
* Méthode permettant d'écrire sur le fichier la liste des correspondances triées
* @param sortedLines String contenant la liste des correspondances triées
*/
private void ecrireFichierTrie(String sortedLines) {
try (FileWriter fw = new FileWriter(path.resolve(filename).toString());
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw)) {
out.println(sortedLines);
} catch (IOException ex) {
log.error(Constant.ERROR_UNABLE_TO_CREATE_SORTED_FILE);
}
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public void writePpnInFile(String ppn, Exemplaire exemplaire) throws StorageExce
// ajout de la ligne
out.println(ppn + ";" + gererZones(listDeReference, exemplaire));
} catch (IOException ex) {
throw new StorageException("Impossible d'écrire dans le fichier de sauvegarde txt");
throw new StorageException("Impossible d'écrire dans le fichier de sauvegarde csv");
}
}

Expand Down Expand Up @@ -115,7 +115,7 @@ public void writeHeader() {
// ajout de la ligne
out.println(String.join(";", this.referenceService.constructHeaderCsv()));
} catch (IOException ex) {
throw new StorageException("Impossible d'écrire dans le fichier de sauvegarde txt");
throw new StorageException("Impossible d'écrire dans le fichier de sauvegarde csv");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,7 @@ public class Constant implements Serializable {
public static final String ERROR_MONTH_RANGE = "Le mois doit être compris entre 1 et 12";
public static final String ERROR_YEAR_RANGE = "L'année ne peut pas être inférieure à l'année courante";
public static final String ERROR_UNABLE_TO_CREATE_FILE = "impossible de créer le fichier ppn;rcr;epn";
public static final String ERROR_UNABLE_TO_CREATE_SORTED_FILE = "impossible de créer le fichier de correspondance trié";
public static final String ERROR_UNKNOWN_REST_CONTROLLER = "unknown error caught in RESTController, {}";
public static final String REST_RESPONDING_WITH_STATUS = "Response REST avec statut {}";
public static final String ERROR_FIRST_LINE_OF_FILE_NULL = "la première ligne du fichier est nulle";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ private void preparerFichierEnPrep(DemandeSupp demande) throws IOException, Dema
//Alimentation du fichier par appel à la procédure Oracle ppntoepn
appelProcStockee(demande.getRcr(), demande.getTypeSuppression());
demande.setEtatDemande(new EtatDemande(Constant.ETATDEM_PREPAREE));
fichierPrepare.trierLignesDeCorrespondances();
save(demande);
checkEtatDemande(demande);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,7 @@
import org.apache.commons.lang3.StringUtils;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.PrimitiveIterator;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

Expand Down Expand Up @@ -369,4 +366,5 @@ public static String getLabelTypeDemande(TYPE_DEMANDE typeDemande) {
case SUPP -> "suppression";
};
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;
import java.nio.file.Paths;

@RestController
Expand Down Expand Up @@ -55,6 +56,5 @@ public ResponseEntity<Resource> downloadFile(
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=\"" + file.getFilename() + "\"")
.body(file);

}
}

0 comments on commit fafa29c

Please sign in to comment.