From 494d349fb67be74da49caae2794fda702f595fb4 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Thu, 18 Jun 2026 16:29:11 +0000
Subject: [PATCH] rename packages
---
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/FichierValidationEditDialogController.java | 439 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 439 insertions(+), 0 deletions(-)
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/FichierValidationEditDialogController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/FichierValidationEditDialogController.java
new file mode 100644
index 0000000..347a709
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/FichierValidationEditDialogController.java
@@ -0,0 +1,439 @@
+package com.megatim.fdxgenerator.controller;
+
+import com.megatim.module.compression.impl.JavaZipZip4Impl;
+import com.megatim.module.encryption.ifaces.EncryptionFace;
+import com.megatim.module.encryption.impl.AESImpl;
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatimfx.components.dialogs.NotificationDialog;
+import com.megatimfx.components.dialogs.NotificationType;
+import com.megatim.fdxgenerator.enums.DataType;
+import com.megatim.fdxgenerator.enums.TypeDonnee;
+import com.megatim.fdxgenerator.exceptions.ConfigException;
+import com.megatim.fdxgenerator.forms.FichierValidationEditFormController;
+import com.megatim.fdxgenerator.model.Configuration;
+import com.megatim.fdxgenerator.model.FichierValidation;
+import com.megatim.fdxgenerator.model.StructureLigne;
+import com.megatim.fdxgenerator.model.ValidateurFichier;
+import com.megatim.fdxgenerator.model.dao.StructureLigneDAO;
+import com.megatim.fdxgenerator.model.dao.ValidateurFichierDAO;
+import com.megatim.fdxgenerator.service.ConfigurationService;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.ResourceBundle;
+import javafx.concurrent.Task;
+import javafx.event.ActionEvent;
+import javafx.scene.Node;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+import javax.activation.UnsupportedDataTypeException;
+import org.apache.commons.io.FileUtils;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class FichierValidationEditDialogController extends AbstractEditDialogController<FichierValidation> {
+
+ private FichierValidationEditFormController fichierValidationEditFormController;
+
+ private int index;
+
+ Boolean result = true;
+
+ private final String ENCRYPT_DIR = "ENCRYPT_DIR";
+
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ fichierValidationEditFormController = new FichierValidationEditFormController();
+ super.initialize(url, rb);
+ }
+
+ @Override
+ public String getTitle() {
+ getEditButton().setText("Générer");
+ return "Génération du fichier de validation d'un type fichier";
+ }
+
+ @Override
+ public Pane getContentFormPane() throws IOException {
+ return ViewLoaderUtil.getPaneFromFxmlFile(fichierValidationEditFormController.getClass().getResource("FichierValidationEditForm.fxml"), fichierValidationEditFormController);
+
+ }
+
+ @Override
+ public Object getContentFormController() {
+ return fichierValidationEditFormController;
+ }
+
+ @Override
+ public boolean beforeSave(ActionEvent event) {
+ boolean bool = super.beforeSave(event);
+
+ if (fichierValidationEditFormController.getIsProtegeCheckBox().isSelected()) {
+ return bool && fichierValidationEditFormController.getKeyConfirmationField() != null && fichierValidationEditFormController.getKeyToEncryptField() != null;
+ } else {
+ return bool;
+ }
+ }
+
+ private Boolean generateFichierValidation(FichierValidation f, Configuration config) throws Exception {
+ final String charset = "UTF-8";
+ String fileExtension = ".xml";
+ String fileNamePrefix = "Fdx-Validator";
+ index = 0;
+ result = true;
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd-HHmmss");
+
+ if (config == null) {
+ throw new ConfigException("Génération impossible, le répertoire de dépôt des fichiers de validation n'est pas configuré");
+ }
+ try {
+ Optional<ValidateurFichier> validateurFichier = ValidateurFichierDAO.findByTypeFichier(f.getTypeFichier().getCode());
+ File file = new File(config.getOutputDir(), fileNamePrefix + f.getTypeFichier().getCode() + "-" + dateTimeFormatter.format(LocalDateTime.now()) + fileExtension);
+
+ if (validateurFichier.isPresent()) {
+ ValidateurFichier vf = validateurFichier.get();
+
+ openTags(file, charset);
+ FileUtils.writeStringToFile(file, "\t\t<entity name=\"com.megatim.typefichier.validator.model.GenericTypeFichier\" error-report-field=\"codeErreur\" activate=\"true\"> \n\n", charset, true);
+ fileNameValidation(f, file, charset);
+
+ //vérifie si le fichier est vide
+ emptyFileValidation(file, charset);
+ FileUtils.writeStringToFile(file, "\t\t</entity>\n\n", charset, true);
+
+ //validation des lignes de données
+ String csvClass = "ExcelFileLine";
+ String txtClass = "FileLine";
+ String entityTagPart1 = "\t\t<entity name=\"com.megatim.typefichier.validator.model.";
+ String entityTagPart2 = " error-report-field=\"codeErreur\" activate=\"true\"";
+ String newLine = "> \n \n";
+
+ String extension = "\" extension=\"" + vf.getDataType().name().toLowerCase() + "\" ";
+ String headerPresent = " header-present=\"" + vf.isHeaderPresent() + "\"";
+
+ switch (vf.getDataType()) {
+ case CSV:
+ String lineDelimiter = " line-delimiter=\"" + vf.getCodeDelimiteurLigne() + "\"";
+ String columnDelimiter = " column-delimiter=\"" + vf.getCodeDelimiteurColonne() + "\"";
+ FileUtils.writeStringToFile(file, entityTagPart1 + csvClass + extension + entityTagPart2 + headerPresent + lineDelimiter + columnDelimiter + newLine, charset, true);
+ break;
+ case XLS:
+ case XLSX:
+ FileUtils.writeStringToFile(file, entityTagPart1 + csvClass + extension + entityTagPart2 + headerPresent + newLine, charset, true);
+ break;
+ case TXT:
+ FileUtils.writeStringToFile(file, entityTagPart1 + txtClass + extension + entityTagPart2 + newLine, charset, true);
+ break;
+ default:
+ throw new UnsupportedDataTypeException("'" + vf.getDataType() + "' : format inconnu");
+ }
+ columnsValidation(vf, file, charset);
+
+ if (vf.getDataType().equals(DataType.TXT)) {
+ lineLengthValidation(f, file, charset);
+ }
+ closeTags(file, charset);
+
+ } else {
+ FileUtils.writeStringToFile(file, "Le type fichier " + f.getTypeFichier().getCode() + " n'a pas de validateur enregistré ", "UTF-8", false);
+ }
+ if (fichierValidationEditFormController.getIsProtegeCheckBox().isSelected()) {
+ result = encryptAndZipFile(file, config, f.getKeyToEncrypt());
+ }
+ } catch (Exception ex) {
+ result = false;
+ }
+ return result;
+ }
+
+ private void openTags(File file, final String charset) throws IOException {
+ FileUtils.writeStringToFile(file, "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n", charset, false);
+ FileUtils.writeStringToFile(file, "<predicate-config xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n", charset, true);
+ FileUtils.writeStringToFile(file, "xsi:schemaLocation=\"http://www.leadware.net/predicatelogic-config ../xsd/predicatelogic-config.xsd\" \n", charset, true);
+ FileUtils.writeStringToFile(file, "xmlns=\"http://www.leadware.net/predicatelogic-config\"> \n \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t<entities> \n", charset, true);
+ }
+
+ private void fileNameValidation(FichierValidation f, File file, final String charset) throws IOException {
+ int fileNameIndex = 0;
+
+ if (f.isValidateFileName()) {
+
+ //validation du code participant dans le nom du fichier
+ FileUtils.writeStringToFile(file, "\t\t\t<validation field-name=\"CodeParticipant\" activate=\"true\">\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t<assertion assert-name=\"ifCodeAgentOrCodeParticipant\" error-code=\"CodeParticipant\" activate=\"true\">\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"code\" value=\"" + f.getTypeFichier().getCodeParticipant() + "\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"fileName\" field=\"fileName\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"index\" value=\"" + fileNameIndex + "\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"taille\" value=\"" + f.getTypeFichier().getCodeParticipant().length() + "\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t</assertion>\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t</validation>\n\n", charset, true);
+
+ fileNameIndex += f.getTypeFichier().getCode().length();
+
+ //validation de la date dans le nom du fichier
+ FileUtils.writeStringToFile(file, "\t\t\t<validation field-name=\"Date\" activate=\"true\">\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t<assertion assert-name=\"ifDate\" error-code=\"Date\" activate=\"true\">\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"format\" value=\"" + f.getFormatDate() + "\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"fileName\" field=\"fileName\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"index\" value=\"" + fileNameIndex + "\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t</assertion>\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t</validation>\n\n", charset, true);
+ fileNameIndex += f.getFormatDate().length();
+
+ //validation des tierces
+ if (f.getMaxValueTierce() > 0) {
+ FileUtils.writeStringToFile(file, "\t\t\t<validation field-name=\"Tierce\" activate=\"true\">\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t<assertion assert-name=\"ifTierce\" error-code=\"Tierce\" activate=\"true\">\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"minValue\" value=\"0\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"maxValue\" value=\"" + f.getMaxValueTierce() + "\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"index\" value=\"" + fileNameIndex + "\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"fileName\" field=\"fileName\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t</assertion>\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t</validation>\n\n", charset, true);
+ }
+
+ //validation de l'extension du fichier
+ FileUtils.writeStringToFile(file, "\t\t\t<validation field-name=\"Extension\" activate=\"true\">\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t<assertion assert-name=\"equal\" error-code=\"Extension\" activate=\"true\">\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"equalValue\" value=\"" + f.getExtension() + "\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"equalParam\" field=\"extension\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t</assertion>\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t</validation>\n\n", charset, true);
+ }
+ }
+
+ private void emptyFileValidation(File file, final String charset) throws IOException {
+ FileUtils.writeStringToFile(file, "\t\t\t<validation field-name=\"FichierVide\" activate=\"true\">\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<assertion assert-name=\"notEqual\" error-code=\"FichierVide\" activate=\"true\">\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"notEqualValue\" value=\"0\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"notEqualParam\" field=\"nbOfLines\" />\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t</assertion>\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t</validation>\n\n", charset, true);
+ }
+
+ private void lineLengthValidation(FichierValidation f, File file, final String charset) throws IOException {
+ FileUtils.writeStringToFile(file, "\t\t\t<validation field-name=\"validation" + f.getTypeFichier().getCode() + "Taille\" activate=\"true\"> \n \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t<assertion assert-name=\"equal\" error-code=\"" + f.getTypeFichier().getCode() + "Taille\" activate=\"true\"> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"equalValue\" value=\"" + index + "\" /> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"equalParam\" field=\"taille\" /> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t</assertion> \n \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t</validation> \n", charset, true);
+ }
+
+ private void closeTags(File file, final String charset) throws IOException {
+ FileUtils.writeStringToFile(file, "\t\t</entity> \n\n", charset, true);
+ FileUtils.writeStringToFile(file, "\t</entities> \n", charset, true);
+ FileUtils.writeStringToFile(file, "</predicate-config>", charset, true);
+ }
+
+ private void columnsValidation(ValidateurFichier vf, File file, final String charset) throws IOException {
+ List<StructureLigne> structureLignes = StructureLigneDAO.findByValidateurFichierId(vf.getId());
+ Collections.sort(structureLignes, (StructureLigne s1, StructureLigne s2) -> new Integer(s1.getPosition()).compareTo(s2.getPosition()));
+
+ switch (vf.getDataType()) {
+ case TXT:
+ txtColumns(structureLignes, file, charset);
+ break;
+ case CSV:
+ case XLS:
+ case XLSX:
+ csvColumns(structureLignes, file, charset);
+ break;
+ default:
+ throw new UnsupportedDataTypeException("Format de données inconnu");
+ }
+ }
+
+ private void txtColumns(List<StructureLigne> structureLignes, File file, final String charset) throws IOException {
+
+ for (StructureLigne s : structureLignes) {
+ FileUtils.writeStringToFile(file, "\t\t\t<validation field-name=\"" + s.getCode() + "\" activate=\"true\"> \n \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t<assertion assert-name=\"ifTypeFichier\" error-code=\"" + s.getCode() + "\" activate=\"true\"> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"position\" value=\"" + s.getPosition() + "\" /> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"index\" value=\"" + index + "\" /> \n", charset, true);
+
+ if (s.getTypeDonnee().getValue().equals(TypeDonnee.DATE.getValue()) && s.getSeparateurDate() != null && !s.getSeparateurDate().isEmpty()) {
+ structureLigneNewLength(s);
+ }
+
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"taille\" value=\"" + s.getTaille() + "\" /> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"typeDonnee\" value=\"" + s.getTypeDonnee() + "\" /> \n", charset, true);
+
+ if (s.getTypeDonnee().getValue().equals(TypeDonnee.DATE.getValue())) {
+
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"formatDate\" value=\"" + s.getFormatDate() + "\" /> \n", charset, true);
+
+ if (s.getSeparateurDate() != null && !s.getSeparateurDate().isEmpty()) {
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"separateurDate\" value=\"" + s.getSeparateurDate() + "\" /> \n", charset, true);
+ }
+ }
+
+ if (s.getTypeDonnee().equals(TypeDonnee.DECIMAL)) {
+ index += s.getTaillePartieDecimal() + s.getSeparateurDecimal().length();
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"taillePartieDecimale\" value=\"" + s.getTaillePartieDecimal() + "\" /> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"separateurDecimal\" value=\"" + s.getSeparateurDecimal() + "\" /> \n", charset, true);
+ }
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"ligne\" field=\"ligne\" /> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t</assertion> \n \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t</validation> \n \n", charset, true);
+
+ index += s.getTaille();
+ }
+ }
+
+ //SI on suppose que les dates sont au format yyyy-MM-dd où le tiret (-) est le séparateur dans cet exemple
+ //on aura donc 2 séparateurs par date et dans dans ce cas, on ajoute 2, à l'index de fin de la date
+ private void structureLigneNewLength(StructureLigne s) {
+ //Si la date contient le mois, ajouter 1 à la taille pour le séparateur(-)
+ if (s.getFormatDate().contains("MM")) {
+ s.setTaille(s.getTaille() + 1);
+ }
+
+ //Si la date contient le jour, ajouter 1 à la taille pour le séparateur(-)
+ if (s.getFormatDate().contains("dd")) {
+ s.setTaille(s.getTaille() + 1);
+ }
+
+ //Si la date contient l'heure, ajouter 1 à la taille pour le séparateur (L'espace ou T)
+ if (s.getFormatDate().contains("HH")) {
+ s.setTaille(s.getTaille() + 1);
+ }
+
+ //Si la date contient la minute, ajouter 1 à la taille pour le séparateur (:)
+ if (s.getFormatDate().contains("mm")) {
+ s.setTaille(s.getTaille() + 1);
+ }
+
+ //Si la date contient la seconde, ajouter 1 à la taille pour le séparateur (:)
+ if (s.getFormatDate().contains("ss")) {
+ s.setTaille(s.getTaille() + 1);
+ }
+ }
+
+ private void csvColumns(List<StructureLigne> structureLignes, File file, final String charset) throws IOException {
+ for (StructureLigne s : structureLignes) {
+ FileUtils.writeStringToFile(file, "\t\t\t<validation field-name=\"" + s.getCode() + "\" activate=\"true\"> \n \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t<assertion assert-name=\"ifTypeFichierCsv\" error-code=\"" + s.getCode() + "\" activate=\"true\"> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"position\" value=\"" + s.getPosition() + "\" /> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"typeDonnee\" value=\"" + s.getTypeDonnee() + "\" /> \n", charset, true);
+
+ if (s.getTypeDonnee().getValue().equals(TypeDonnee.DATE.getValue())) {
+
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"formatDate\" value=\"" + s.getFormatDate() + "\" /> \n", charset, true);
+
+ if (s.getSeparateurDate() != null && !s.getSeparateurDate().isEmpty()) {
+ structureLigneNewLength(s);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"separateurDate\" value=\"" + s.getSeparateurDate() + "\" /> \n", charset, true);
+ }
+ } else if (s.getTypeDonnee().equals(TypeDonnee.DECIMAL)) {
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"taillePartieDecimale\" value=\"" + s.getTaillePartieDecimal() + "\" /> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"separateurDecimal\" value=\"" + s.getSeparateurDecimal() + "\" /> \n", charset, true);
+
+ }
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"taille\" value=\"" + s.getTaille() + "\" /> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"ligne\" field=\"columns\" /> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t</assertion> \n \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t</validation> \n \n", charset, true);
+ }
+ FileUtils.writeStringToFile(file, "\t\t\t<validation field-name=\"NBRE_COLONNES\" activate=\"true\"> \n \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t<assertion assert-name=\"equal\" error-code=\"NBRE_COLONNES\" activate=\"true\"> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"equalValue\" value=\"" + structureLignes.size() + "\" /> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t\t<param-value name=\"equalParam\" field=\"nbreColonnes\" /> \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t\t</assertion> \n \n", charset, true);
+ FileUtils.writeStringToFile(file, "\t\t\t</validation> \n \n", charset, true);
+
+ }
+
+ private Boolean encryptAndZipFile(File file, Configuration config, String keyToEncrypt) throws Exception {
+ Boolean res = false;
+ Boolean bool = encryptFile(file, config, keyToEncrypt);
+
+ if (bool) {
+ JavaZipZip4Impl zip4Impl = new JavaZipZip4Impl();
+ String destinationPath = config.getOutputDir();
+ File encryptDir = new File(config.getOutputDir(), ENCRYPT_DIR);
+ File encryptFile = new File(encryptDir.getAbsolutePath(), file.getName());
+
+ zip4Impl.zipFile(encryptFile, new File(destinationPath));
+ res = true;
+
+ file.delete();
+ encryptFile.delete();
+ }
+
+ return res;
+ }
+
+ private Boolean encryptFile(File file, Configuration config, String keyToEncrypt) throws Exception {
+ File encryptDir = new File(config.getOutputDir(), ENCRYPT_DIR);
+
+ if (!encryptDir.exists()) {
+ encryptDir.mkdir();
+ }
+
+ EncryptionFace aes = new AESImpl();
+ aes.encryptFile(keyToEncrypt, 128, file.getAbsolutePath(), new File(encryptDir.getAbsolutePath(), file.getName()).getAbsolutePath());
+
+ return true;
+ }
+
+ @Override
+ public void afterSave(ActionEvent event) {
+ Configuration config = ConfigurationService.getInstance().getCurrentConfig();
+ Task<Boolean> task = new Task<Boolean>() {
+ @Override
+ protected Boolean call() throws Exception {
+ FichierValidation f = getCurrentObject();
+ return generateFichierValidation(f, config);
+ }
+ };
+ Node source = (Node) event.getSource();
+ Stage parentStage = (Stage) source.getScene().getWindow();
+
+ task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+ task.setOnFailed(e -> {
+ LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+ Throwable th = task.getException();
+
+ if (th instanceof ConfigException) {
+ NotificationDialog notificationDialog = new NotificationDialog(
+ th.getMessage(), NotificationType.WARNING, parentStage);
+ notificationDialog.showNotification();
+ } else {
+ AlertMessageUtil.showAlertException(th, "Une exception s'est produite pendant la génération du fichier de validation", "Erreur");
+ }
+ });
+ task.setOnSucceeded(e -> {
+ LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+ Boolean taskResult = task.getValue();
+
+ if (taskResult) {
+ NotificationDialog notificationDialog = new NotificationDialog(
+ "Génération du fichier de validation réussie",
+ NotificationType.SUCCESS,
+ parentStage
+ );
+ notificationDialog.showNotification();
+ } else {
+ NotificationDialog notificationDialog = new NotificationDialog(
+ "Echec Génération du fichier de validation. Une erreur est survenue lors du traitement",
+ NotificationType.ERROR,
+ parentStage
+ );
+ notificationDialog.showNotification();
+ }
+ });
+ new Thread(task).start();
+ }
+}
--
Gitblit v1.10.0