Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Item 269 back modifier lordre de tri du fichier #59

Merged
merged 6 commits into from
Oct 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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);

}
}
Loading