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/ValidateurFichierListDialogController.java | 94
fdx_generator/src/main/resources/styles/title-bar.css | 44
fdx_generator/src/main/resources/com/megatim/fdxgenerator/abstracts/AbstractEditValidateDialog.fxml | 107
fdx_generator/src/main/java/com/megatim/fdxgenerator/AppUpdate.java | 178 +
fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/TailleFormatDateValidator.java | 30
fdx_generator/src/main/resources/images/add.png | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/model/ValidateurFichier.java | 88
fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/ImportTypeFichierEditForm.fxml | 71
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/StructureLigneSearchFormController.java | 13
fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/TypeFichierSearchForm.fxml | 22
fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/ValidateurFichierSearchForm.fxml | 26
fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/StructureLigneEditFormController.java | 162 +
fdx_generator/src/main/java/com/megatim/fdxgenerator/service/TypeFichierService.java | 103
fdx_generator/src/main/java/com/megatim/fdxgenerator/exceptions/ConfigException.java | 24
fdx_generator/src/main/java/com/megatim/fdxgenerator/model/FichierValidation.java | 49
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/StructureLigneListDialogController.java | 93
fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/FichierValidationEditFormController.java | 216 +
fdx_generator/src/main/resources/images/icone_ins.png | 0
fdx_generator/target/classes/com/megatim/fdxgenerator/forms/ConfigEditForm.fxml | 46
fdx_generator/target/classes/images/generate.png | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/service/ValidateurFichierService.java | 100
fdx_generator/src/main/java/com/megatim/fdxgenerator/model/TypeFichier.java | 54
fdx_generator/src/main/java/com/megatim/fdxgenerator/model/ImportFile.java | 37
fdx_generator/target/classes/com/megatim/fdxgenerator/abstracts/AbstractEditValidateDialog.fxml | 107
fdx_generator/target/classes/styles/title-bar.css | 44
fdx_generator/src/main/resources/images/143-02.png | 0
fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/ValidateurFichierAdvancedSearchForm.fxml | 22
fdx_generator/src/main/resources/images/min-icon.png | 0
fdx_generator/target/classes/images/next.png | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/ValidateurFichierDAO.java | 84
fdx_generator/target/classes/images/close-icon.png | 0
fdx_generator/src/main/resources/styles/main-style.css | 251 +
fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/KeyToDecryptConstraint.java | 27
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/table/StructureLigneTable.java | 44
fdx_generator/target/classes/images/max-icon.png | 0
fdx_generator/src/main/resources/images/next.png | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/enums/DataType.java | 38
fdx_generator/target/classes/images/143-05.png | 0
fdx_generator/src/main/resources/com/megatim/fdxgenerator/abstracts/AbstractMainDialog.fxml | 284 +
fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Generator v.1.0.2.docx | 0
fdx_generator/target/classes/images/143-02.png | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/TypeFichierDAO.java | 45
fdx_generator/target/classes/com/megatim/fdxgenerator/abstracts/AbstractMainDialog.fxml | 284 +
fdx_generator/target/classes/update-description.txt | 3
fdx_generator/target/test-classes/.netbeans_automatic_build | 0
fdx_generator/target/classes/images/add.png | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/model/StructureLigne.java | 94
fdx_generator/target/classes/images/min-icon.png | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/enums/TypeDonnee.java | 46
fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Generator v.1.0.2.docx | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/App.java | 108
fdx_generator/target/classes/com/megatim/fdxgenerator/abstracts/AbstractEditDialog.fxml | 102
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ImportTypeFichierEditDialogController.java | 75
fdx_generator/hibernate.cfg.xml | 23
fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/main_1.fxml | 45
fdx_generator/src/main/resources/images/edit.png | 0
fdx_generator/generateur.log | 0
fdx_generator/src/main/resources/images/generate.png | 0
fdx_generator/nb-configuration.xml | 18
fdx_generator/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst | 0
fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/ValidateurFichierAdvancedSearchForm.fxml | 22
fdx_generator/target/classes/com/megatim/fdxgenerator/forms/FichierValidationEditForm.fxml | 155
fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Convert v.1.0.2.docx | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/pojo/Delimiteur.java | 26
fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/TypeFichierAdvancedSearchForm.fxml | 35
fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/HibernateUtil.java | 48
fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/TypeFichierAdvancedSearchForm.fxml | 35
fdx_generator/src/main/resources/images/143-05.png | 0
fdx_generator/src/main/resources/update-description.txt | 3
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/MainController.java | 288 +
fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/TailleFormatDateConstraint.java | 27
fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/ConfigEditFormController.java | 51
fdx_generator/src/main/resources/images/Fichier.png | 0
fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/TypeFichierEditForm.fxml | 60
fdx_generator/target/classes/log4j.properties | 12
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/TypeFichierListDialogController.java | 102
fdx_generator/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst | 70
fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/main.fxml | 107
fdx_generator/target/classes/com/megatim/fdxgenerator/forms/StructureLigneEditForm.fxml | 88
fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FileNameValidator.java | 24
fdx_generator/target/classes/images/Motif.png | 0
fdx_generator/target/maven-archiver/pom.properties | 5
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/TypeFichierSearchFormController.java | 31
fdx_generator/src/main/resources/log4j.properties | 12
fdx_generator/src/main/resources/images/oeil.png | 0
fdx_generator/target/classes/com/megatim/fdxgenerator/controller/main.fxml | 107
fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/ConfigConstraint.java | 27
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/table/TypeFichierTable.java | 39
fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/KeyToDecryptValidator.java | 25
fdx_generator/target/classes/com/megatim/fdxgenerator/forms/TypeFichierEditForm.fxml | 60
fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/ImportData.java | 178 +
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/ValidateurFichierAdvancedSearchFormController.java | 32
fdx_generator/target/classes/images/Reset.png | 0
fdx_generator/src/main/resources/images/143-03.png | 0
fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Convert v.1.0.2.docx | 0
fdx_generator/src/main/resources/styles/main_screen.css | 246 +
fdx_generator/target/classes/com/megatim/fdxgenerator/controller/main2.fxml | 103
fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/TypeFichierEditFormController.java | 35
fdx_generator/target/classes/com/megatim/fdxgenerator/controller/main_1.fxml | 45
fdx_generator/target/classes/images/143-04.png | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/StructureLigneAdvancedSearchFormController.java | 13
fdx_generator/src/main/resources/images/trash.png | 0
fdx_generator/dependency-reduced-pom.xml | 177 +
fdx_generator/src/main/resources/images/Reset.png | 0
fdx_generator/target/classes/images/oeil.png | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/ValidateurFichierEditFormController.java | 230 +
fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FormatDateConstraint.java | 27
fdx_generator/pom.xml | 196 +
fdx_generator/src/main/resources/images/Accuueil_Generator.jpg | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/TypeFichierAdvancedSearchFormController.java | 38
fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/ValidateurFichierEditForm.fxml | 88
fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/main2.fxml | 103
fdx_generator/src/main/resources/images/max-icon.png | 0
fdx_generator/target/classes/images/trash.png | 0
fdx_generator/target/classes/.netbeans_automatic_build | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/AttributeFormatException.java | 23
fdx_generator/src/main/resources/com/megatim/fdxgenerator/abstracts/AbstractEditDialog.fxml | 102
fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/FichierValidationEditForm.fxml | 155
fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/ConfigEditForm.fxml | 46
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/ValidateurFichierSearchFormController.java | 87
fdx_generator/src/main/resources/images/143-01.png | 0
fdx_generator/target/classes/styles/style.css | 18
fdx_generator/target/classes/styles/main_screen.css | 246 +
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/FichierValidationEditDialogController.java | 439 ++
fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/DataToImport.java | 36
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/table/ValidateurFichierTable.java | 32
fdx_generator/src/main/java/com/megatim/fdxgenerator/service/ConfigurationService.java | 63
fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/PaginationElts.java | 49
fdx_generator/target/classes/com/megatim/fdxgenerator/forms/ImportTypeFichierEditForm.fxml | 71
fdx_generator/guide_d'installation_fdx_generator.docx | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/service/ImportFileService.java | 90
fdx_generator/src/main/resources/images/143-04.png | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/StructureLigneDAO.java | 31
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/StructureLigneEditDialogController.java | 204 +
fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/AbstractDAO.java | 281 +
fdx_generator/target/classes/images/previous.png | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FormatDateValidator.java | 31
fdx_generator/target/classes/images/143-03.png | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ValidateurFichierEditDialogController.java | 258 +
fdx_generator/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst | 62
fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/ValidateurFichierSearchForm.fxml | 26
fdx_generator/src/main/java/com/megatim/fdxgenerator/service/StructureLigneService.java | 93
fdx_generator/target/classes/images/icone_ins.png | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/model/Configuration.java | 28
fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/StructureLigneEditForm.fxml | 88
fdx_generator/src/main/java/com/megatim/fdxgenerator/BriefLogFormatter.java | 62
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/TypeFichierEditDialogController.java | 74
fdx_generator/src/main/resources/images/previous.png | 0
fdx_generator/target/classes/com/megatim/fdxgenerator/forms/ValidateurFichierEditForm.fxml | 88
fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FileNameConstraint.java | 27
fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ConfigEditDialogController.java | 52
fdx_generator/src/main/resources/images/close-icon.png | 0
fdx_generator/target/classes/images/143-01.png | 0
fdx_generator/target/classes/images/edit.png | 0
fdx_generator/target/classes/styles/main-style.css | 251 +
fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/ImportTypeFichierEditFormController.java | 74
fdx_generator/src/main/resources/images/Motif.png | 0
fdx_generator/src/main/resources/styles/style.css | 18
fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/TypeFichierSearchForm.fxml | 22
fdx_generator/target/classes/images/Fichier.png | 0
fdx_generator/target/classes/images/Accuueil_Generator.jpg | 0
fdx_generator/target/classes/images/Recherche.png | 0
fdx_generator/src/main/resources/images/Recherche.png | 0
fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/ConfigValidator.java | 28
fdx_generator/documentation_generateur.rar | 0
165 files changed, 9,526 insertions(+), 0 deletions(-)
diff --git a/fdx_generator/dependency-reduced-pom.xml b/fdx_generator/dependency-reduced-pom.xml
new file mode 100644
index 0000000..58f3035
--- /dev/null
+++ b/fdx_generator/dependency-reduced-pom.xml
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>spring-boot-starter-parent</artifactId>
+ <groupId>org.springframework.boot</groupId>
+ <version>2.7.2</version>
+ <relativePath>pom.xml</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.megatim.generation.validateur.typefichier</groupId>
+ <artifactId>generation-validateur-typefichier</artifactId>
+ <version>1.0</version>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ </exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <showDeprecation>false</showDeprecation>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-shade-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ <configuration>
+ <minimizeJar>true</minimizeJar>
+ <filters>
+ <filter>
+ <artifact>*:*</artifact>
+ <excludes>
+ <exclude>META-INF/*.SF</exclude>
+ <exclude>META-INF/*.DSA</exclude>
+ <exclude>META-INF/*.RSA</exclude>
+ </excludes>
+ </filter>
+ </filters>
+ <transformers>
+ <transformer>
+ <resource>META-INF/spring.handlers</resource>
+ </transformer>
+ <transformer>
+ <resource>META-INF/spring.factories</resource>
+ </transformer>
+ <transformer>
+ <resource>META-INF/spring.schemas</resource>
+ </transformer>
+ </transformers>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <version>2.7.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>2.1.214</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>1.18.20</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ <version>5.3.0.Final</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ <version>2.0.0.Final</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate.validator</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>6.0.13.Final</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.glassfish</groupId>
+ <artifactId>javax.el</artifactId>
+ <version>3.0.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.megatimfx.common</groupId>
+ <artifactId>megatimfx-common</artifactId>
+ <version>1.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.megatimfx.security</groupId>
+ <artifactId>megatimfx-security</artifactId>
+ <version>1.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.11.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.17</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>it.sauronsoftware</groupId>
+ <artifactId>junique</artifactId>
+ <version>1.04</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>module-compression</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>module.encryption</artifactId>
+ <version>1.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.vinumeris</groupId>
+ <artifactId>updatefx</artifactId>
+ <version>1.5</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-jdk14</artifactId>
+ <version>1.7.10</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+ <properties>
+ <exec.mainClass>generation.validateur.typefichier.App</exec.mainClass>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ </properties>
+</project>
diff --git a/fdx_generator/documentation_generateur.rar b/fdx_generator/documentation_generateur.rar
new file mode 100644
index 0000000..f162374
--- /dev/null
+++ b/fdx_generator/documentation_generateur.rar
Binary files differ
diff --git a/fdx_generator/generateur.log b/fdx_generator/generateur.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/fdx_generator/generateur.log
diff --git "a/fdx_generator/guide_d\047installation_fdx_generator.docx" "b/fdx_generator/guide_d\047installation_fdx_generator.docx"
new file mode 100644
index 0000000..cf2fc3f
--- /dev/null
+++ "b/fdx_generator/guide_d\047installation_fdx_generator.docx"
Binary files differ
diff --git a/fdx_generator/hibernate.cfg.xml b/fdx_generator/hibernate.cfg.xml
new file mode 100644
index 0000000..dcd5d27
--- /dev/null
+++ b/fdx_generator/hibernate.cfg.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+Click nbfs://nbhost/SystemFileSystem/Templates/XML/XMLDocument.xml to edit this template
+-->
+
+<hibernate-configuration>
+ <session-factory>
+ <property name="hibernate.connection.driver_class">org.h2.Driver</property>
+ <property name="hibernate.connection.url">jdbc:h2:file:C:/h2/generateur/generateur</property>
+ <property name="hibernate.connection.username">sa</property>
+ <property name="hibernate.connection.password"></property>
+ <property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
+ <property name="show_sql">true</property>
+ <property name="hbm2ddl.auto">update</property>
+
+ <mapping class="com.megatim.fdxgenerator.model.TypeFichier"></mapping>
+ <mapping class="com.megatim.fdxgenerator.model.ValidateurFichier"></mapping>
+ <mapping class="com.megatim.fdxgenerator.model.StructureLigne"></mapping>
+ <mapping class="com.megatim.fdxgenerator.model.Configuration"></mapping>
+ </session-factory>
+</hibernate-configuration>
+
diff --git a/fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Convert v.1.0.2.docx b/fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Convert v.1.0.2.docx
new file mode 100644
index 0000000..f52d4e9
--- /dev/null
+++ b/fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Convert v.1.0.2.docx
Binary files differ
diff --git a/fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Generator v.1.0.2.docx b/fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Generator v.1.0.2.docx
new file mode 100644
index 0000000..ae2255b
--- /dev/null
+++ b/fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Generator v.1.0.2.docx
Binary files differ
diff --git a/fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Convert v.1.0.2.docx b/fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Convert v.1.0.2.docx
new file mode 100644
index 0000000..bb8baa0
--- /dev/null
+++ b/fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Convert v.1.0.2.docx
Binary files differ
diff --git a/fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Generator v.1.0.2.docx b/fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Generator v.1.0.2.docx
new file mode 100644
index 0000000..4c19cca
--- /dev/null
+++ b/fdx_generator/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Generator v.1.0.2.docx
Binary files differ
diff --git a/fdx_generator/nb-configuration.xml b/fdx_generator/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx_generator/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx_generator/pom.xml b/fdx_generator/pom.xml
new file mode 100644
index 0000000..2484032
--- /dev/null
+++ b/fdx_generator/pom.xml
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.megatim.com.megatim.fdxgenerator</groupId>
+ <artifactId>fdx-generator</artifactId>
+ <version>1.0</version>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <exec.mainClass>com.megatim.fdxgenerator.App</exec.mainClass>
+ </properties>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <showDeprecation>false</showDeprecation>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>2.4</version>
+ <configuration>
+ <archive>
+ <manifest>
+ <addClasspath>true</addClasspath>
+ <mainClass>com.megatim.fdxgenerator.App</mainClass>
+ <classpathPrefix>lib/</classpathPrefix>
+ </manifest>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.8</version>
+ <executions>
+ <execution>
+ <id>copy-dependencies</id>
+ <phase>package</phase>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.build.directory}/lib/</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifest>
+ <mainClass>com.megatim.fdxgenerator.App</mainClass>
+ </manifest>
+ </archive>
+ <descriptorRefs>
+ <descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+ </configuration>
+ <executions>
+ <execution>
+ <id>make-assembly</id> <!-- this is used for inheritance merges -->
+ <phase>package</phase> <!-- bind to the packaging phase -->
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!--<plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>3.0.0</version>
+ <configuration>
+ <archive>
+ <manifest>
+ <addClasspath>true</addClasspath>
+ <mainClass>com.megatim.fdxgenerator.App</mainClass>
+ </manifest>
+ </archive>
+ <descriptorRefs>
+ <descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+ </configuration>
+ <executions>
+ <execution>
+ <id>make-my-jar-with-dependencies</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ !-->
+
+ </plugins>
+
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>runtime</scope>
+ <version>2.1.214</version>
+ </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>1.18.20</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ <version>5.3.0.Final</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ <version>2.0.0.Final</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>org.hibernate.validator</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>6.0.13.Final</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.glassfish</groupId>
+ <artifactId>javax.el</artifactId>
+ <version>3.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.megatimfx.common</groupId>
+ <artifactId>megatimfx-common</artifactId>
+ <version>1.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.megatimfx.security</groupId>
+ <artifactId>megatimfx-security</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.11.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.17</version>
+ </dependency>
+
+ <!-- <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ <version>2.19.0</version>
+</dependency>
+<dependency>
+ <groupId>it.sauronsoftware</groupId>
+ <artifactId>junique</artifactId>
+ <version>1.04</version>
+</dependency>
+ -->
+
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>module-compression</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>module.encryption</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/App.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/App.java
new file mode 100644
index 0000000..fde1b8c
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/App.java
@@ -0,0 +1,108 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator;
+
+import com.megatimfx.common.abstracts.context.AbstractViewContext;
+import com.megatim.fdxgenerator.controller.MainController;
+import com.megatim.fdxgenerator.model.dao.HibernateUtil;
+import com.megatim.fdxgenerator.pojo.Delimiteur;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javafx.application.Application;
+import static javafx.application.Application.launch;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.image.Image;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class App extends Application {
+
+ public static final Map<String, Delimiteur> SEPARATEURS_DATE = new HashMap<>();
+ public static final Map<String, Delimiteur> SEPARATEURS_DECIMAUX = new HashMap<>();
+ public static final List<String> FORMATS_DATE = new ArrayList<>();
+ public static final Map<String, Delimiteur> DELIMITEURS_COLONNE = new HashMap<>();
+ public static final Map<String, Delimiteur> DELIMITEURS_LIGNE = new HashMap<>();
+
+ static {
+ SEPARATEURS_DATE.put("", new Delimiteur("", "Aucun"));
+ SEPARATEURS_DATE.put("-", new Delimiteur("-", "Tiret ( - )"));
+ SEPARATEURS_DATE.put("/", new Delimiteur("/", "Slash ( / )"));
+ // SEPARATEURS_DATE.put("\\", new Delimiteur("\\", "Anti-Slash ( \\ )"));
+
+ SEPARATEURS_DECIMAUX.put(".", new Delimiteur(".", "Point ( . )"));
+ SEPARATEURS_DECIMAUX.put(",", new Delimiteur(",", "Virgule ( , )"));
+
+ DELIMITEURS_COLONNE.put("", new Delimiteur("", "Aucun"));
+ DELIMITEURS_COLONNE.put(";", new Delimiteur(";", "Point-virgule ( ; )"));
+ DELIMITEURS_COLONNE.put("|", new Delimiteur("|", "Barre verticale ( | )"));
+ DELIMITEURS_COLONNE.put("\\t", new Delimiteur("\\t", "Tabulation ( \\t )"));
+
+ DELIMITEURS_LIGNE.put("\\n", new Delimiteur("\\n", "Retour Charriot ( \\n )"));
+
+ FORMATS_DATE.add("ddMMyyyy");
+ FORMATS_DATE.add("yyyyMMdd");
+ FORMATS_DATE.add("yyyyddMM");
+ FORMATS_DATE.add("MMyyyydd");
+ FORMATS_DATE.add("MMddyyy");
+ FORMATS_DATE.add("yyyy");
+ FORMATS_DATE.add("MMyyyy");
+ FORMATS_DATE.add("yyyyMMddHHmmss");
+ FORMATS_DATE.add("yyyyMMdd HH:mm:ss");
+ FORMATS_DATE.add("yyyyddMMHHmmss");
+ FORMATS_DATE.add("ddMMyyyyHHmmss");
+// FORMATS_DATE.add("MMddyyyHHmmss");
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws FileNotFoundException, MalformedURLException, IOException {
+
+ AbstractViewContext.getInstance().setAbstractEditDialogControllerURL(App.class.getResource("/com/megatim/fdxgenerator/abstracts/AbstractEditDialog.fxml"));
+
+ FXMLLoader loader = new FXMLLoader();
+ loader.setLocation(MainController.class.getResource("main.fxml"));
+ Parent root = loader.load();
+
+ Scene scene = new Scene(root, 1100, 600);
+
+ primaryStage.setTitle("Générateur de fichiers de validation v1.0.2");
+ primaryStage.getIcons().add(new Image("images/icone_ins.png"));
+ primaryStage.setScene(scene);
+ primaryStage.setOnCloseRequest(e -> {
+ HibernateUtil.shutdown();
+ System.exit(0);
+ });
+ primaryStage.show();
+ }
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String[] args) {
+ String appId = "com.megatim.fdxgenerator.App";
+ boolean alreadyRunning;
+ /*try {
+ JUnique.acquireLock(appId);
+ alreadyRunning = false;
+ } catch (AlreadyLockedException e) {
+ alreadyRunning = true;
+ }
+ if (!alreadyRunning) {
+ launch(args);
+ } else {
+ System.exit(1);
+ }*/
+ launch(args);
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/AppUpdate.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/AppUpdate.java
new file mode 100644
index 0000000..1ec8444
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/AppUpdate.java
@@ -0,0 +1,178 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator;
+
+/**
+ * https://github.com/vinumeris/updatefx
+ * @author STEPHANIE
+ */
+public class AppUpdate {
+//
+// private static java.util.logging.Logger logger;
+// private static final Logger log = LoggerFactory.getLogger(App.class);
+// public static int VERSION = 1;
+// private static final String APP_NAME = "generateur";
+//
+// @Override
+// public void start(Stage primaryStage) throws FileNotFoundException, MalformedURLException, IOException {
+// // For some reason the JavaFX launch process results in us losing the thread context class loader: reset it.
+// Thread.currentThread().setContextClassLoader(App.class.getClassLoader());
+// // Must be done twice for the times when we come here via realMain.
+// AppDirectory.initAppDir(APP_NAME);
+//
+// log.info("Hello World! This is version " + VERSION);
+//
+// // ProgressIndicator indicator = showGiantProgressWheel(primaryStage);
+//
+// List<ECPoint> pubkeys = Crypto.decode();
+//
+// Updater updater = new Updater(URI.create("http://localhost:8080/generateur-updates/index"), "generation-typefichier-" + VERSION,
+// AppDirectory.dir(), UpdateFX.findCodePath(App.class), pubkeys, 0) {
+// @Override
+// protected void updateProgress(long workDone, long max) {
+// super.updateProgress(workDone, max);
+// // Give UI a chance to show.
+// Uninterruptibles.sleepUninterruptibly(100, TimeUnit.MILLISECONDS);
+// }
+// };
+//
+// FXMLLoader loader = new FXMLLoader();
+// loader.setLocation(MainController.class.getResource("main.fxml"));
+// Parent root = loader.load();
+// MainController controller = loader.getController();
+//
+// ProgressIndicator indicator = controller.getIndicator();
+// indicator.progressProperty().bind(updater.progressProperty());
+// Label label = controller.getLabelVersion();
+//
+//
+// log.info("Checking for updates!");
+// updater.setOnRunning(event -> {
+// label.setText("Mise à jour en cours");
+// });
+// updater.setOnSucceeded(event -> {
+// try {
+// UpdateSummary summary = updater.get();
+// Updates updates = summary.updates;
+// int count = updates.getUpdatesCount();
+//
+// if (!summary.descriptions.isEmpty()) {
+// log.info("One liner: {}", summary.descriptions.get(0).getOneLiner());
+// log.info("{}", summary.descriptions.get(0).getDescription());
+// }
+// if (summary.highestVersion > VERSION) {
+// int nb = summary.highestVersion - VERSION;
+// log.info("Restarting to get version " + summary.highestVersion);
+// label.setText("Nombre de mise à jour trouvé : " + nb);
+// if (UpdateFX.getVersionPin(AppDirectory.dir()) == 0) {
+// log.info("before restartApp()");
+// UpdateFX.restartApp();
+// }
+// } else {
+// label.setVisible(false);
+// indicator.setVisible(false);
+// }
+// } catch (Throwable e) {
+// log.error("oops", e);
+// }
+// });
+// updater.setOnFailed(event -> {
+// label.setVisible(false);
+// indicator.setVisible(false);
+//
+// log.error("Update error: {}", updater.getException());
+// updater.getException().getMessage();
+// updater.getException().printStackTrace();
+// });
+//
+// indicator.setOnMouseClicked(ev -> UpdateFX.restartApp());
+//
+// new Thread(updater, "UpdateFX Thread").start();
+//
+// AbstractViewContext.getInstance().setAbstractEditDialogControllerURL(App.class.getResource("/generation/validateur/typefichier/abstracts/AbstractEditDialog.fxml"));
+//
+//
+//
+// Scene scene = new Scene(root, 1100, 600);
+//
+// primaryStage.setTitle("Générateur de fichiers de validation");
+// primaryStage.getIcons().add(new Image("images/icone_ins.png"));
+// primaryStage.setScene(scene);
+// primaryStage.setOnCloseRequest(e -> {
+// HibernateUtil.shutdown();
+// System.exit(0);
+// });
+// primaryStage.show();
+// }
+//
+// /**
+// * @param args the command line arguments
+// */
+// public static void main(String[] args) throws IOException {
+// // We want to store updates in our app dir so must init that here.
+// AppDirectory.initAppDir(APP_NAME);
+// setupLogging();
+// // re-enter at realMain, but possibly running a newer version of the software i.e. after this point the
+// // rest of this code may be ignored.
+// UpdateFX.bootstrap(App.class, AppDirectory.dir(), args);
+//
+// String appId = "generation.validateur.typefichier.App";
+// boolean alreadyRunning;
+// try {
+// JUnique.acquireLock(appId);
+// alreadyRunning = false;
+// } catch (AlreadyLockedException e) {
+// alreadyRunning = true;
+// }
+// if (!alreadyRunning) {
+// launch(args);
+// } else {
+// System.exit(1);
+// }
+// }
+//
+// public static void realMain(String[] args) {
+// launch(args);
+// }
+//
+// private static void setupLogging() throws IOException {
+// logger = java.util.logging.Logger.getLogger("");
+// logger.getHandlers()[0].setFormatter(new BriefLogFormatter());
+// FileHandler handler = new FileHandler(AppDirectory.dir().resolve("log.txt").toString(), true);
+// handler.setFormatter(new BriefLogFormatter());
+// logger.addHandler(handler);
+// }
+//
+// private ProgressIndicator showGiantProgressWheel(Stage stage) {
+// ProgressIndicator indicator = new ProgressIndicator();
+// BorderPane borderPane = new BorderPane(indicator);
+// borderPane.setMinWidth(640);
+// borderPane.setMinHeight(480);
+// Button pinButton = new Button();
+// pinButton.setText("Pin to version "+VERSION);
+// pinButton.setOnAction(event -> {
+// UpdateFX.pinToVersion(AppDirectory.dir(), VERSION);
+// UpdateFX.restartApp();
+// });
+// HBox box = new HBox(new Label("Version " + VERSION), pinButton);
+// box.setSpacing(10);
+// box.setAlignment(Pos.CENTER_LEFT);
+// box.setPadding(new Insets(10));
+// borderPane.setTop(box);
+// Scene scene = new Scene(borderPane);
+// stage.setScene(scene);
+//
+// return indicator;
+// }
+//
+// private ProgressIndicator showGiantProgressWheel(MainController controller) {
+// ProgressIndicator indicator = controller.getIndicator();
+//
+// Label label = controller.getLabelVersion();
+// label.setText("Version "+VERSION);
+//
+// return indicator;
+// }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/BriefLogFormatter.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/BriefLogFormatter.java
new file mode 100644
index 0000000..59abdfb
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/BriefLogFormatter.java
@@ -0,0 +1,62 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.text.MessageFormat;
+import java.util.Date;
+import java.util.logging.*;
+
+/**
+ *
+ * @author STEPHANIE
+ * A Java logging formatter that writes more compact output than the default.
+ */
+public class BriefLogFormatter extends Formatter {
+ private static final MessageFormat messageFormat = new MessageFormat("{3,date,hh:mm:ss} {0} {1}.{2}: {4}\n{5}");
+
+ // OpenJDK made a questionable, backwards incompatible change to the Logger implementation. It internally uses
+ // weak references now which means simply fetching the logger and changing its configuration won't work. We must
+ // keep a reference to our custom logger around.
+ private static Logger logger;
+
+ /** Configures JDK logging to use this class for everything. */
+ public static void init() {
+ logger = Logger.getLogger("");
+ final Handler[] handlers = logger.getHandlers();
+ // In regular Java there is always a handler. Avian doesn't install one however.
+ if (handlers.length > 0)
+ handlers[0].setFormatter(new BriefLogFormatter());
+ }
+
+ public static void initVerbose() {
+ init();
+ logger.setLevel(Level.ALL);
+ logger.log(Level.FINE, "test");
+ }
+
+ @Override
+ public String format(LogRecord logRecord) {
+ Object[] arguments = new Object[6];
+ arguments[0] = logRecord.getThreadID();
+ String fullClassName = logRecord.getSourceClassName();
+ int lastDot = fullClassName.lastIndexOf('.');
+ String className = fullClassName.substring(lastDot + 1);
+ arguments[1] = className;
+ arguments[2] = logRecord.getSourceMethodName();
+ arguments[3] = new Date(logRecord.getMillis());
+ arguments[4] = logRecord.getMessage();
+ if (logRecord.getThrown() != null) {
+ Writer result = new StringWriter();
+ logRecord.getThrown().printStackTrace(new PrintWriter(result));
+ arguments[5] = result.toString();
+ } else {
+ arguments[5] = "";
+ }
+ return messageFormat.format(arguments);
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/ConfigConstraint.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/ConfigConstraint.java
new file mode 100644
index 0000000..1adb99a
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/ConfigConstraint.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/AnnotationType.java to edit this template
+ */
+package com.megatim.fdxgenerator.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Documented
+@Constraint(validatedBy = ConfigValidator.class)
+@Target( { ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ConfigConstraint {
+ String message() default "Configurer d'abord le repertoire de dépôt des fichiers de validation avant de procéder à la génération";
+ Class<?>[] groups() default {};
+ Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/ConfigValidator.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/ConfigValidator.java
new file mode 100644
index 0000000..5db0373
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/ConfigValidator.java
@@ -0,0 +1,28 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.annotations;
+
+import com.megatim.fdxgenerator.model.Configuration;
+import com.megatim.fdxgenerator.model.FichierValidation;
+import com.megatim.fdxgenerator.service.ConfigurationService;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ConfigValidator implements ConstraintValidator<ConfigConstraint, FichierValidation> {
+
+ @Override
+ public void initialize(ConfigConstraint cons) {
+ }
+
+ @Override
+ public boolean isValid(FichierValidation fichVal, ConstraintValidatorContext cxt) {
+ Configuration config = ConfigurationService.getInstance().getCurrentConfig();
+ return config != null;
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FileNameConstraint.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FileNameConstraint.java
new file mode 100644
index 0000000..48fb307
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FileNameConstraint.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxgenerator.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Documented
+@Constraint(validatedBy = FileNameValidator.class)
+@Target( { ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface FileNameConstraint {
+ String message() default "Le format de la date est obligatoire";
+ Class<?>[] groups() default {};
+ Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FileNameValidator.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FileNameValidator.java
new file mode 100644
index 0000000..f1a923b
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FileNameValidator.java
@@ -0,0 +1,24 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.annotations;
+
+import com.megatim.fdxgenerator.model.FichierValidation;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class FileNameValidator implements ConstraintValidator<FileNameConstraint, FichierValidation> {
+
+ @Override
+ public boolean isValid(FichierValidation t, ConstraintValidatorContext cvc) {
+ if(t.isValidateFileName())
+ return t.getFormatDate() != null ;
+ else return true;
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FormatDateConstraint.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FormatDateConstraint.java
new file mode 100644
index 0000000..9cc9d97
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FormatDateConstraint.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/AnnotationType.java to edit this template
+ */
+package com.megatim.fdxgenerator.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Documented
+@Constraint(validatedBy = FormatDateValidator.class)
+@Target( { ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface FormatDateConstraint {
+ String message() default "Format Date yyyy : Année, MM : Mois, dd : Jour , HH : Heure, mm: Minute, ss : Seconde";
+ Class<?>[] groups() default {};
+ Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FormatDateValidator.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FormatDateValidator.java
new file mode 100644
index 0000000..2ebdad5
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/FormatDateValidator.java
@@ -0,0 +1,31 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.annotations;
+
+import com.megatim.fdxgenerator.enums.TypeDonnee;
+import com.megatim.fdxgenerator.model.StructureLigne;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class FormatDateValidator implements ConstraintValidator<FormatDateConstraint, StructureLigne> {
+ @Override
+ public void initialize(FormatDateConstraint cons) {
+ }
+
+ @Override
+ public boolean isValid(StructureLigne structLigne, ConstraintValidatorContext cxt) {
+ if(structLigne.getTypeDonnee().getValue().equals(TypeDonnee.DATE.getValue())){
+ return structLigne.getFormatDate().matches(
+ "y{4}((M{2}){0,1})((d{2}){0,1})((H{2}){0,1})((m{2}){0,1})((s{2}){0,1})|"
+ + "y{4}((d{2}){0,1})((M{2}){0,1})((H{2}){0,1})((m{2}){0,1})((s{2}){0,1})|"
+ + "M{2}((y{4}){0,1})((d{2}){0,1})((H{2}){0,1})((m{2}){0,1})((s{2}){0,1})|"
+ + "M{2}((d{2}){0,1})((y{4}){0,1})((H{2}){0,1})((m{2}){0,1})((s{2}){0,1})");
+ } else return true;
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/KeyToDecryptConstraint.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/KeyToDecryptConstraint.java
new file mode 100644
index 0000000..3cd25b2
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/KeyToDecryptConstraint.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/AnnotationType.java to edit this template
+ */
+package com.megatim.fdxgenerator.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Documented
+@Constraint(validatedBy = KeyToDecryptValidator.class)
+@Target( { ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface KeyToDecryptConstraint {
+ String message() default "La clé est sa confirmation sont obligatoires et doivent avoir la même valeur";
+ Class<?>[] groups() default {};
+ Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/KeyToDecryptValidator.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/KeyToDecryptValidator.java
new file mode 100644
index 0000000..715e574
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/KeyToDecryptValidator.java
@@ -0,0 +1,25 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.annotations;
+
+import com.megatim.fdxgenerator.model.FichierValidation;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class KeyToDecryptValidator implements ConstraintValidator<KeyToDecryptConstraint, FichierValidation>{
+
+ @Override
+ public boolean isValid(FichierValidation t, ConstraintValidatorContext cvc) {
+ if(t.isProtege())
+ return t.getKeyToEncrypt() != null && !t.getKeyToEncrypt().isEmpty() &&
+ t.getKeyToEncrypt().equals(t.getKeyConfirmation());
+ else return true;
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/TailleFormatDateConstraint.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/TailleFormatDateConstraint.java
new file mode 100644
index 0000000..480a0bd
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/TailleFormatDateConstraint.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/AnnotationType.java to edit this template
+ */
+package com.megatim.fdxgenerator.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Documented
+@Constraint(validatedBy = TailleFormatDateValidator.class)
+@Target( { ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface TailleFormatDateConstraint {
+ String message() default "Le format est obligatoire et sa taille doit être égale à la taille du champ";
+ Class<?>[] groups() default {};
+ Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/TailleFormatDateValidator.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/TailleFormatDateValidator.java
new file mode 100644
index 0000000..4f4d509
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/annotations/TailleFormatDateValidator.java
@@ -0,0 +1,30 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.annotations;
+
+import com.megatim.fdxgenerator.enums.TypeDonnee;
+import com.megatim.fdxgenerator.model.StructureLigne;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TailleFormatDateValidator implements ConstraintValidator<TailleFormatDateConstraint, StructureLigne> {
+ @Override
+ public void initialize(TailleFormatDateConstraint cons) {
+ }
+
+ @Override
+ public boolean isValid(StructureLigne structLigne, ConstraintValidatorContext cxt) {
+
+ if(structLigne.getTypeDonnee() != null && structLigne.getTypeDonnee().getValue().equals(TypeDonnee.DATE.getValue())) {
+ System.out.println("formatDate = "+structLigne.getFormatDate());
+ return structLigne.getFormatDate() != null &&
+ structLigne.getTaille() == structLigne.getFormatDate().length();
+ } else return true;
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ConfigEditDialogController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ConfigEditDialogController.java
new file mode 100644
index 0000000..e2b2e44
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ConfigEditDialogController.java
@@ -0,0 +1,52 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxgenerator.forms.ConfigEditFormController;
+import com.megatim.fdxgenerator.model.Configuration;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.scene.layout.Pane;
+
+/**
+ *
+ * @author mela
+ */
+public class ConfigEditDialogController extends AbstractEditDialogController<Configuration> {
+ private ConfigEditFormController configEditFormController;
+
+ @Override
+ public String getTitle() {
+ getEditButton().setText("Configurer");
+ return "Configuration des repertoires";
+ }
+
+ @Override
+ public Pane getContentFormPane() throws IOException {
+ return ViewLoaderUtil.getPaneFromFxmlFile(configEditFormController.getClass().getResource("ConfigEditForm.fxml"), configEditFormController);
+ }
+
+ @Override
+ public Object getContentFormController() {
+ return configEditFormController;
+ }
+
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ configEditFormController = new ConfigEditFormController();
+ super.initialize(url, rb);
+ }
+
+ @Override
+ protected void beforeBindFormFieldWithCurrentObject(Configuration bindObject, Object formController, TypeOperation typeOperation) {
+ super.beforeBindFormFieldWithCurrentObject(bindObject, formController, typeOperation);
+ }
+
+
+}
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();
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ImportTypeFichierEditDialogController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ImportTypeFichierEditDialogController.java
new file mode 100644
index 0000000..b912b15
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ImportTypeFichierEditDialogController.java
@@ -0,0 +1,75 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxgenerator.forms.ImportTypeFichierEditFormController;
+import com.megatim.fdxgenerator.model.ImportFile;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.event.ActionEvent;
+import javafx.scene.layout.Pane;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ImportTypeFichierEditDialogController extends AbstractEditDialogController<ImportFile> {
+
+ private ImportTypeFichierEditFormController importFileEditFormController;
+
+ @Override
+ public String getTitle() {
+ getEditButton().setText("Importer");
+ return "Importation des type fichiers";
+ }
+
+ @Override
+ public Pane getContentFormPane() throws IOException {
+ return ViewLoaderUtil.getPaneFromFxmlFile(importFileEditFormController.getClass().getResource("ImportTypeFichierEditForm.fxml"), importFileEditFormController);
+
+ }
+
+ @Override
+ public Object getContentFormController() {
+ return importFileEditFormController;
+ }
+
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ importFileEditFormController = new ImportTypeFichierEditFormController();
+ super.initialize(url, rb);
+ }
+
+ @Override
+ public boolean beforeSave(ActionEvent event) {
+ getCurrentObject();
+ return super.beforeSave(event);
+ }
+
+ @Override
+ protected void afterBindCurrentObjectWithFormField(ImportFile bindObject, Object formController, TypeOperation typeOperation) {
+ super.afterBindCurrentObjectWithFormField(bindObject, formController, typeOperation);
+ }
+
+ @Override
+ protected void beforeBindCurrentObjectWithFormField(ImportFile bindObject, Object formController, TypeOperation typeOperation) {
+ super.beforeBindCurrentObjectWithFormField(bindObject, formController, typeOperation);
+ }
+
+ @Override
+ protected void afterBindFormFieldWithCurrentObject(ImportFile bindObject, Object formController, TypeOperation typeOperation) {
+ super.afterBindFormFieldWithCurrentObject(bindObject, formController, typeOperation);
+ }
+
+ @Override
+ protected void beforeBindFormFieldWithCurrentObject(ImportFile bindObject, Object formController, TypeOperation typeOperation) {
+ super.beforeBindFormFieldWithCurrentObject(bindObject, formController, typeOperation);
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/MainController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/MainController.java
new file mode 100644
index 0000000..9eeae2c
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/MainController.java
@@ -0,0 +1,288 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/javafx/FXMLController.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.abstracts.AbstractMainDialogController;
+import com.megatimfx.common.abstracts.context.AbstractViewContext;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatim.fdxgenerator.model.Configuration;
+import com.megatim.fdxgenerator.model.FichierValidation;
+import com.megatim.fdxgenerator.model.ImportFile;
+import com.megatim.fdxgenerator.model.TypeFichier;
+import com.megatim.fdxgenerator.model.dao.HibernateUtil;
+import com.megatim.fdxgenerator.service.ConfigurationService;
+import com.megatim.fdxgenerator.service.ImportFileService;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javafx.concurrent.Task;
+import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.MenuItem;
+import javafx.scene.control.ProgressIndicator;
+import javafx.scene.control.Tooltip;
+import javafx.scene.layout.VBox;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+import javafx.stage.StageStyle;
+
+/**
+ * FXML Controller class
+ *
+ * @author mela
+ */
+public class MainController implements Initializable {
+
+ @FXML
+ private VBox mainContainer;
+
+ @FXML
+ public MenuItem configMenuItem;
+
+ private Stage parent;
+
+ @FXML
+ ProgressIndicator indicator;
+
+ @FXML
+ Label labelVersion;
+
+ @FXML
+ Button pinButton;
+
+ ConfigEditDialogController configEditDialogController;
+
+
+ @FXML
+ private Button btnGenValidateur;
+
+ /**
+ * Initializes the controller class.
+ *
+ * @param url
+ * @param rb
+ */
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ }
+
+ private void setStage(Parent root) {
+ Scene scene = new Scene(root);
+ Stage stage = new Stage();
+
+ stage.setScene(scene);
+ stage.initStyle(StageStyle.UNDECORATED);
+ stage.initModality(Modality.APPLICATION_MODAL);
+
+ //On ajoute les tooltips aux boutons
+ addToolTipBoutons();
+
+ stage.show();
+ }
+
+ @FXML
+ public void openTypeFichierDialog(ActionEvent event) {
+ try {
+
+ FXMLLoader loader = new FXMLLoader(
+ (AbstractViewContext.getInstance().getAbstractMainDialogControllerURL() == null)
+ ? AbstractMainDialogController.class.getResource("AbstractMainDialog.fxml")
+ : AbstractViewContext.getInstance().getAbstractMainDialogControllerURL()
+ );
+ loader.setControllerFactory(param -> new TypeFichierListDialogController());
+ Parent root = loader.load();
+
+ setStage(root);
+ } catch (IOException ex) {
+ Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+
+ @FXML
+ public void openValidateurFichierDialog(ActionEvent event) {
+ try {
+
+ FXMLLoader loader = new FXMLLoader(
+ (AbstractViewContext.getInstance().getAbstractMainDialogControllerURL() == null)
+ ? AbstractMainDialogController.class.getResource("AbstractMainDialog.fxml")
+ : AbstractViewContext.getInstance().getAbstractMainDialogControllerURL()
+ );
+ loader.setControllerFactory(param -> new ValidateurFichierListDialogController());
+ Parent root = loader.load();
+ setStage(root);
+ } catch (IOException ex) {
+ Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+
+ @FXML
+ public void openStructureLigneDialog(ActionEvent event) {
+ try {
+
+ FXMLLoader loader = new FXMLLoader(
+ (AbstractViewContext.getInstance().getAbstractMainDialogControllerURL() == null)
+ ? AbstractMainDialogController.class.getResource("AbstractMainDialog.fxml")
+ : AbstractViewContext.getInstance().getAbstractMainDialogControllerURL()
+ );
+ loader.setControllerFactory(param -> new StructureLigneListDialogController());
+ Parent root = loader.load();
+ setStage(root);
+ } catch (IOException ex) {
+ Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+
+ @FXML
+ public void openFichierValidationDialog(ActionEvent event) {
+
+ try {
+
+ FXMLLoader loader = new FXMLLoader(
+ (AbstractViewContext.getInstance().getAbstractEditDialogControllerURL() == null)
+ ? AbstractEditDialogController.class.getResource("AbstractEditDialog.fxml")
+ : AbstractViewContext.getInstance().getAbstractEditDialogControllerURL()
+ );
+
+ FichierValidationEditDialogController controller = new FichierValidationEditDialogController();
+
+ loader.setControllerFactory(param -> controller);
+
+ Parent root = loader.load();
+ Stage stage = (Stage) mainContainer.getScene().getWindow();
+
+ controller.initData(stage, TypeOperation.ADD, new FichierValidation(), null, null, true);
+
+ setStage(root);
+
+ } catch (IOException ex) {
+
+ Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+
+ }
+
+ }
+
+ @FXML
+ public void openImportTypeFichierDialog(ActionEvent event) {
+ try {
+
+ FXMLLoader loader = new FXMLLoader(
+ (AbstractViewContext.getInstance().getAbstractEditDialogControllerURL() == null)
+ ? AbstractEditDialogController.class.getResource("AbstractEditDialog.fxml")
+ : AbstractViewContext.getInstance().getAbstractEditDialogControllerURL()
+ );
+ ImportTypeFichierEditDialogController controller = new ImportTypeFichierEditDialogController();
+ loader.setControllerFactory(param -> controller);
+
+ Parent root = loader.load();
+ Stage stage = (Stage) mainContainer.getScene().getWindow();
+
+ ImportFile imp = new ImportFile();
+ imp.setType(TypeFichier.class);
+ controller.initData(stage, TypeOperation.ADD, imp, ImportFileService.getInstance(), null, false);
+
+ setStage(root);
+ } catch (IOException ex) {
+ Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+
+ @FXML
+ public void openConfigDialog(ActionEvent event) {
+ Task<Configuration> task = new Task() {
+
+ @Override
+ protected Object call() throws Exception {
+ return ConfigurationService.getInstance().getCurrentConfig();
+ }
+ };
+ Thread th = new Thread(task);
+ th.setDaemon(true);
+ th.start();
+
+ task.setOnSucceeded(e -> {
+ try {
+
+ FXMLLoader loader = new FXMLLoader(
+ (AbstractViewContext.getInstance().getAbstractEditDialogControllerURL() == null)
+ ? AbstractEditDialogController.class.getResource("AbstractEditDialog.fxml")
+ : AbstractViewContext.getInstance().getAbstractEditDialogControllerURL()
+ );
+
+ configEditDialogController = new ConfigEditDialogController();
+
+ loader.setControllerFactory(param -> configEditDialogController);
+ Parent root = loader.load();
+ parent = (Stage) mainContainer.getScene().getWindow();
+
+ Configuration config = task.getValue();
+ if (config == null) {
+ configEditDialogController.initData(parent, TypeOperation.ADD, new Configuration(), ConfigurationService.getInstance(), null, false);
+ } else {
+ configEditDialogController.initData(parent, TypeOperation.UPDATE, config, ConfigurationService.getInstance(), null, false);
+ }
+ configMenuItem.setDisable(false);
+
+ setStage(root);
+ } catch (IOException ex) {
+ Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
+ });
+ task.setOnRunning(e -> configMenuItem.setDisable(true));
+ }
+
+ @FXML
+ public void quit(ActionEvent event) {
+ HibernateUtil.shutdown();
+ System.exit(0);
+ }
+
+ public ProgressIndicator getIndicator() {
+ return indicator;
+ }
+
+ public void setIndicator(ProgressIndicator indicator) {
+ this.indicator = indicator;
+ }
+
+ public Label getLabelVersion() {
+ return labelVersion;
+ }
+
+ public void setLabelVersion(Label labelVersion) {
+ this.labelVersion = labelVersion;
+ }
+
+ public Button getPinButton() {
+ return pinButton;
+ }
+
+ public void setPinButton(Button pinButton) {
+ this.pinButton = pinButton;
+ }
+
+ private void addToolTipBoutons() {
+
+ //Variables
+ Tooltip tooltipGenValidateur = new Tooltip("Importation des formats de validation");
+
+ //On set le styles
+ tooltipGenValidateur.setStyle("-fx-background-color: rgba(216, 215, 208, 1); -fx-text-fill: black;");
+
+ //On set les toolTips
+ btnGenValidateur.setTooltip(tooltipGenValidateur);
+
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/StructureLigneEditDialogController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/StructureLigneEditDialogController.java
new file mode 100644
index 0000000..2e22aa2
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/StructureLigneEditDialogController.java
@@ -0,0 +1,204 @@
+package com.megatim.fdxgenerator.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatimfx.common.dialogs.NotificationDialog;
+import com.megatimfx.common.dialogs.NotificationType;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxgenerator.App;
+import com.megatim.fdxgenerator.enums.TypeDonnee;
+import com.megatim.fdxgenerator.forms.StructureLigneEditFormController;
+import com.megatim.fdxgenerator.model.StructureLigne;
+import com.megatim.fdxgenerator.model.TypeFichier;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.scene.Node;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+
+public class StructureLigneEditDialogController extends AbstractEditDialogController<StructureLigne> {
+
+ private StructureLigneEditFormController structureLigneEditFormController;
+
+ private ObservableList<StructureLigne> selectedStructureLignes = FXCollections.observableArrayList();
+
+ private TypeFichier typeFichier;
+
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ super.initialize(url, rb);
+ }
+
+ @Override
+ public String getTitle() {
+ return "Editer une structure de ligne";
+ }
+
+ @Override
+ public Pane getContentFormPane() throws IOException {
+ return ViewLoaderUtil.getPaneFromFxmlFile(
+ structureLigneEditFormController.getClass().getResource("StructureLigneEditForm.fxml"),
+ structureLigneEditFormController
+ );
+ }
+
+ @Override
+ public Object getContentFormController() {
+ return structureLigneEditFormController;
+ }
+
+ @Override
+ protected void beforeBindFormFieldWithCurrentObject(StructureLigne bindObject, Object formController, TypeOperation typeOperation) {
+
+ if (formController instanceof StructureLigneEditFormController) {
+
+ if (typeOperation.equals(TypeOperation.UPDATE) || typeOperation.equals(TypeOperation.VIEW)) {
+
+ if (bindObject.getTypeDonnee().equals(TypeDonnee.DATE) && App.SEPARATEURS_DATE.containsKey(bindObject.getSeparateurDate())) {
+
+ bindObject.setDelimiteurDate(App.SEPARATEURS_DATE.get(bindObject.getSeparateurDate()));
+ }
+ if (bindObject.getTypeDonnee().equals(TypeDonnee.DECIMAL) && App.SEPARATEURS_DECIMAUX.containsKey(bindObject.getSeparateurDecimal())) {
+
+ bindObject.setDelimiteurDecimal(App.SEPARATEURS_DECIMAUX.get(bindObject.getSeparateurDecimal()));
+ }
+ }
+
+ }
+ }
+
+ @Override
+ public boolean beforeSave(ActionEvent event) {
+ Boolean proceed = super.beforeSave(event);
+ StringBuilder message = new StringBuilder(0);
+
+ if (proceed) {
+
+ if (getCurrentObject().getTypeDonnee().equals(TypeDonnee.DATE)) {
+
+ boolean proceed1 = getCurrentObject().getFormatDate() != null
+ && getCurrentObject().getTaille() == getCurrentObject().getFormatDate().length();
+
+ proceed = proceed && proceed1;
+
+ if (!proceed1) {
+ message.append("Le format de la date est obligatoire et sa taille doit être égale à la taille du champ\n");
+ }
+
+ boolean proceedSeparateurDate = getCurrentObject().getDelimiteurDate() != null;
+ proceed = proceed && proceedSeparateurDate;
+
+ if (proceedSeparateurDate) {
+ getCurrentObject().setSeparateurDate(getCurrentObject().getDelimiteurDate().getCode());
+ } else {
+ message.append("Le séparateur de date est obligatoire\n");
+ }
+
+ }
+
+ if (getCurrentObject().getTypeDonnee().equals(TypeDonnee.DECIMAL)) {
+
+ boolean proceedSeparateurDecimal = getCurrentObject().getDelimiteurDecimal() != null;
+ proceed = proceed && proceedSeparateurDecimal;
+
+ if (proceedSeparateurDecimal) {
+ getCurrentObject().setSeparateurDecimal(getCurrentObject().getDelimiteurDecimal().getCode());
+ } else {
+ message.append("Le séparateur de décimal est obligatoire\n");
+ }
+
+ boolean proceedTailleDecimal = getCurrentObject().getTaillePartieDecimal() > 1;
+ proceed = proceed && proceedTailleDecimal;
+
+ if (!proceedTailleDecimal) {
+ message.append("La taille de la partie entière doit être supérieure à 0");
+ }
+ }
+ }
+
+ if (!proceed && !message.toString().isEmpty()) {
+
+ LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+ Node source = (Node) event.getSource();
+ Stage parentStage = (Stage) source.getScene().getWindow();
+ NotificationDialog notificationDialog = new NotificationDialog(
+ message.toString(),
+ NotificationType.ERROR,
+ parentStage
+ );
+
+ notificationDialog.showNotification();
+ }
+
+ return proceed;
+ }
+
+ @Override
+ protected void afterBindCurrentObjectWithFormField(StructureLigne bindObject, Object formController, TypeOperation typeOperation) {
+ if (formController instanceof StructureLigneEditFormController) {
+ if (typeFichier != null) {
+ bindObject.setId(typeFichier + "" + bindObject.getPosition());
+ }
+ }
+ }
+
+ public StructureLigneEditFormController getStructureLigneEditFormController() {
+ return structureLigneEditFormController;
+ }
+
+ public void setStructureLigneEditFormController(StructureLigneEditFormController structureLigneEditFormController) {
+ this.structureLigneEditFormController = structureLigneEditFormController;
+ }
+
+ public void setTypeFichier(TypeFichier typeFichier) {
+ this.typeFichier = typeFichier;
+ }
+
+ public void setSelectedStructureLignes(ObservableList<StructureLigne> selectedStructureLignes) {
+ this.selectedStructureLignes = selectedStructureLignes;
+ }
+
+ @Override
+ public void afterSave(ActionEvent event, Object formController, TypeOperation typeOperation) {
+
+ StructureLigneEditFormController controller = (StructureLigneEditFormController) formController;
+
+ if (getTypeOperation().equals(TypeOperation.UPDATE)) {
+
+ boolean exists = false;
+
+ ObservableList<Integer> liste = controller.getList();
+
+ for (Integer i : liste) {
+
+ if (i.equals(controller.getInitialUpdateSelection())) {
+
+ exists = true;
+
+ break;
+ }
+ }
+
+ if (!exists) {
+
+ liste.add(controller.getInitialUpdateSelection());
+ }
+ }
+ }
+
+ @Override
+ protected void afterBindFormFieldWithCurrentObject(StructureLigne bindObject, Object formController, TypeOperation typeOperation) {
+ StructureLigneEditFormController controller = (StructureLigneEditFormController) formController;
+
+ if (typeOperation.equals(TypeOperation.UPDATE)) {
+ controller.setInitialUpateSelection();
+
+ }
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/StructureLigneListDialogController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/StructureLigneListDialogController.java
new file mode 100644
index 0000000..b4761ee
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/StructureLigneListDialogController.java
@@ -0,0 +1,93 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.abstracts.AbstractMainDialogController;
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxgenerator.controller.table.StructureLigneTable;
+import com.megatim.fdxgenerator.model.StructureLigne;
+import com.megatim.fdxgenerator.service.StructureLigneService;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.ResourceBundle;
+import javafx.scene.control.TableColumn;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class StructureLigneListDialogController extends AbstractMainDialogController<StructureLigne,StructureLigne> {
+
+// private StructureLigneSearchFormController structureLigneSearchFormController;
+// private StructureLigneAdvancedSearchFormController structureLigneAdvancedSearchFormController;
+
+ @Override
+ public GenericCrudService<StructureLigne> getGenericCrudService() {
+ return StructureLigneService.getInstance();
+ }
+
+ @Override
+ public String getTitle() {
+ return "Liste des structures lignes";
+ }
+
+ @Override
+ public Class<StructureLigne> getElementClazz() {
+ return StructureLigne.class;
+ }
+
+ @Override
+ public List<TableColumn> getElementTableColumns() {
+ return Arrays.asList(StructureLigneTable.codeColumn(),StructureLigneTable.positionColumn(),StructureLigneTable.tailleColumn(),StructureLigneTable.typeDonneeColumn());
+ }
+
+ @Override
+ public AbstractEditDialogController<StructureLigne> getAbstractEditDialogController() {
+ return new StructureLigneEditDialogController();
+ }
+
+ @Override
+ public List<SearchCriteria> getPermanentSearchCriterias() {
+ List<SearchCriteria> liste = new ArrayList<>();
+
+ return liste;
+ }
+
+// @Override
+// public Object getSearchFormController() {
+// return structureLigneSearchFormController;
+// }
+//
+// @Override
+// public Pane getSearchFormPane() throws IOException {
+// return ViewLoaderUtil.getPaneFromFxmlFile(structureLigneSearchFormController.getClass().getResource("structureLigneSearchForm.fxml"), structureLigneSearchFormController);
+// }
+
+ @Override
+ public void initialize(URL location, ResourceBundle resources) {
+ setAddButtonDisable(true);
+ setDeleteButtonDisable(true);
+ setEditButtonDisable(true);
+ setPrintButtonDisable(true);
+// structureLigneSearchFormController = new StructureLigneSearchFormController();
+// structureLigneAdvancedSearchFormController = new StructureLigneAdvancedSearchFormController();
+ super.initialize(location, resources);
+ }
+
+// @Override
+// public Object getAdvancedSearchFormController() {
+// return structureLigneAdvancedSearchFormController;
+// }
+//
+// @Override
+// public Pane getAdvancedSearchFormPane() throws IOException {
+// return ViewLoaderUtil.getPaneFromFxmlFile(structureLigneAdvancedSearchFormController.getClass().getResource("StructureLigneAdvancedSearchForm.fxml"), structureLigneAdvancedSearchFormController);
+// }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/TypeFichierEditDialogController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/TypeFichierEditDialogController.java
new file mode 100644
index 0000000..5d63d99
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/TypeFichierEditDialogController.java
@@ -0,0 +1,74 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxgenerator.forms.TypeFichierEditFormController;
+import com.megatim.fdxgenerator.model.TypeFichier;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.event.ActionEvent;
+import javafx.scene.layout.Pane;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierEditDialogController extends AbstractEditDialogController<TypeFichier>{
+ private TypeFichierEditFormController typeFichierEditFormController;
+
+ @Override
+ public String getTitle() {
+ return "Edition d'un type fichier";
+ }
+
+ @Override
+ public Pane getContentFormPane() throws IOException {
+ return ViewLoaderUtil.getPaneFromFxmlFile(typeFichierEditFormController.getClass().getResource("TypeFichierEditForm.fxml"), typeFichierEditFormController);
+
+ }
+
+ @Override
+ public Object getContentFormController() {
+ return typeFichierEditFormController;
+ }
+
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ typeFichierEditFormController = new TypeFichierEditFormController();
+ super.initialize(url, rb);
+ }
+
+ @Override
+ public boolean beforeSave(ActionEvent event) {
+ getCurrentObject();
+ return super.beforeSave(event);
+ }
+
+ @Override
+ protected void afterBindCurrentObjectWithFormField(TypeFichier bindObject, Object formController, TypeOperation typeOperation) {
+ super.afterBindCurrentObjectWithFormField(bindObject, formController, typeOperation);
+ }
+
+ @Override
+ protected void beforeBindCurrentObjectWithFormField(TypeFichier bindObject, Object formController, TypeOperation typeOperation) {
+ super.beforeBindCurrentObjectWithFormField(bindObject, formController, typeOperation);
+ }
+
+ @Override
+ protected void afterBindFormFieldWithCurrentObject(TypeFichier bindObject, Object formController, TypeOperation typeOperation) {
+ super.afterBindFormFieldWithCurrentObject(bindObject, formController, typeOperation);
+ }
+
+ @Override
+ protected void beforeBindFormFieldWithCurrentObject(TypeFichier bindObject, Object formController, TypeOperation typeOperation) {
+ super.beforeBindFormFieldWithCurrentObject(bindObject, formController, typeOperation);
+ }
+
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/TypeFichierListDialogController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/TypeFichierListDialogController.java
new file mode 100644
index 0000000..805205d
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/TypeFichierListDialogController.java
@@ -0,0 +1,102 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.abstracts.AbstractMainDialogController;
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxgenerator.controller.search.TypeFichierAdvancedSearchFormController;
+import com.megatim.fdxgenerator.controller.search.TypeFichierSearchFormController;
+import com.megatim.fdxgenerator.controller.table.TypeFichierTable;
+import com.megatim.fdxgenerator.model.TypeFichier;
+import com.megatim.fdxgenerator.service.TypeFichierService;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.ResourceBundle;
+import javafx.scene.control.TableColumn;
+import javafx.scene.layout.Pane;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierListDialogController extends AbstractMainDialogController<TypeFichier, TypeFichier> {
+
+ private TypeFichierSearchFormController typeFichierSearchFormController;
+ private TypeFichierAdvancedSearchFormController typeFichierAdvancedSearchFormController;
+
+ @Override
+ public GenericCrudService<TypeFichier> getGenericCrudService() {
+ return TypeFichierService.getInstance();
+ }
+
+ @Override
+ public String getTitle() {
+ return "Liste des type de fichiers";
+ }
+
+ @Override
+ public Class<TypeFichier> getElementClazz() {
+ return TypeFichier.class;
+ }
+
+ @Override
+ public List<TableColumn> getElementTableColumns() {
+ return Arrays.asList(TypeFichierTable.codeColumn(), TypeFichierTable.libelleColumn(), TypeFichierTable.participantColumn());
+ }
+
+ @Override
+ public AbstractEditDialogController<TypeFichier> getAbstractEditDialogController() {
+ return new TypeFichierEditDialogController();
+ }
+
+ @Override
+ public List<SearchCriteria> getPermanentSearchCriterias() {
+ List<SearchCriteria> liste = new ArrayList<>();
+
+ return liste;
+ }
+
+ @Override
+ public Object getSearchFormController() {
+ return typeFichierSearchFormController;
+ }
+
+ @Override
+ public Pane getSearchFormPane() throws IOException {
+ return ViewLoaderUtil.getPaneFromFxmlFile(typeFichierSearchFormController.getClass().getResource("TypeFichierSearchForm.fxml"), typeFichierSearchFormController);
+ }
+
+ @Override
+ public void initialize(URL location, ResourceBundle resources) {
+
+ typeFichierSearchFormController = new TypeFichierSearchFormController();
+ typeFichierAdvancedSearchFormController = new TypeFichierAdvancedSearchFormController();
+
+ //setDeleteButtonDisable(true);
+ setEditButtonDisable(true);
+ setPrintButtonDisable(true);
+ setDeleteButtonDisable(true);
+ setPrintButtonDisable(true);
+
+ super.initialize(location, resources);
+ }
+
+ @Override
+ public Object getAdvancedSearchFormController() {
+ return typeFichierAdvancedSearchFormController;
+ }
+
+ @Override
+ public Pane getAdvancedSearchFormPane() throws IOException {
+ return ViewLoaderUtil.getPaneFromFxmlFile(typeFichierAdvancedSearchFormController.getClass().getResource("TypeFichierAdvancedSearchForm.fxml"), typeFichierAdvancedSearchFormController);
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ValidateurFichierEditDialogController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ValidateurFichierEditDialogController.java
new file mode 100644
index 0000000..a8a9958
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ValidateurFichierEditDialogController.java
@@ -0,0 +1,258 @@
+package com.megatim.fdxgenerator.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatimfx.common.dialogs.NotificationDialog;
+import com.megatimfx.common.dialogs.NotificationType;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxgenerator.App;
+import com.megatim.fdxgenerator.enums.DataType;
+import com.megatim.fdxgenerator.forms.StructureLigneEditFormController;
+import com.megatim.fdxgenerator.forms.ValidateurFichierEditFormController;
+import com.megatim.fdxgenerator.model.StructureLigne;
+import com.megatim.fdxgenerator.model.ValidateurFichier;
+import com.megatim.fdxgenerator.pojo.Delimiteur;
+import com.megatim.fdxgenerator.service.ValidateurFichierService;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.collections.ListChangeListener;
+import javafx.event.ActionEvent;
+import javafx.scene.Node;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+
+public class ValidateurFichierEditDialogController extends AbstractEditDialogController<ValidateurFichier> {
+
+ private ValidateurFichierEditFormController validateurFichierEditFormController;
+
+ private StructureLigneEditDialogController structureLigneEditDialogController;
+
+ private ValidateurFichierService validateurFichierService = ValidateurFichierService.getInstance();
+
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ validateurFichierEditFormController = new ValidateurFichierEditFormController();
+ structureLigneEditDialogController = new StructureLigneEditDialogController();
+ structureLigneEditDialogController.setStructureLigneEditFormController(new StructureLigneEditFormController());
+ super.initialize(url, rb);
+ }
+
+ @Override
+ public String getTitle() {
+ return "Edition d'un validateur de fichier";
+ }
+
+ @Override
+ public Pane getContentFormPane() throws IOException {
+ return ViewLoaderUtil.getPaneFromFxmlFile(
+ validateurFichierEditFormController.getClass().getResource("ValidateurFichierEditForm.fxml"),
+ validateurFichierEditFormController
+ );
+ }
+
+ @Override
+ public Object getContentFormController() {
+ return validateurFichierEditFormController;
+ }
+
+ @Override
+ protected void beforeBindFormFieldWithCurrentObject(ValidateurFichier bindObject, Object formController, TypeOperation typeOperation) {
+
+ if (formController instanceof ValidateurFichierEditFormController) {
+ ValidateurFichierEditFormController controller = (ValidateurFichierEditFormController) formController;
+
+ if (typeOperation.equals(TypeOperation.VIEW) || typeOperation.equals(TypeOperation.UPDATE)) {
+
+ if (bindObject.getCodeDelimiteurColonne() != null) {
+ bindObject.setDelimiteurColonne(App.DELIMITEURS_COLONNE.get(bindObject.getCodeDelimiteurColonne()));
+ }
+
+ if (bindObject.getCodeDelimiteurLigne() != null) {
+ bindObject.setDelimiteurLigne(App.DELIMITEURS_LIGNE.get(bindObject.getCodeDelimiteurLigne()));
+ }
+
+ }
+
+ if (typeOperation.equals(TypeOperation.ADD) || typeOperation.equals(TypeOperation.UPDATE)) {
+
+ controller.getDelimiteurColonne().disableProperty()
+ .bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull()
+ .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNotEqualTo(DataType.CSV))
+ );
+
+ controller.getDelimiteurLigne().disableProperty()
+ .bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull()
+ .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNotEqualTo(DataType.CSV))
+ );
+
+ controller.getHeaderPresentCheckbox().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull()
+ .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.TXT))
+ );
+
+ }
+ }
+ }
+
+ @Override
+ protected void afterBindFormFieldWithCurrentObject(ValidateurFichier bindObject, Object formController,
+ TypeOperation typeOperation
+ ) {
+
+ if (formController instanceof ValidateurFichierEditFormController) {
+
+ ValidateurFichierEditFormController controller = (ValidateurFichierEditFormController) formController;
+
+ controller.getStructureLigneAbstractTable().setController(structureLigneEditDialogController);
+
+ controller.getStructureLigneAbstractTable().getElementObservableList().sort((o1, o2) -> {
+ return Integer.valueOf(o1.getPosition()).compareTo(o2.getPosition());
+ });
+
+ structureLigneEditDialogController.setSelectedStructureLignes(controller.getStructureLigneAbstractTable().getElementObservableList());
+
+ switch (typeOperation) {
+
+ case ADD:
+
+ controller.getSaisieStructureLigneChecBox().setOnAction(event -> {
+
+ if (controller.getSaisieStructureLigneChecBox().isSelected()) {
+ int numberOfPosition = Integer.parseInt(controller.getNombrePositionTextField().getText());
+ structureLigneEditDialogController.getStructureLigneEditFormController().populatePositionComboBox(numberOfPosition);
+ }
+
+ });
+ controller.getTypeFichierAbstractSelectItem().selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+
+ if (newValue != null) {
+ structureLigneEditDialogController.setTypeFichier(newValue);
+ }
+
+ });
+ break;
+
+ case UPDATE:
+
+ structureLigneEditDialogController.setTypeFichier(controller.getTypeFichierAbstractSelectItem().getSelectedElement());
+
+ controller.getSaisieStructureLigneChecBox().setSelected(true);
+ controller.getSaisieStructureLigneChecBox().setDisable(true);
+
+ break;
+
+ default:
+
+ controller.getSaisieStructureLigneChecBox().setSelected(true);
+ controller.getSaisieStructureLigneChecBox().setDisable(true);
+
+ break;
+ }
+
+ controller.getStructureLigneAbstractTable().getElementObservableList().addListener((ListChangeListener.Change<? extends StructureLigne> c) -> {
+
+ while (c.next()) {
+
+ if (c.wasAdded()) {
+
+ int start = c.getFrom();
+ int end = c.getTo();
+
+ for (int i = start; i < end; i++) {
+
+ StructureLigne structLigne = c.getList().get(i);
+
+ structLigne.setValidateurFichier(getCurrentObject());
+
+ structureLigneEditDialogController.getStructureLigneEditFormController().getList().remove(new Integer(structLigne.getPosition()));
+
+ structureLigneEditDialogController.getStructureLigneEditFormController().getList().sort((o1, o2) -> {
+ return o1.compareTo(o2);
+ });
+ }
+
+ } else if (c.wasRemoved()) {
+
+ for (StructureLigne structLigne : c.getRemoved()) {
+
+ structureLigneEditDialogController.getStructureLigneEditFormController().getList().add(structLigne.getPosition());
+
+ structureLigneEditDialogController.getStructureLigneEditFormController().getList().sort((o1, o2) -> {
+ return o1.compareTo(o2);
+ });
+
+ }
+ }
+
+ }
+ });
+
+ }
+
+ }
+
+ @Override
+ protected void afterBindCurrentObjectWithFormField(ValidateurFichier bindObject, Object formController,
+ TypeOperation typeOperation
+ ) {
+ ValidateurFichierEditFormController controller = (ValidateurFichierEditFormController) formController;
+ controller.getStructureLigneAbstractTable().setController(structureLigneEditDialogController);
+ if (typeOperation.equals(TypeOperation.ADD)) {
+ if (bindObject.getTypeFichier() != null) {
+ bindObject.setId(bindObject.getTypeFichier().getCode());
+ }
+ }
+ }
+
+ @Override
+ public boolean beforeSave(ActionEvent event) {
+ Boolean proceed = super.beforeSave(event);
+ Delimiteur delimiteurColonne = getCurrentObject().getDelimiteurColonne();
+ Delimiteur delimiteurLigne = getCurrentObject().getDelimiteurLigne();
+
+ if (delimiteurColonne != null) {
+ getCurrentObject().setCodeDelimiteurColonne(delimiteurColonne.getCode());
+ }
+
+ if (delimiteurLigne != null) {
+ getCurrentObject().setCodeDelimiteurLigne(delimiteurLigne.getCode());
+ }
+
+ if (proceed) {
+ if (getTypeOperation().equals(TypeOperation.ADD) || getTypeOperation().equals(TypeOperation.UPDATE)) {
+ LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show();
+ proceed = getCurrentObject().getNombrePosition() == getCurrentObject().getStructureLignes().size();
+
+ if (!proceed) {
+ LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+ Node source = (Node) event.getSource();
+ Stage parentStage = (Stage) source.getScene().getWindow();
+ NotificationDialog notificationDialog = new NotificationDialog(
+ "Vous devez remplir la structure de toutes les positions",
+ NotificationType.ERROR,
+ parentStage
+ );
+ notificationDialog.showNotification();
+ } else {
+ proceed = validateurFichierService.find(getCurrentObject()) != null;
+
+ if (!proceed) {
+ LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+ Node source = (Node) event.getSource();
+ Stage parentStage = (Stage) source.getScene().getWindow();
+ NotificationDialog notificationDialog = new NotificationDialog(
+ "Il existe déjà un validateur de fichier associé à ce type de fichier",
+ NotificationType.ERROR,
+ parentStage
+ );
+ notificationDialog.showNotification();
+ }
+ }
+ LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+ }
+ }
+ return proceed;
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ValidateurFichierListDialogController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ValidateurFichierListDialogController.java
new file mode 100644
index 0000000..b5bfce1
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/ValidateurFichierListDialogController.java
@@ -0,0 +1,94 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.abstracts.AbstractMainDialogController;
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxgenerator.controller.search.ValidateurFichierAdvancedSearchFormController;
+import com.megatim.fdxgenerator.controller.search.ValidateurFichierSearchFormController;
+import com.megatim.fdxgenerator.controller.table.ValidateurFichierTable;
+import com.megatim.fdxgenerator.model.ValidateurFichier;
+import com.megatim.fdxgenerator.service.ValidateurFichierService;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.ResourceBundle;
+import javafx.scene.control.TableColumn;
+import javafx.scene.layout.Pane;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ValidateurFichierListDialogController extends AbstractMainDialogController<ValidateurFichier,ValidateurFichier> {
+
+ private ValidateurFichierSearchFormController validateurFichierSearchFormController;
+ private ValidateurFichierAdvancedSearchFormController validateurFichierAdvancedSearchFormController;
+
+ @Override
+ public GenericCrudService<ValidateurFichier> getGenericCrudService() {
+ return ValidateurFichierService.getInstance();
+ }
+
+ @Override
+ public String getTitle() {
+ return "Liste des validateurs fichiers";
+ }
+
+ @Override
+ public Class<ValidateurFichier> getElementClazz() {
+ return ValidateurFichier.class;
+ }
+
+ @Override
+ public List<TableColumn> getElementTableColumns() {
+ return Arrays.asList(ValidateurFichierTable.typeFichierColumn(),ValidateurFichierTable.nombrePositionColumn());
+ }
+
+ @Override
+ public AbstractEditDialogController<ValidateurFichier> getAbstractEditDialogController() {
+ return new ValidateurFichierEditDialogController();
+ }
+
+ @Override
+ public List<SearchCriteria> getPermanentSearchCriterias() {
+ List<SearchCriteria> liste = new ArrayList<>();
+
+ return liste;
+ }
+
+ @Override
+ public Object getSearchFormController() {
+ return validateurFichierSearchFormController;
+ }
+
+ @Override
+ public Pane getSearchFormPane() throws IOException {
+ return ViewLoaderUtil.getPaneFromFxmlFile(validateurFichierSearchFormController.getClass().getResource("ValidateurFichierSearchForm.fxml"), validateurFichierSearchFormController);
+ }
+
+ @Override
+ public void initialize(URL location, ResourceBundle resources) {
+ validateurFichierSearchFormController = new ValidateurFichierSearchFormController();
+ validateurFichierAdvancedSearchFormController = new ValidateurFichierAdvancedSearchFormController();
+ super.initialize(location, resources);
+ }
+
+ @Override
+ public Object getAdvancedSearchFormController() {
+ return validateurFichierAdvancedSearchFormController;
+ }
+
+ @Override
+ public Pane getAdvancedSearchFormPane() throws IOException {
+ return ViewLoaderUtil.getPaneFromFxmlFile(validateurFichierAdvancedSearchFormController.getClass().getResource("ValidateurFichierAdvancedSearchForm.fxml"), validateurFichierAdvancedSearchFormController);
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/StructureLigneAdvancedSearchFormController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/StructureLigneAdvancedSearchFormController.java
new file mode 100644
index 0000000..8617941
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/StructureLigneAdvancedSearchFormController.java
@@ -0,0 +1,13 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller.search;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class StructureLigneAdvancedSearchFormController {
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/StructureLigneSearchFormController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/StructureLigneSearchFormController.java
new file mode 100644
index 0000000..bea0d5d
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/StructureLigneSearchFormController.java
@@ -0,0 +1,13 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller.search;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class StructureLigneSearchFormController {
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/TypeFichierAdvancedSearchFormController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/TypeFichierAdvancedSearchFormController.java
new file mode 100644
index 0000000..3f42341
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/TypeFichierAdvancedSearchFormController.java
@@ -0,0 +1,38 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.enums.Operateur;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TextField;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierAdvancedSearchFormController implements Initializable {
+
+
+ @Search(fieldName = "libelle", operateur = Operateur.LIKE, editable = false)
+ @FXML
+ private TextField libelle;
+
+ @Search(fieldName = "codeParticipant", operateur = Operateur.LIKE, editable = false)
+ @FXML
+ private TextField participant;
+
+ /**
+ * Initializes the controller class.
+ */
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ // TODO
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/TypeFichierSearchFormController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/TypeFichierSearchFormController.java
new file mode 100644
index 0000000..32f15a3
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/TypeFichierSearchFormController.java
@@ -0,0 +1,31 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.enums.Operateur;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TextField;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierSearchFormController implements Initializable{
+ @Search(fieldName = "code", operateur = Operateur.LIKE)
+ @FXML
+ private TextField code;
+
+ /**
+ * Initializes the controller class.
+ */
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ // TODO
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/ValidateurFichierAdvancedSearchFormController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/ValidateurFichierAdvancedSearchFormController.java
new file mode 100644
index 0000000..654aa92
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/ValidateurFichierAdvancedSearchFormController.java
@@ -0,0 +1,32 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.enums.Operateur;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TextField;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ValidateurFichierAdvancedSearchFormController implements Initializable {
+
+ @Search(fieldName = "nombrePosition", operateur = Operateur.EQUALS)
+ @FXML
+ private TextField nombrePosition;
+
+ /**
+ * Initializes the controller class.
+ */
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ // TODO
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/ValidateurFichierSearchFormController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/ValidateurFichierSearchFormController.java
new file mode 100644
index 0000000..432eeb9
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/search/ValidateurFichierSearchFormController.java
@@ -0,0 +1,87 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.common.enums.Operateur;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatim.fdxgenerator.controller.table.TypeFichierTable;
+import com.megatim.fdxgenerator.model.TypeFichier;
+import com.megatim.fdxgenerator.service.TypeFichierService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ValidateurFichierSearchFormController implements Initializable {
+
+ @Search(fieldName = "typeFichier", operateur = Operateur.EQUALS)
+ @FXML
+ private AbstractSelectionItem typeFichierAbstractSelectItem;
+
+ private TypeFichierService typeFichierService = TypeFichierService.getInstance();
+
+ //ELEMENTS DE CHARGEMENT
+ private final Set<TypeFichier> typeFichierSet = new HashSet<>();
+
+ @Override
+ public void initialize(URL location, ResourceBundle resources) {
+ typeFichierAbstractSelectItem.setTitle("Choix du type de fichier");
+ typeFichierAbstractSelectItem.setColumns(Arrays.asList(
+ TypeFichierTable.codeColumn(),
+ TypeFichierTable.libelleColumn()
+ ));
+ typeFichierAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+ new Pair<>("code", "Code"),
+ new Pair<>("libelle", "Libellé")
+ ));
+ initElements();
+ }
+
+ private void initElements() {
+ Task<Void> task = new Task() {
+ @Override
+ protected Object call() throws Exception {
+ typeFichierSet.clear();
+ typeFichierSet.addAll(typeFichierService.getAll());
+ //typeFichierSet.addAll(typeFichierService.findAllByCategorieFichierAndTypeExtension(CategorieFichier.STRUCTURE, TypeExtension.TEXTE));
+ return null;
+ }
+ };
+ task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+ task.setOnSucceeded(e -> {
+ LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+ typeFichierAbstractSelectItem.setElements(typeFichierSet);
+ });
+ task.setOnFailed(e -> {
+ LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+ AlertMessageUtil.showAlertException(task.getException(),
+ "Une exception s'est produite pendant le traitement", "Erreur");
+ });
+ Thread thread = new Thread(task);
+ thread.setDaemon(true);
+ thread.start();
+ }
+
+ public AbstractSelectionItem<TypeFichier> getTypeFichierAbstractSelectItem() {
+ return typeFichierAbstractSelectItem;
+ }
+
+ public void setTypeFichierAbstractSelectItem(AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectItem) {
+ this.typeFichierAbstractSelectItem = typeFichierAbstractSelectItem;
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/table/StructureLigneTable.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/table/StructureLigneTable.java
new file mode 100644
index 0000000..3136ac4
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/table/StructureLigneTable.java
@@ -0,0 +1,44 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller.table;
+
+import com.megatim.fdxgenerator.model.StructureLigne;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class StructureLigneTable {
+
+ public StructureLigneTable() {
+
+ }
+
+ public static TableColumn<StructureLigne, String> positionColumn() {
+ TableColumn<StructureLigne, String> column = new TableColumn("Position");
+ column.setCellValueFactory(new PropertyValueFactory("position"));
+ return column;
+ }
+
+ public static TableColumn<StructureLigne, String> codeColumn() {
+ TableColumn<StructureLigne, String> column = new TableColumn("Code");
+ column.setCellValueFactory(new PropertyValueFactory("code"));
+ return column;
+ }
+ public static TableColumn<StructureLigne, String> typeDonneeColumn() {
+ TableColumn<StructureLigne, String> column = new TableColumn("Type de données");
+ column.setCellValueFactory(new PropertyValueFactory("typeDonnee"));
+ return column;
+ }
+ public static TableColumn<StructureLigne, String> tailleColumn() {
+ TableColumn<StructureLigne, String> column = new TableColumn("Taille");
+ column.setCellValueFactory(new PropertyValueFactory("taille"));
+ return column;
+ }
+
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/table/TypeFichierTable.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/table/TypeFichierTable.java
new file mode 100644
index 0000000..2bf756b
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/table/TypeFichierTable.java
@@ -0,0 +1,39 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller.table;
+
+import com.megatim.fdxgenerator.model.TypeFichier;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierTable {
+
+ private TypeFichierTable() {
+
+ }
+
+ public static TableColumn<TypeFichier, String> codeColumn() {
+ TableColumn<TypeFichier, String> column = new TableColumn("Code");
+ column.setCellValueFactory(new PropertyValueFactory("code"));
+ return column;
+ }
+
+ public static TableColumn<TypeFichier, String> libelleColumn() {
+ TableColumn<TypeFichier, String> column = new TableColumn("Libellé");
+ column.setCellValueFactory(new PropertyValueFactory("libelle"));
+ return column;
+ }
+
+ public static TableColumn<TypeFichier, String> participantColumn() {
+ TableColumn<TypeFichier, String> column = new TableColumn("Participant");
+ column.setCellValueFactory(new PropertyValueFactory("codeParticipant"));
+ return column;
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/table/ValidateurFichierTable.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/table/ValidateurFichierTable.java
new file mode 100644
index 0000000..4224497
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/controller/table/ValidateurFichierTable.java
@@ -0,0 +1,32 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.controller.table;
+
+import com.megatim.fdxgenerator.model.ValidateurFichier;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ValidateurFichierTable {
+
+ public ValidateurFichierTable() {
+
+ }
+
+ public static TableColumn<ValidateurFichier, String> typeFichierColumn() {
+ TableColumn<ValidateurFichier, String> column = new TableColumn("TypeFichier");
+ column.setCellValueFactory(new PropertyValueFactory("typeFichier"));
+ return column;
+ }
+
+ public static TableColumn<ValidateurFichier, String> nombrePositionColumn() {
+ TableColumn<ValidateurFichier, String> column = new TableColumn("Nombre Position");
+ column.setCellValueFactory(new PropertyValueFactory("nombrePosition"));
+ return column;
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/enums/DataType.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/enums/DataType.java
new file mode 100644
index 0000000..feaf8f0
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/enums/DataType.java
@@ -0,0 +1,38 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxgenerator.enums;
+
+import java.util.stream.Stream;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public enum DataType {
+
+ CSV("CSV"), TXT("Texte(TXT)"), XLS("XLS"), XLSX("XLSX");
+
+ private final String dataType;
+
+ private DataType(String dataType) {
+ this.dataType = dataType;
+ }
+
+ public static DataType of(String dataType) {
+ return Stream.of(DataType.values())
+ .filter(p -> p.getDataType().equals(dataType))
+ .findFirst()
+ .orElseThrow(IllegalArgumentException::new);
+ }
+
+ public String getDataType() {
+ return dataType;
+ }
+
+ @Override
+ public String toString() {
+ return dataType;
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/enums/TypeDonnee.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/enums/TypeDonnee.java
new file mode 100644
index 0000000..925a657
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/enums/TypeDonnee.java
@@ -0,0 +1,46 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxgenerator.enums;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public enum TypeDonnee {
+ ALPHANUMERIQUE("ALPHANUMERIQUE"),
+ NUMERIQUE("NUMERIQUE"),
+ DECIMAL("DECIMAL"),
+ DATE("DATE");
+
+ private final String value;
+
+ private TypeDonnee(String value) {
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public static TypeDonnee fromValeur(String value) {
+ switch (value) {
+ case "ALPHANUMERIQUE":
+ return TypeDonnee.ALPHANUMERIQUE;
+ case "DATE":
+ return TypeDonnee.DATE;
+ case "NUMERIQUE":
+ return TypeDonnee.NUMERIQUE;
+ case "DECIMAL" :
+ return TypeDonnee.DECIMAL;
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/exceptions/ConfigException.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/exceptions/ConfigException.java
new file mode 100644
index 0000000..14f7800
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/exceptions/ConfigException.java
@@ -0,0 +1,24 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.exceptions;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ConfigException extends RuntimeException {
+ public ConfigException(String message) {
+ super(message);
+ }
+
+ public ConfigException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public ConfigException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/ConfigEditFormController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/ConfigEditFormController.java
new file mode 100644
index 0000000..14784bf
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/ConfigEditFormController.java
@@ -0,0 +1,51 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/javafx/FXMLController.java to edit this template
+ */
+package com.megatim.fdxgenerator.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import java.io.File;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.Button;
+import javafx.scene.control.TextField;
+import javafx.scene.input.MouseEvent;
+import javafx.stage.DirectoryChooser;
+import javafx.stage.Stage;
+
+/**
+ * FXML Controller class
+ *
+ * @author mela
+ */
+public class ConfigEditFormController implements Initializable {
+
+ @Champ(mappedBy = "outputDir")
+ @FXML
+ private TextField outputDir;
+
+ @FXML
+ private Button outButton;
+
+ /**
+ * Initializes the controller class.
+ */
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ outputDir.setEditable(Boolean.FALSE);
+ }
+
+
+ @FXML
+ void outButtonOnClicked(MouseEvent evt){
+ DirectoryChooser directoryChooser = new DirectoryChooser();
+ Stage stage = (Stage)outButton.getScene().getWindow();
+
+ File selectedDirectory = directoryChooser.showDialog(stage);
+ outputDir.setText(selectedDirectory.getAbsolutePath());
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/FichierValidationEditFormController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/FichierValidationEditFormController.java
new file mode 100644
index 0000000..5427c18
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/FichierValidationEditFormController.java
@@ -0,0 +1,216 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatim.fdxgenerator.controller.table.TypeFichierTable;
+import com.megatim.fdxgenerator.enums.DataType;
+import com.megatim.fdxgenerator.model.TypeFichier;
+import com.megatim.fdxgenerator.service.TypeFichierService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.beans.value.ObservableValue;
+import javafx.collections.FXCollections;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.PasswordField;
+import javafx.scene.control.TextField;
+import javafx.scene.control.TitledPane;
+import javafx.scene.image.ImageView;
+import javafx.scene.input.MouseEvent;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class FichierValidationEditFormController implements Initializable {
+
+ @FXML
+ @Champ(mappedBy = "typeFichier", type = TypeFichier.class, update = false)
+ private AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectItem;
+
+ @FXML
+ private TextField showKeyToEncrypt;
+
+ @FXML
+ @Champ(mappedBy = "formatDate")
+ private ComboBox<String> formatDate;
+
+// @FXML
+// @Champ(mappedBy = "extension")
+// private ComboBox<DataType> extensionFichier;
+
+ @FXML
+ @Champ(mappedBy = "maxValueTierce", type = Integer.class)
+ private TextField MaxValueTierceTextField;
+
+ @FXML
+ @Champ(mappedBy = "protege", type = Boolean.class)
+ private CheckBox isProtegeCheckBox;
+
+ @FXML
+ @Champ(mappedBy = "validateFileName", type = Boolean.class)
+ private CheckBox validateFileNameCheckBox;
+
+ @FXML
+ private TitledPane fileNameTitledPane;
+
+ @FXML
+ private ImageView imageView;
+
+ @FXML
+ @Champ(mappedBy = "keyToEncrypt")
+ private PasswordField keyToEncryptField;
+
+ @FXML
+ @Champ(mappedBy = "keyConfirmation")
+ private PasswordField keyConfirmationField;
+
+ private final TypeFichierService typeFichierService = TypeFichierService.getInstance();
+
+ //ELEMENTS DE CHARGEMENT
+ private final Set<TypeFichier> typeFichierSet = new HashSet<>();
+
+ private boolean passwordVisible;
+
+ @Override
+ public void initialize(URL location, ResourceBundle resources) {
+ keyToEncryptField.setDisable(true);
+ keyConfirmationField.setDisable(true);
+ showKeyToEncrypt.setDisable(true);
+ fileNameTitledPane.setDisable(true);
+
+ keyToDecryptWithEye();
+
+ formatDate.setPromptText("Selectionnez un format");
+ formatDate.setItems(FXCollections.observableArrayList(
+ "yyyyMMddHHmmss", "yyyyMMdd",
+ "yyyyddMMHHmmss", "yyyyddMM",
+ "MMyyyyddHHmmss", "MMyyyydd",
+ "MMddyyyHHmmss", "MMddyyy"
+ ));
+// extensionFichier.setPromptText("Selectionnez un format");
+// extensionFichier.setItems(FXCollections.observableArrayList(
+// DataType.values()
+// ));
+ typeFichierAbstractSelectItem.setTitle("Choix du type de fichier");
+ typeFichierAbstractSelectItem.setColumns(Arrays.asList(
+ TypeFichierTable.codeColumn(),
+ TypeFichierTable.libelleColumn()
+ ));
+ typeFichierAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+ new Pair<>("code", "Code"),
+ new Pair<>("libelle", "Libellé")
+ ));
+
+ MaxValueTierceTextField.textProperty().addListener((ObservableValue<? extends String> observable, String oldValue, String newValue) -> {
+ if (!newValue.matches("\\d{1,9}")) {
+ MaxValueTierceTextField.setText(newValue.replaceAll("[^\\d]", ""));
+ }
+ });
+
+ isProtegeCheckBox.selectedProperty().addListener(l -> {
+ if (isProtegeCheckBox.isSelected()) {
+ keyToEncryptField.setDisable(false);
+ keyConfirmationField.setDisable(false);
+ showKeyToEncrypt.setDisable(false);
+ }
+
+ if (!isProtegeCheckBox.isSelected()) {
+ keyToEncryptField.setDisable(true);
+ keyConfirmationField.setDisable(true);
+ showKeyToEncrypt.setDisable(true);
+ }
+ });
+
+ validateFileNameCheckBox.selectedProperty().addListener(l -> {
+
+ if (validateFileNameCheckBox.isSelected()) {
+ fileNameTitledPane.setDisable(false);
+ }
+
+ if (!validateFileNameCheckBox.isSelected()) {
+ fileNameTitledPane.setDisable(true);
+ }
+ });
+
+ initElements();
+ }
+
+ private void initElements() {
+ Task<Void> task = new Task() {
+ @Override
+ protected Object call() throws Exception {
+ typeFichierSet.clear();
+ typeFichierSet.addAll(typeFichierService.getAllTypeFichWithValidateur());
+ return null;
+ }
+ };
+ task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+ task.setOnSucceeded(e -> {
+ LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+ typeFichierAbstractSelectItem.setElements(typeFichierSet);
+ });
+ task.setOnFailed(e -> {
+ LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+ AlertMessageUtil.showAlertException(task.getException(),
+ "Une exception s'est produite pendant le traitement", "Erreur");
+ });
+ Thread thread = new Thread(task);
+ thread.setDaemon(true);
+ thread.start();
+ }
+
+ public AbstractSelectionItem<TypeFichier> getTypeFichierAbstractSelectItem() {
+ return typeFichierAbstractSelectItem;
+ }
+
+ public void setTypeFichierAbstractSelectItem(AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectItem) {
+ this.typeFichierAbstractSelectItem = typeFichierAbstractSelectItem;
+ }
+
+ public CheckBox getIsProtegeCheckBox() {
+ return isProtegeCheckBox;
+ }
+
+ public PasswordField getKeyToEncryptField() {
+ return keyToEncryptField;
+ }
+
+ public PasswordField getKeyConfirmationField() {
+ return keyConfirmationField;
+ }
+
+ @FXML
+ void eyeOnMousePressed(MouseEvent event) {
+ if (passwordVisible) {
+ showKeyToEncrypt.setVisible(false);
+ keyToEncryptField.setVisible(true);
+ passwordVisible = false;
+ } else {
+ keyToEncryptField.setVisible(false);
+ showKeyToEncrypt.setVisible(true);
+ passwordVisible = true;
+ }
+ }
+
+ private void keyToDecryptWithEye() {
+ passwordVisible = false;
+ keyToEncryptField.textProperty().bindBidirectional(showKeyToEncrypt.textProperty());
+ showKeyToEncrypt.setVisible(false);
+ keyToEncryptField.setVisible(true);
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/ImportTypeFichierEditFormController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/ImportTypeFichierEditFormController.java
new file mode 100644
index 0000000..5bf80aa
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/ImportTypeFichierEditFormController.java
@@ -0,0 +1,74 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatim.fdxgenerator.pojo.Delimiteur;
+import java.io.File;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.collections.FXCollections;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.Button;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.TextField;
+import javafx.scene.input.MouseEvent;
+import javafx.stage.FileChooser;
+import javafx.stage.Window;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ImportTypeFichierEditFormController implements Initializable {
+
+// @FXML
+// @Champ(mappedBy = "formatFichier")
+// private ComboBox formatFichier;
+
+ @FXML
+ @Champ(mappedBy = "delimiteurLigne")
+ private ComboBox<Delimiteur> delimiteurLigne;
+
+ @FXML
+ @Champ(mappedBy = "delimiteurColonne")
+ private ComboBox<Delimiteur> delimiteurColonne;
+
+ @FXML
+ @Champ(mappedBy = "filePath")
+ private TextField fileToImportTextField;
+
+ @FXML
+ private Button importButton;
+
+
+ @Override
+ public void initialize(URL location, ResourceBundle resources) {
+ delimiteurColonne.setPromptText("Sélectionnez un élément dans la liste");
+ delimiteurColonne.setItems(FXCollections.observableArrayList(
+ new Delimiteur(";", "Point-virgule ( ; )"),
+ new Delimiteur("|", "Barre verticale ( | )"),
+ new Delimiteur("\\t", "Tabulation ( \\t )")
+ ));
+
+ delimiteurLigne.setPromptText("Sélectionnez un élément dans la liste");
+ delimiteurLigne.setItems(FXCollections.observableArrayList(
+ new Delimiteur("\\n", "Retour Charriot ( \\n )")
+ ));
+
+ fileToImportTextField.setEditable(Boolean.FALSE);
+ fileToImportTextField.setPromptText("Selectionnez un fichier csv");
+ }
+
+ @FXML
+ void importButtonOnClicked(MouseEvent evt){
+ FileChooser fileChooser = new FileChooser();
+ Window window = importButton.getScene().getWindow();
+
+ File selectedFile = fileChooser.showOpenDialog(window);
+ fileToImportTextField.setText(selectedFile.getAbsolutePath());
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/StructureLigneEditFormController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/StructureLigneEditFormController.java
new file mode 100644
index 0000000..6e7a764
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/StructureLigneEditFormController.java
@@ -0,0 +1,162 @@
+package com.megatim.fdxgenerator.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatim.fdxgenerator.App;
+import static com.megatim.fdxgenerator.App.FORMATS_DATE;
+import com.megatim.fdxgenerator.enums.TypeDonnee;
+import com.megatim.fdxgenerator.pojo.Delimiteur;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.TextField;
+
+public class StructureLigneEditFormController implements Initializable {
+
+ private ObservableList<Integer> list = FXCollections.observableArrayList();
+
+// @FXML
+// private VBox formFieldContainer;
+//
+// @FXML
+// private HBox dateFormatContainer;
+
+ @FXML
+ @Champ(mappedBy = "position", type = Integer.class)
+ private ComboBox<Integer> positionComboBox;
+
+ @FXML
+ @Champ(mappedBy = "typeDonnee", type = TypeDonnee.class)
+ private ComboBox<TypeDonnee> typeDonneeComboBox;
+
+ @FXML
+ @Champ(mappedBy = "code", type = String.class)
+ private TextField codeTextField;
+
+ @FXML
+ @Champ(mappedBy = "designation", type = String.class)
+ private TextField designationTextField;
+
+ @FXML
+ @Champ(mappedBy = "taille", type = Integer.class)
+ private TextField tailleTextField;
+
+ @FXML
+ @Champ(mappedBy = "taillePartieDecimal", type = Integer.class)
+ private TextField taillePartieDecimalTextField;
+
+ @FXML
+ @Champ(mappedBy = "formatDate", type = String.class)
+ private ComboBox<String> formatDateComboBox;
+
+ @FXML
+ @Champ(mappedBy = "delimiteurDate",type = Delimiteur.class)
+ private ComboBox<Delimiteur> delimiteurDateComboBox;
+
+ @FXML
+ @Champ(mappedBy = "delimiteurDecimal",type = Delimiteur.class)
+ private ComboBox<Delimiteur> delimiteurDecimalComboBox;
+
+ private Integer initialUpdateSelection;
+
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+
+ formatDateComboBox.setDisable(true);
+ formatDateComboBox.setPromptText("Sélectionnez un élément dans la liste");
+ formatDateComboBox.setItems(FXCollections.observableArrayList(
+ FORMATS_DATE
+ ));
+
+ delimiteurDateComboBox.setDisable(true);
+ delimiteurDateComboBox.setPromptText("Sélectionnez un élément dans la liste");
+ delimiteurDateComboBox.setItems(FXCollections.observableArrayList(
+ App.SEPARATEURS_DATE.values()
+ ));
+
+ taillePartieDecimalTextField.setDisable(true);
+
+ delimiteurDecimalComboBox.setDisable(true);
+ delimiteurDecimalComboBox.setPromptText("Sélectionnez un élément dans la liste");
+ delimiteurDecimalComboBox.setItems(FXCollections.observableArrayList(
+ App.SEPARATEURS_DECIMAUX.values()
+ ));
+
+ positionComboBox.setItems(list);
+ typeDonneeComboBox.setItems(FXCollections.observableArrayList(TypeDonnee.values()));
+ typeDonneeComboBox.getSelectionModel().selectFirst();
+
+ tailleTextField.textProperty().addListener((observable, oldValue, newValue) -> {
+ if (!newValue.matches("\\d*")) {
+ tailleTextField.setText(oldValue);
+ }
+ });
+
+ typeDonneeComboBox.setOnAction(event -> {
+
+ if (typeDonneeComboBox.getValue().equals(TypeDonnee.DATE)) {
+ formatDateComboBox.setDisable(false);
+ delimiteurDateComboBox.setDisable(false);
+ } else {
+ formatDateComboBox.setDisable(true);
+ delimiteurDateComboBox.setDisable(true);
+ }
+
+ if (typeDonneeComboBox.getValue().equals(TypeDonnee.DECIMAL)) {
+ taillePartieDecimalTextField.setDisable(false);
+ delimiteurDecimalComboBox.setDisable(false);
+ } else {
+ taillePartieDecimalTextField.setDisable(true);
+ delimiteurDecimalComboBox.setDisable(true);
+ }
+
+ });
+
+ }
+
+ public void populatePositionComboBox(int positionNumber) {
+ list.clear();
+ for (int i = 1; i <= positionNumber; i++) {
+ list.add(i);
+ }
+
+ }
+
+ public ComboBox getFormatDateComboBox() {
+ return formatDateComboBox;
+ }
+
+ public ComboBox<TypeDonnee> getTypeDonneeComboBox() {
+ return typeDonneeComboBox;
+ }
+
+ public ObservableList<Integer> getList() {
+ return list;
+ }
+
+ public ComboBox<Integer> getPositionComboBox() {
+ return positionComboBox;
+ }
+
+ public void setInitialUpateSelection() {
+
+ initialUpdateSelection = positionComboBox.getSelectionModel().getSelectedItem();
+
+ }
+
+ public Integer getInitialUpdateSelection() {
+ return initialUpdateSelection;
+ }
+
+ public ComboBox<Delimiteur> getDelimiteurDateComboBox() {
+ return delimiteurDateComboBox;
+ }
+
+ public ComboBox<Delimiteur> getDelimiteurDecimalComboBox() {
+ return delimiteurDecimalComboBox;
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/TypeFichierEditFormController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/TypeFichierEditFormController.java
new file mode 100644
index 0000000..147b30e
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/TypeFichierEditFormController.java
@@ -0,0 +1,35 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TextField;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierEditFormController implements Initializable{
+ @Champ(mappedBy = "code", type = String.class)
+ @FXML
+ private TextField codeTextField;
+
+ @Champ(mappedBy = "libelle")
+ @FXML
+ private TextField libelleTextField;
+
+ @Champ(mappedBy = "codeParticipant")
+ @FXML
+ private TextField codeParticipantTextField;
+
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ // TODO
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/ValidateurFichierEditFormController.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/ValidateurFichierEditFormController.java
new file mode 100644
index 0000000..89045b3
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/forms/ValidateurFichierEditFormController.java
@@ -0,0 +1,230 @@
+package com.megatim.fdxgenerator.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatimfx.common.customcontrols.AbstractNestedEntityTable;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatim.fdxgenerator.App;
+import com.megatim.fdxgenerator.controller.table.StructureLigneTable;
+import com.megatim.fdxgenerator.controller.table.TypeFichierTable;
+import com.megatim.fdxgenerator.enums.DataType;
+import com.megatim.fdxgenerator.model.StructureLigne;
+import com.megatim.fdxgenerator.model.TypeFichier;
+import com.megatim.fdxgenerator.model.ValidateurFichier;
+import com.megatim.fdxgenerator.pojo.Delimiteur;
+import com.megatim.fdxgenerator.service.StructureLigneService;
+import com.megatim.fdxgenerator.service.TypeFichierService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.collections.FXCollections;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.TextField;
+import javafx.util.Pair;
+
+public class ValidateurFichierEditFormController implements Initializable {
+
+ @FXML
+ @Champ(mappedBy = "typeFichier", type = TypeFichier.class, update = false)
+ private AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectItem;
+
+ @FXML
+ @Champ(mappedBy = "nombrePosition", type = Integer.class, update = false)
+ private TextField nombrePositionTextField;
+
+ @FXML
+ private CheckBox saisieStructureLigneChecBox;
+
+ @FXML
+ @Champ(mappedBy = "delimiteurLigne", type = Delimiteur.class)
+ private ComboBox<Delimiteur> delimiteurLigne;
+
+ @FXML
+ @Champ(mappedBy = "delimiteurColonne", type = Delimiteur.class)
+ private ComboBox<Delimiteur> delimiteurColonne;
+
+ @FXML
+ @Champ(mappedBy = "dataType", type = DataType.class)
+ private ComboBox<DataType> dataTypeComboBox;
+
+ @FXML
+ @Champ(mappedBy = "headerPresent", type = Boolean.class)
+ private CheckBox headerPresentCheckbox;
+
+ @FXML
+ @Champ(mappedBy = "structureLignes", type = StructureLigne.class, update = true)
+ private AbstractNestedEntityTable<StructureLigne, ValidateurFichier> structureLigneAbstractTable;
+
+ private TypeFichierService typeFichierService = TypeFichierService.getInstance();
+
+ private StructureLigneService structureLigneService = StructureLigneService.getInstance();
+
+ //ELEMENTS DE CHARGEMENT
+ private final Set<TypeFichier> typeFichierSet = new HashSet<>();
+
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+
+ saisieStructureLigneChecBox.setDisable(true);
+
+ nombrePositionTextField.setText("");
+
+ typeFichierAbstractSelectItem.setTitle("Choix du type de fichier");
+ typeFichierAbstractSelectItem.setColumns(Arrays.asList(
+ TypeFichierTable.codeColumn(),
+ TypeFichierTable.libelleColumn()
+ ));
+ typeFichierAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+ new Pair<>("code", "Code"),
+ new Pair<>("libelle", "Libellé")
+ ));
+
+ structureLigneAbstractTable.setClazz(StructureLigne.class);
+ structureLigneAbstractTable.setColums(Arrays.asList(
+ StructureLigneTable.positionColumn(),
+ StructureLigneTable.codeColumn(),
+ StructureLigneTable.typeDonneeColumn(),
+ StructureLigneTable.tailleColumn()
+ ));
+ structureLigneAbstractTable.setGenericCrudService(structureLigneService);
+
+ saisieStructureLigneChecBox.setOnAction(event -> {
+ typeFichierAbstractSelectItem.setDisable(saisieStructureLigneChecBox.isSelected());
+ nombrePositionTextField.setDisable(saisieStructureLigneChecBox.isSelected());
+ });
+
+ saisieStructureLigneChecBox.selectedProperty().addListener((observable, oldValue, newValue) -> {
+ if (newValue) {
+ typeFichierAbstractSelectItem.setDisable(true);
+ nombrePositionTextField.setDisable(true);
+ saisieStructureLigneChecBox.setDisable(true);
+ }
+ });
+
+ typeFichierAbstractSelectItem.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+ if (newValue != null) {
+ enableCheckBox();
+ }
+ });
+
+ nombrePositionTextField.textProperty().addListener((observable, oldValue, newValue) -> {
+ if (newValue.matches("\\d*")) {
+ if (!newValue.isEmpty()) {
+ enableCheckBox();
+ } else {
+ saisieStructureLigneChecBox.setDisable(true);
+ }
+ } else {
+ nombrePositionTextField.setText(oldValue);
+ }
+ });
+
+ delimiteurColonne.setPromptText("Sélectionnez un élément dans la liste");
+ delimiteurColonne.setItems(FXCollections.observableArrayList(
+ App.DELIMITEURS_COLONNE.values()
+ ));
+ delimiteurColonne.setDisable(true);
+
+ delimiteurLigne.setPromptText("Sélectionnez un élément dans la liste");
+ delimiteurLigne.setItems(FXCollections.observableArrayList(
+ App.DELIMITEURS_LIGNE.values()
+ ));
+ delimiteurLigne.setDisable(true);
+
+ dataTypeComboBox.setPromptText("Sélectionnez un élément dans la liste");
+
+ dataTypeComboBox.setItems(FXCollections.observableArrayList(
+ DataType.values()
+ ));
+
+ initElements();
+ }
+
+ private void initElements() {
+ Task<Void> task = new Task() {
+ @Override
+ protected Object call() throws Exception {
+ typeFichierSet.clear();
+ typeFichierSet.addAll(typeFichierService.getAllTypeFichWithoutValidateur());
+ return null;
+ }
+ };
+ task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+ task.setOnSucceeded(e -> {
+ LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+ typeFichierAbstractSelectItem.setElements(typeFichierSet);
+ });
+ task.setOnFailed(e -> {
+ LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+ AlertMessageUtil.showAlertException(task.getException(),
+ "Une exception s'est produite pendant le traitement", "Erreur");
+ });
+ Thread thread = new Thread(task);
+ thread.setDaemon(true);
+ thread.start();
+ }
+
+ public void enableCheckBox() {
+ try {
+ int position = Integer.valueOf(nombrePositionTextField.getText());
+ saisieStructureLigneChecBox.setDisable(typeFichierAbstractSelectItem == null || position <= 0);
+ } catch (NumberFormatException e) {
+ saisieStructureLigneChecBox.setDisable(true);
+ }
+ }
+
+ public AbstractSelectionItem<TypeFichier> getTypeFichierAbstractSelectItem() {
+ return typeFichierAbstractSelectItem;
+ }
+
+ public void setTypeFichierAbstractSelectItem(AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectItem) {
+ this.typeFichierAbstractSelectItem = typeFichierAbstractSelectItem;
+ }
+
+ public TextField getNombrePositionTextField() {
+ return nombrePositionTextField;
+ }
+
+ public void setNombrePositionTextField(TextField nombrePositionTextField) {
+ this.nombrePositionTextField = nombrePositionTextField;
+ }
+
+ public CheckBox getSaisieStructureLigneChecBox() {
+ return saisieStructureLigneChecBox;
+ }
+
+ public void setSaisieStructureLigneChecBox(CheckBox saisieStructureLigneChecBox) {
+ this.saisieStructureLigneChecBox = saisieStructureLigneChecBox;
+ }
+
+ public AbstractNestedEntityTable<StructureLigne, ValidateurFichier> getStructureLigneAbstractTable() {
+ return structureLigneAbstractTable;
+ }
+
+ public void setStructureLigneAbstractTable(AbstractNestedEntityTable<StructureLigne, ValidateurFichier> structureLigneAbstractTable) {
+ this.structureLigneAbstractTable = structureLigneAbstractTable;
+ }
+
+ public ComboBox<Delimiteur> getDelimiteurLigne() {
+ return delimiteurLigne;
+ }
+
+ public ComboBox<Delimiteur> getDelimiteurColonne() {
+ return delimiteurColonne;
+ }
+
+ public ComboBox<DataType> getDataTypeComboBox() {
+ return dataTypeComboBox;
+ }
+
+ public CheckBox getHeaderPresentCheckbox() {
+ return headerPresentCheckbox;
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/Configuration.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/Configuration.java
new file mode 100644
index 0000000..f1e0c80
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/Configuration.java
@@ -0,0 +1,28 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.model;
+
+import java.io.Serializable;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.validation.constraints.NotEmpty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Getter @Setter
+@Entity
+public class Configuration implements Serializable {
+ @Id
+ @GeneratedValue
+ private Long id;
+
+ @NotEmpty(message= "Le chemin vers le repertoire est obligatoire")
+ private String outputDir;
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/FichierValidation.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/FichierValidation.java
new file mode 100644
index 0000000..3e00fa1
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/FichierValidation.java
@@ -0,0 +1,49 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.model;
+
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import com.megatim.fdxgenerator.annotations.ConfigConstraint;
+import com.megatim.fdxgenerator.annotations.FileNameConstraint;
+import com.megatim.fdxgenerator.annotations.KeyToDecryptConstraint;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Getter
+@Setter
+@ConfigConstraint(groups = {ViewFormValidationGroup.class})
+@KeyToDecryptConstraint(groups = {ViewFormValidationGroup.class})
+@FileNameConstraint(groups = {ViewFormValidationGroup.class})
+public class FichierValidation {
+
+ @NotNull(message = "Le type de fichier est obligatoire", groups = {ViewFormValidationGroup.class})
+ private TypeFichier typeFichier;
+
+ private String keyToEncrypt;
+
+ private String keyConfirmation;
+
+ private boolean protege;
+
+ private boolean validateFileName;
+
+ @Pattern(regexp = "y{4}((M{2}){0,1})((d{2}){0,1})((H{2}){0,1})((m{2}){0,1})((s{2}){0,1})|"
+ + "y{4}((d{2}){0,1})((M{2}){0,1})((H{2}){0,1})((m{2}){0,1})((s{2}){0,1})|"
+ + "M{2}((y{4}){0,1})((d{2}){0,1})((H{2}){0,1})((m{2}){0,1})((s{2}){0,1})|"
+ + "M{2}((d{2}){0,1})((y{4}){0,1})((H{2}){0,1})((m{2}){0,1})((s{2}){0,1})",
+ groups = {ViewFormValidationGroup.class},
+ message = "Format Date yyyy : Année, MM : Mois, dd : Jour , HH : Heure, mm: Minute, ss : Seconde")
+ private String formatDate;
+
+ private String extension = "txt";
+
+ private int maxValueTierce;
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/ImportFile.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/ImportFile.java
new file mode 100644
index 0000000..30face9
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/ImportFile.java
@@ -0,0 +1,37 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.model;
+
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import com.megatim.fdxgenerator.pojo.Delimiteur;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Getter @Setter
+public class ImportFile<T> {
+
+ @NotEmpty(message = "Le fichier à importer est obligatoire" , groups = {ViewFormValidationGroup.class})
+ @Pattern(regexp=".+\\.csv", flags = Pattern.Flag.CASE_INSENSITIVE, message="Bien vouloir sélectionner un fichier csv" , groups = {ViewFormValidationGroup.class})
+ private String filePath;
+
+// @NotEmpty(message = "Le format du fichier est obligatoire" , groups = {ViewFormValidationGroup.class})
+// private String formatFichier;
+
+ @NotNull(message = "Le délimiteur de ligne est obligatoire" , groups = {ViewFormValidationGroup.class})
+ private Delimiteur delimiteurLigne;
+
+ @NotNull(message = "Le délimiteur de colonne est obligatoire" , groups = {ViewFormValidationGroup.class})
+ private Delimiteur delimiteurColonne;
+
+ //type des objets qui vont contenir les données extraites
+ Class<T> type;
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/StructureLigne.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/StructureLigne.java
new file mode 100644
index 0000000..9439f90
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/StructureLigne.java
@@ -0,0 +1,94 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.model;
+
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import com.megatim.fdxgenerator.enums.TypeDonnee;
+import com.megatim.fdxgenerator.pojo.Delimiteur;
+import java.io.Serializable;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.Transient;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.validator.constraints.Range;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Entity
+@Getter
+@Setter
+//@TailleFormatDateConstraint(groups = {ViewFormValidationGroup.class})
+public class StructureLigne implements Serializable {
+ @Id
+// @NotEmpty(message = "L'identifiant est obligatoire", groups = {ViewFormValidationGroup.class})
+ private String id;
+
+ @Range(min = 1, message = "La position doit être supérieure à 0", groups = {ViewFormValidationGroup.class})
+ private int position;
+
+ @NotEmpty(message = "Le code est obligatoire", groups = {ViewFormValidationGroup.class})
+ private String code;
+
+ private String designation;
+
+ @Range(min = 1, message = "La taille du champ doit être supérieure à 0", groups = {ViewFormValidationGroup.class})
+ private int taille;
+
+ private int taillePartieDecimal;
+
+ private String source;
+
+ private String formatDate;
+
+ private String separateurDate;
+
+ private String separateurDecimal;
+
+ @Transient
+ private Delimiteur delimiteurDate;
+
+ @Transient
+ private Delimiteur delimiteurDecimal;
+
+ @Enumerated(EnumType.STRING)
+ @NotNull(message = "Le type de données est obligatoire", groups = {ViewFormValidationGroup.class})
+ private TypeDonnee typeDonnee;
+
+ @NotNull(message = "Le validateur de fichier doit être indiqué")
+ @ManyToOne
+ private ValidateurFichier validateurFichier;
+
+ @Override
+ public String toString() {
+ return this.code + " - " + this.designation;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof StructureLigne)) {
+ return false;
+ }
+ final StructureLigne other = (StructureLigne) obj;
+ if (this.getId() != null && !this.getId().equals(other.getId())) {
+ return false;
+ }
+ return true;
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/TypeFichier.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/TypeFichier.java
new file mode 100644
index 0000000..2f5cf5f
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/TypeFichier.java
@@ -0,0 +1,54 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.model;
+
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import java.io.Serializable;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.validation.constraints.NotEmpty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Entity
+@Getter
+@Setter
+public class TypeFichier implements Serializable {
+
+ @Id
+ @NotEmpty(message = "Le code type de fichier est obligatoire" , groups = {ViewFormValidationGroup.class})
+ private String code;
+
+ private String libelle;
+
+ private String codeParticipant;
+
+ @Override
+ public String toString() {
+ return this.getCode() + " - " + this.getLibelle();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof TypeFichier)) {
+ return false;
+ }
+ final TypeFichier other = (TypeFichier) obj;
+ if (this.getCode() != null && !this.getCode().equals(other.getCode())) {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/ValidateurFichier.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/ValidateurFichier.java
new file mode 100644
index 0000000..203b88b
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/ValidateurFichier.java
@@ -0,0 +1,88 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.model;
+
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import com.megatim.fdxgenerator.enums.DataType;
+import com.megatim.fdxgenerator.pojo.Delimiteur;
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Transient;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.validator.constraints.Range;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Entity
+@Getter
+@Setter
+public class ValidateurFichier implements Serializable {
+
+ @Id
+ @NotNull(message = "Aucun identifiant spécifié", groups = {ViewFormValidationGroup.class})
+ private String id;
+
+ @Range(min = 1, message = "Le nombre de position doit être supérieure à 0", groups = {ViewFormValidationGroup.class})
+ private int nombrePosition;
+
+ //private String typeFichierCode;
+ @NotNull(message = "Le type de fichier est obligatoire", groups = {ViewFormValidationGroup.class})
+ @ManyToOne
+ private TypeFichier typeFichier;
+
+ @Transient
+ private Delimiteur delimiteurLigne;
+
+ @Transient
+ private Delimiteur delimiteurColonne;
+
+ private String codeDelimiteurLigne;
+
+ private String codeDelimiteurColonne;
+
+ private boolean headerPresent;
+
+ @NotNull(message = "Le format du fichier de données est obligatoire", groups = {ViewFormValidationGroup.class})
+ @Enumerated(EnumType.STRING)
+ private DataType dataType;
+
+ @OneToMany(mappedBy = "validateurFichier", cascade = CascadeType.ALL)
+ private Set<StructureLigne> structureLignes = new HashSet<>();
+
+ @Override
+ public String toString() {
+ return this.typeFichier.toString();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof ValidateurFichier)) {
+ return false;
+ }
+ final ValidateurFichier other = (ValidateurFichier) obj;
+ if (this.getTypeFichier() != null && !this.getTypeFichier().equals(other.getTypeFichier())) {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/AbstractDAO.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/AbstractDAO.java
new file mode 100644
index 0000000..0f9ec2b
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/AbstractDAO.java
@@ -0,0 +1,281 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.model.dao;
+
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatim.fdxgenerator.model.ValidateurFichier;
+import com.megatim.fdxgenerator.utilities.PaginationElts;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.persistence.TypedQuery;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.Session;
+
+/**
+ *
+ * @author mela
+ */
+@Getter
+@Setter
+public class AbstractDAO<T> {
+
+ private Class<T> clazz;
+ private PaginationElts pagination;
+
+ public AbstractDAO(Class<T> clas) {
+ clazz = clas;
+ pagination = new PaginationElts();
+ }
+
+ public <T> T add(T element) {
+ try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+ session.beginTransaction();
+ session.persist(element);
+ session.getTransaction().commit();
+ session.refresh(element);
+ }
+ return element;
+ }
+
+ public <T> T edit(T element) {
+ try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+ session.beginTransaction();
+ session.update(element);
+ session.getTransaction().commit();
+ session.refresh(element);
+ }
+ return element;
+ }
+
+ public void delete(T element) {
+ try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+ session.beginTransaction();
+ session.delete(element);
+ session.getTransaction().commit();
+ }
+ }
+
+ public void deleteAll(String tableName) {
+ List<T> liste = getAll(tableName);
+ try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+ session.beginTransaction();
+ liste.forEach(t -> session.delete(t));
+ session.getTransaction().commit();
+ }
+ }
+
+ public <Optional> T find(T element) {
+ try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+ return session.find(clazz, element);
+ }
+ }
+
+ public List<T> getAll(String tableName) {
+ try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+ return session.createQuery("from " + tableName).getResultList();
+ }
+ }
+
+ public List<T> getAllByPage(int indexDebut, int numberOfElt, List<SearchCriteria> searchCriterias) {
+ try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+ CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
+ CriteriaQuery<T> criteriaQuery = criteriaBuilder.createQuery(clazz);
+ Root<T> root = criteriaQuery.from(clazz);
+ List<Predicate> predicates = createPedicates(searchCriterias, criteriaBuilder, root);
+
+ CriteriaQuery<T> cq = criteriaQuery.select(root);
+
+ cq = cq.select(root).where(predicates.toArray(new Predicate[predicates.size()]));
+
+ TypedQuery<T> typedQuery = session.createQuery(cq);
+
+ typedQuery.setFirstResult(indexDebut);
+ typedQuery.setMaxResults(numberOfElt);
+ List<T> liste = typedQuery.getResultList();
+
+ return liste;
+ }
+ }
+
+ private long count(List<SearchCriteria> searchCriterias) {
+ try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+ CriteriaBuilder qb = session.getCriteriaBuilder();
+ CriteriaQuery<Long> cq = qb.createQuery(Long.class);
+ Root<T> root = cq.from(clazz);
+ List<Predicate> predicates = createPedicates(searchCriterias, qb, root);
+
+ cq.select(qb.count(root));
+ cq.where(predicates.toArray(new Predicate[predicates.size()]));
+
+ return (long) session.createQuery(cq).getSingleResult();
+ }
+ }
+
+ public PaginationElts initPaginationElts(int pageNumber, List<SearchCriteria> searchCriterias) {
+ int indexDebut = pageNumber * pagination.getNbEltsPerPage();
+
+ if (clazz.equals(ValidateurFichier.class)) {
+ System.out.println("in custom getAllByPage");
+ pagination.setListe(ValidateurFichierDAO.getAllByPage(indexDebut, pagination.getNbEltsPerPage(), searchCriterias));
+ } else {
+ pagination.setListe(getAllByPage(indexDebut, pagination.getNbEltsPerPage(), searchCriterias));
+ }
+
+ pagination.setTotalElts(count(searchCriterias));
+ pagination.setPage(pageNumber);
+
+ if (pageNumber == 0) {
+ pagination.setNumberOfElts(pagination.getListe().size());
+ } else {
+ pagination.setNumberOfElts(pageNumber * pagination.getNbEltsPerPage() + pagination.getListe().size());
+ }
+
+ pagination.setNumberOfPage((pagination.getTotalElts() % pagination.getNbEltsPerPage() == 0) ? (pagination.getTotalElts() / pagination.getNbEltsPerPage())
+ : (pagination.getTotalElts() / pagination.getNbEltsPerPage()) + 1);
+
+ return pagination;
+ }
+
+ /**
+ * Méthode qui retounre la liste des champs de la classe clazz
+ *
+ * @return
+ */
+ private Map<String, Field> getClassFields() {
+ Field[] fields = clazz.getDeclaredFields();
+ Map<String, Field> mapOfFields = new HashMap<>();
+ for (Field field : fields) {
+ mapOfFields.put(field.getName(), field);
+ }
+
+ return mapOfFields;
+ }
+
+ /**
+ * Méthode qui vérifie que le champ "fieldValue" de l'objet searchCriteria
+ * est du même type que le champ "fieldName" dans la classe clazz
+ *
+ * @param field : contient les informations sur le champ correspondant
+ * @param value : valeur dont on veut vérifier le type
+ * @return : retourne vrai sivalue est du même type que celui renseigné dans
+ * field
+ */
+ private boolean isFieldAndValueOfSameType(Field field, Object value) {
+ boolean result = true;
+ try {
+ field.getType().cast(value);
+ } catch (ClassCastException ex) {
+ result = false;
+ }
+ return result;
+ //String className = field.getType().getName();
+ }
+
+ /**
+ * Méthode qui filtre la liste des critères afin de ne garder que ceux qui
+ * respectent le type du champ correspondant dans la classe et ceux dont le
+ * fieldName correspond à un champ de la classe clazz
+ *
+ * @param searchCriterias
+ * @return
+ */
+ private List<SearchCriteria> verifySearchCriteria(List<SearchCriteria> searchCriterias) {
+ Map<String, Field> mapOfFields = getClassFields();
+
+ //Retire les critères dont le fieldName ne correspond à aucun champ de la classe clazz
+ for (SearchCriteria criteria : searchCriterias) {
+ if (!mapOfFields.containsKey(criteria.getFieldName())) {
+ searchCriterias.remove(criteria);
+// continue;
+ }
+
+// Retire les critères dont le type de fieldValue ne correspond pas au type du champ dans la classe clazz
+// if(!isFieldAndValueOfSameType(mapOfFields.get(criteria.getFieldName()),criteria.getFieldValue())){
+// searchCriterias.remove(criteria);
+// }
+ }
+ return searchCriterias;
+ }
+
+ /**
+ * Méthode qui les prédicats à partir des critères de recherche
+ *
+ * @param searchCriterias
+ * @param cb
+ * @return
+ */
+ public List<Predicate> createPedicates(List<SearchCriteria> searchCriterias, CriteriaBuilder cb, Root<T> root) {
+ List<Predicate> predicates = new ArrayList<>();
+
+ searchCriterias = verifySearchCriteria(searchCriterias);
+ searchCriterias.parallelStream().forEach(s -> {
+ Predicate predicate = null;
+ switch (s.getOperateur()) {
+ case EQUALS:
+ predicate = cb.equal(root.get(s.getFieldName()), s.getFieldValue());
+ predicates.add(predicate);
+ break;
+
+ case NOT_EQUALS:
+ predicate = cb.notEqual(root.get(s.getFieldName()), s.getFieldValue());
+ predicates.add(predicate);
+ break;
+
+ case LIKE:
+ if (s.getFieldValue() instanceof String) {
+ predicate = cb.like(root.get(s.getFieldName()), "%" + s.getFieldValue().toString() + "%");
+ predicates.add(predicate);
+ }
+ break;
+
+ case GREATER_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.gt(root.get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case GREATER_OR_EQUALS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.ge(root.get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case LESS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.lt(root.get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case _LESS_OR_EQUALS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.le(root.get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+ case IN:
+ if (s.getFieldValue() instanceof java.util.Collection) {
+ predicate = root.get(s.getFieldName()).in(s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+ default:
+
+ }
+ });
+
+ return predicates;
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/HibernateUtil.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/HibernateUtil.java
new file mode 100644
index 0000000..1969d1d
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/HibernateUtil.java
@@ -0,0 +1,48 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.model.dao;
+
+import org.hibernate.SessionFactory;
+import org.hibernate.boot.Metadata;
+import org.hibernate.boot.MetadataSources;
+import org.hibernate.boot.registry.StandardServiceRegistry;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
+
+/**
+ *
+ * @author mela
+ */
+public class HibernateUtil {
+
+ private static SessionFactory sessionFactory;
+
+ private HibernateUtil() {
+
+ }
+
+ public static synchronized SessionFactory getSessionFactory() {
+ try {
+ if (sessionFactory == null) {
+ StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder()
+ // .configure("hibernate.cfg.xml").build();
+ .configure("file:hibernate.cfg.xml").build();
+
+ Metadata metaData = new MetadataSources(standardRegistry)
+ .getMetadataBuilder()
+ .build();
+
+ sessionFactory = metaData.getSessionFactoryBuilder().build();
+ }
+ return sessionFactory;
+ } catch (Throwable ex) {
+ throw new ExceptionInInitializerError(ex);
+ }
+ }
+
+ public static void shutdown() {
+ if(sessionFactory != null)
+ sessionFactory.close();
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/StructureLigneDAO.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/StructureLigneDAO.java
new file mode 100644
index 0000000..89b5190
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/StructureLigneDAO.java
@@ -0,0 +1,31 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.model.dao;
+
+import com.megatim.fdxgenerator.model.StructureLigne;
+import java.util.List;
+import org.hibernate.Session;
+import org.hibernate.query.Query;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class StructureLigneDAO {
+
+ private StructureLigneDAO() {
+
+ }
+
+ public static List<StructureLigne> findByValidateurFichierId(String validateurFichierId) {
+ try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+ Query query = session.createQuery("select s from StructureLigne s where s.validateurFichier.id =: validateurFichierId");
+ query.setParameter("validateurFichierId", validateurFichierId);
+
+ return query.getResultList();
+ }
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/TypeFichierDAO.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/TypeFichierDAO.java
new file mode 100644
index 0000000..262edd5
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/TypeFichierDAO.java
@@ -0,0 +1,45 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.model.dao;
+
+import com.megatim.fdxgenerator.model.TypeFichier;
+import java.util.List;
+import java.util.Optional;
+import org.hibernate.Session;
+import org.hibernate.query.Query;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierDAO {
+ private TypeFichierDAO() {
+
+ }
+
+ public static List<TypeFichier> getAllTypeFichWithValidateur() {
+ try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+ Query query = session.createQuery("SELECT t FROM TypeFichier t, ValidateurFichier v WHERE t.code = v.typeFichier.code");
+ return query.getResultList();
+ }
+ }
+
+ public static List<TypeFichier> getAllTypeFichWithoutValidateur() {
+ try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+ Query query = session.createQuery("SELECT t FROM TypeFichier t"
+ + " WHERE NOT EXISTS"
+ + " (SELECT v FROM ValidateurFichier v WHERE v.typeFichier.code = t.code)");
+ return query.getResultList();
+ }
+ }
+
+ public static Optional<TypeFichier> findByCode(TypeFichier t) {
+ try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+ Query query = session.createQuery("SELECT t FROM TypeFichier t WHERE t.code = :code");
+ query.setParameter("code", t.getCode());
+ return query.uniqueResultOptional();
+ }
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/ValidateurFichierDAO.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/ValidateurFichierDAO.java
new file mode 100644
index 0000000..d931871
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/model/dao/ValidateurFichierDAO.java
@@ -0,0 +1,84 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.model.dao;
+
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatim.fdxgenerator.model.TypeFichier;
+import com.megatim.fdxgenerator.model.ValidateurFichier;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import javax.persistence.TypedQuery;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.JoinType;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import org.hibernate.Session;
+import org.hibernate.query.Query;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ValidateurFichierDAO {
+ private ValidateurFichierDAO() {
+
+ }
+
+ public static Optional<ValidateurFichier> findByTypeFichier(TypeFichier typeFichier) {
+ Optional<ValidateurFichier> opt;
+ try (Session session = HibernateUtil.getSessionFactory().openSession()) {
+ Query query = session.createQuery("select v from ValidateurFichier v where v.typeFichier =: typeFichier");
+ query.setParameter("typeFichier", typeFichier);
+ opt = query.uniqueResultOptional();
+ }
+
+ return opt;
+ }
+
+ public static Optional<ValidateurFichier> findByTypeFichier(String typeFichierCode) {
+ Optional<ValidateurFichier> opt ;
+ try (Session session = HibernateUtil.getSessionFactory().openSession()) {
+ Query query = session.createQuery("select v from ValidateurFichier v where v.typeFichier.code =: typeFichierCode");
+ query.setParameter("typeFichierCode", typeFichierCode);
+ opt = query.uniqueResultOptional();
+ }
+
+ return opt;
+ }
+
+ public static Optional<ValidateurFichier> findById(String id) {
+ Optional<ValidateurFichier> opt;
+ try (Session session = HibernateUtil.getSessionFactory().openSession()) {
+ Query query = session.createQuery("select v from ValidateurFichier v where v.id =: id");
+ query.setParameter("id", id);
+ opt = query.uniqueResultOptional();
+ }
+
+ return opt;
+ }
+
+ public static List<ValidateurFichier> getAllByPage(int indexDebut, int numberOfElt,List<SearchCriteria> searchCriterias) {
+ AbstractDAO<ValidateurFichier> dao = new AbstractDAO<>(ValidateurFichier.class);
+
+ List<ValidateurFichier> liste = new ArrayList<>();
+ try (Session session = HibernateUtil.getSessionFactory().openSession()) {
+ CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
+ CriteriaQuery<ValidateurFichier> criteriaQuery = criteriaBuilder.createQuery(ValidateurFichier.class);
+ Root<ValidateurFichier> root = criteriaQuery.from(ValidateurFichier.class);
+ List<Predicate> predicates = dao.createPedicates(searchCriterias,criteriaBuilder,root);
+ root.fetch("structureLignes",JoinType.LEFT);
+ CriteriaQuery<ValidateurFichier> cq = criteriaQuery.select(root).distinct(true);
+ cq = cq.select(root).where(predicates.toArray(new Predicate[predicates.size()]));
+ TypedQuery<ValidateurFichier> typedQuery = session.createQuery(cq);
+ typedQuery.setFirstResult(indexDebut);
+ typedQuery.setMaxResults(numberOfElt);
+ liste = typedQuery.getResultList();
+ }
+ return liste;
+ }
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/pojo/Delimiteur.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/pojo/Delimiteur.java
new file mode 100644
index 0000000..f17c031
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/pojo/Delimiteur.java
@@ -0,0 +1,26 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.pojo;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Getter
+@Setter
+@AllArgsConstructor
+public class Delimiteur {
+ private String code;
+ private String libelle;
+
+ @Override
+ public String toString() {
+ return libelle;
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/ConfigurationService.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/ConfigurationService.java
new file mode 100644
index 0000000..78ab51e
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/ConfigurationService.java
@@ -0,0 +1,63 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.service;
+
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxgenerator.model.Configuration;
+import com.megatim.fdxgenerator.model.dao.AbstractDAO;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author mela
+ */
+public class ConfigurationService implements GenericCrudService<Configuration> {
+ private static ConfigurationService configurationService;
+ private static AbstractDAO<Configuration> dao;
+
+ private ConfigurationService() {
+
+ }
+
+ public static synchronized ConfigurationService getInstance() {
+ if (configurationService == null) {
+ configurationService = new ConfigurationService();
+ dao = new AbstractDAO<>(Configuration.class);
+ }
+ return configurationService;
+ }
+
+ @Override
+ public Configuration add(Configuration t) throws Exception {
+ return dao.add(t);
+ }
+
+ @Override
+ public Configuration edit(Configuration t) throws Exception {
+ return dao.edit(t);
+
+ }
+
+ @Override
+ public List<Configuration> getAll() throws Exception {
+ return dao.getAll("Configuration");
+ }
+
+ @Override
+ public void delete(Configuration t) throws Exception {
+ dao.delete(t);
+ }
+
+ public Configuration getCurrentConfig(){
+ try {
+ return getAll().stream().findFirst().orElse(null);
+ } catch (Exception ex) {
+ Logger.getLogger(ConfigurationService.class.getName()).log(Level.SEVERE, null, ex);
+ return null;
+ }
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/ImportFileService.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/ImportFileService.java
new file mode 100644
index 0000000..a4bab48
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/ImportFileService.java
@@ -0,0 +1,90 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.service;
+
+import com.megatim.fdxgenerator.utilities.DataToImport;
+import com.megatim.fdxgenerator.utilities.ImportData;
+import com.megatim.fdxgenerator.model.StructureLigne;
+import com.megatim.fdxgenerator.model.TypeFichier;
+import com.megatim.fdxgenerator.model.ValidateurFichier;
+import com.megatim.fdxgenerator.model.ImportFile;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxgenerator.model.dao.AbstractDAO;
+import com.megatim.fdxgenerator.model.dao.TypeFichierDAO;
+import com.megatim.fdxgenerator.utilities.PaginationElts;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * structLigne : id, code,format_date, position, taille, type_donnee,
+ * validateur_fichier_id ValidateurFichier : id, nombre_position,
+ * type_fichier_code
+ *
+ * @author STEPHANIE
+ */
+public class ImportFileService implements GenericCrudService<ImportFile> {
+
+ private static ImportFileService importFileService;
+ private PaginationElts<TypeFichier> pagination;
+
+ private ImportFileService() {
+
+ }
+
+ public static synchronized ImportFileService getInstance() {
+ if (importFileService == null) {
+ importFileService = new ImportFileService();
+ }
+ return importFileService;
+ }
+
+ @Override
+ public ImportFile add(ImportFile t) throws Exception {
+ importDataFromFile(t);
+ return t;
+ }
+
+ @Override
+ public ImportFile edit(ImportFile t) throws Exception {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public List<ImportFile> getAll() throws Exception {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void delete(ImportFile t) throws Exception {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ private void importDataFromFile(ImportFile im) {
+ List<String> fields = new ArrayList<>();
+ StructureLigne s = new StructureLigne();
+ ValidateurFichier v = new ValidateurFichier();
+
+ if (im != null && im.getType() != null) {
+ if (im.getType().equals(TypeFichier.class)) {
+ fields.add("code");
+ fields.add("libelle");
+ fields.add("codeParticipant");
+ }
+ }
+ DataToImport datIm = new DataToImport(new File(im.getFilePath()), im.getDelimiteurLigne().getCode(), im.getDelimiteurColonne().getCode(), im.getType(), fields);
+ List<Object> datas = ImportData.importDataFromCsvFile(datIm);
+ if (im.getType().equals(TypeFichier.class)) {
+ AbstractDAO<TypeFichier> dao = new AbstractDAO<>(TypeFichier.class);
+ datas.forEach(d -> {
+ TypeFichier t = (TypeFichier) d;
+ Optional<TypeFichier> opt = TypeFichierDAO.findByCode(t);
+ if(!opt.isPresent())
+ dao.add(t);
+ });
+ }
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/StructureLigneService.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/StructureLigneService.java
new file mode 100644
index 0000000..3496197
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/StructureLigneService.java
@@ -0,0 +1,93 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.service;
+
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxgenerator.model.StructureLigne;
+import com.megatim.fdxgenerator.model.dao.AbstractDAO;
+import com.megatim.fdxgenerator.utilities.PaginationElts;
+import java.util.List;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class StructureLigneService implements GenericCrudService<StructureLigne> {
+
+ private static StructureLigneService structureLigneService;
+ private static AbstractDAO<StructureLigne> dao;
+ private PaginationElts<StructureLigne> pagination;
+
+ private StructureLigneService() {
+
+ }
+
+ public static synchronized StructureLigneService getInstance() {
+ if (structureLigneService == null) {
+ structureLigneService = new StructureLigneService();
+ dao = new AbstractDAO<>(StructureLigne.class);
+ }
+ return structureLigneService;
+ }
+
+ @Override
+ public StructureLigne add(StructureLigne t) throws Exception {
+ return dao.add(t);
+ }
+
+ @Override
+ public StructureLigne edit(StructureLigne t) throws Exception {
+ return dao.edit(t);
+
+ }
+
+ @Override
+ public List<StructureLigne> getAll() throws Exception {
+ return dao.getAll("StructureLigne");
+ }
+
+ @Override
+ public void delete(StructureLigne t) throws Exception {
+ dao.delete(t);
+ }
+
+ @Override
+ public boolean isLast() {
+ return pagination.isLast();
+ }
+
+ @Override
+ public boolean isFirst() {
+ return pagination.isFirst();
+ }
+
+ @Override
+ public int getCurrentPage() {
+ return pagination.getPage();
+ }
+
+ @Override
+ public int getNumberOfElements() {
+ return pagination.getNumberOfElts();
+ }
+
+ @Override
+ public int getNumberPerPage() {
+ return pagination.getNbEltsPerPage();
+ }
+
+ @Override
+ public Long getTotalElements() {
+ return pagination.getTotalElts();
+ }
+
+ @Override
+ public List<StructureLigne> getAllByPage(int pageNumber, List<SearchCriteria> searchCriterias) {
+ pagination = dao.initPaginationElts(pageNumber, searchCriterias);
+
+ return pagination.getListe();
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/TypeFichierService.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/TypeFichierService.java
new file mode 100644
index 0000000..28411ca
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/TypeFichierService.java
@@ -0,0 +1,103 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.service;
+
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxgenerator.model.TypeFichier;
+import com.megatim.fdxgenerator.model.dao.AbstractDAO;
+import com.megatim.fdxgenerator.model.dao.TypeFichierDAO;
+import com.megatim.fdxgenerator.utilities.PaginationElts;
+import java.util.List;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierService implements GenericCrudService<TypeFichier> {
+
+ private static TypeFichierService typeFichierService;
+ private static AbstractDAO<TypeFichier> dao;
+ private PaginationElts<TypeFichier> pagination;
+
+ private TypeFichierService() {
+
+ }
+
+ public static synchronized TypeFichierService getInstance() {
+ if (typeFichierService == null) {
+ typeFichierService = new TypeFichierService();
+ dao = new AbstractDAO<>(TypeFichier.class);
+ }
+ return typeFichierService;
+ }
+
+ @Override
+ public TypeFichier add(TypeFichier t) throws Exception {
+ return dao.add(t);
+ }
+
+ @Override
+ public TypeFichier edit(TypeFichier t) throws Exception {
+ return dao.edit(t);
+
+ }
+
+ @Override
+ public List<TypeFichier> getAll() throws Exception {
+ return dao.getAll("TypeFichier");
+ }
+
+ public List<TypeFichier> getAllTypeFichWithValidateur() throws Exception {
+ return TypeFichierDAO.getAllTypeFichWithValidateur();
+ }
+
+ public List<TypeFichier> getAllTypeFichWithoutValidateur() throws Exception {
+ return TypeFichierDAO.getAllTypeFichWithoutValidateur();
+ }
+
+ @Override
+ public void delete(TypeFichier t) throws Exception {
+ dao.delete(t);
+ }
+
+ @Override
+ public boolean isLast() {
+ return pagination.isLast();
+ }
+
+ @Override
+ public boolean isFirst() {
+ return pagination.isFirst();
+ }
+
+ @Override
+ public int getCurrentPage() {
+ return pagination.getPage();
+ }
+
+ @Override
+ public int getNumberOfElements() {
+ return pagination.getNumberOfElts();
+ }
+
+ @Override
+ public int getNumberPerPage() {
+ return pagination.getNbEltsPerPage();
+ }
+
+ @Override
+ public Long getTotalElements() {
+ return pagination.getTotalElts();
+ }
+
+ @Override
+ public List<TypeFichier> getAllByPage(int pageNumber, List<SearchCriteria> searchCriterias) {
+ System.out.println("searchCriterias.size "+searchCriterias.size());
+ pagination = dao.initPaginationElts(pageNumber, searchCriterias);
+
+ return pagination.getListe();
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/ValidateurFichierService.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/ValidateurFichierService.java
new file mode 100644
index 0000000..8d4b93f
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/service/ValidateurFichierService.java
@@ -0,0 +1,100 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.service;
+
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxgenerator.model.ValidateurFichier;
+import com.megatim.fdxgenerator.model.dao.AbstractDAO;
+import com.megatim.fdxgenerator.model.dao.ValidateurFichierDAO;
+import com.megatim.fdxgenerator.utilities.PaginationElts;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ValidateurFichierService implements GenericCrudService<ValidateurFichier> {
+
+ private static ValidateurFichierService validateurFichierService;
+ private static AbstractDAO<ValidateurFichier> dao;
+ private PaginationElts<ValidateurFichier> pagination;
+
+ private ValidateurFichierService() {
+ }
+
+ public static synchronized ValidateurFichierService getInstance() {
+ if (validateurFichierService == null) {
+ validateurFichierService = new ValidateurFichierService();
+ dao = new AbstractDAO<>(ValidateurFichier.class);
+ }
+ return validateurFichierService;
+ }
+
+ @Override
+ public ValidateurFichier add(ValidateurFichier t) throws Exception {
+ return dao.add(t);
+ }
+
+ public Optional<ValidateurFichier> find(ValidateurFichier t) {
+ return ValidateurFichierDAO.findById(t.getId());
+ }
+
+ @Override
+ public ValidateurFichier edit(ValidateurFichier t) throws Exception {
+ return dao.edit(t);
+
+ }
+
+ @Override
+ public List<ValidateurFichier> getAll() throws Exception {
+ return dao.getAll("ValidateurFichier");
+ }
+
+ @Override
+ public void delete(ValidateurFichier t) throws Exception {
+ dao.delete(t);
+ }
+
+ @Override
+ public boolean isLast() {
+ return pagination.isLast();
+ }
+
+ @Override
+ public boolean isFirst() {
+ return pagination.isFirst();
+ }
+
+ @Override
+ public int getCurrentPage() {
+ return pagination.getPage();
+ }
+
+ @Override
+ public int getNumberOfElements() {
+ return pagination.getNumberOfElts();
+ }
+
+ @Override
+ public int getNumberPerPage() {
+ return pagination.getNbEltsPerPage();
+ }
+
+ @Override
+ public Long getTotalElements() {
+ return pagination.getTotalElts();
+ }
+
+ @Override
+ public List<ValidateurFichier> getAllByPage(int pageNumber, List<SearchCriteria> searchCriterias) {
+ pagination = dao.initPaginationElts(pageNumber, searchCriterias);
+
+ return pagination.getListe();
+ }
+
+
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/AttributeFormatException.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/AttributeFormatException.java
new file mode 100644
index 0000000..ca2fe92
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/AttributeFormatException.java
@@ -0,0 +1,23 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.utilities;
+
+/**
+ *
+ * @author mela
+ */
+public class AttributeFormatException extends RuntimeException {
+ public AttributeFormatException(String message) {
+ super(message);
+ }
+
+ public AttributeFormatException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public AttributeFormatException(Throwable cause) {
+ super(cause);
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/DataToImport.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/DataToImport.java
new file mode 100644
index 0000000..3b9b62d
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/DataToImport.java
@@ -0,0 +1,36 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.utilities;
+
+import java.io.File;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author mela
+ * @param <T>
+ */
+@Getter @Setter
+@NoArgsConstructor @AllArgsConstructor
+public class DataToImport <T> {
+ //Fichier duquel seront extraits les données
+ File file;
+
+ //délimiteur de ligne
+ String rowDelimiter;
+
+ //délimiteur de colonne
+ String columnDelimiter;
+
+ //type des objets qui vont contenir les données extraites
+ Class<T> type;
+
+ //liste des champs dans leur ordre d'apparition dans le fichier "file"
+ List<String> fields;
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/ImportData.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/ImportData.java
new file mode 100644
index 0000000..1e47594
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/ImportData.java
@@ -0,0 +1,178 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.utilities;
+
+import java.beans.IntrospectionException;
+import java.beans.PropertyDescriptor;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.LineNumberReader;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author mela
+ */
+public class ImportData {
+
+ /**
+ * Méthode qui parse le fichier csv et en extrait les données
+ *
+ * @param datIm
+ * @return
+ */
+ public static <T> List<T> importDataFromCsvFile(DataToImport<T> datIm) throws AttributeFormatException {
+ FileReader reader = null;
+ List<String[]> datas = new ArrayList<>();
+ List<T> listeToReturn = new ArrayList<>();
+
+ if (datIm != null) {
+ try {
+ reader = new FileReader(datIm.getFile() + "");
+ LineNumberReader lineReader = new LineNumberReader(reader);
+ String line = "";
+
+ while ((line = lineReader.readLine()) != null) {
+ String[] row = line.split(datIm.getRowDelimiter());
+ for (String r : row) {
+ String[] values = new String[datIm.getFields().size()];
+ String[] columns = r.split(datIm.getColumnDelimiter());
+
+ int ss = 0;
+ while (ss < datIm.getFields().size() && ss < columns.length) {
+ values[ss] = columns[ss];
+ ss++;
+ }
+ datas.add(values);
+ }
+
+ }
+ } catch (FileNotFoundException ex) {
+ Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ } catch (IOException ex) {
+ Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ } finally {
+ try {
+ reader.close();
+ } catch (IOException | NullPointerException ex) {
+ Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+
+ if (!datas.isEmpty()) {
+
+ //tous les champs du type paramétré
+ Field[] fields = datIm.getType().getDeclaredFields();
+
+ // mettre les champs du type paramétré dans une map afin de faciliter leur accès
+ Map<String, Field> fieldsToMap = fieldsToMap(fields);
+ datas.forEach(d -> {
+ try {
+ T obj = datIm.getType().newInstance();
+ Map<String, String> map = tabToMap(datIm.getFields(), d);
+ for (Field field : fields) {
+ String fieldName = field.getName();
+ if (map.containsKey(fieldName) && fieldsToMap.containsKey(fieldName)) {
+ try {
+ Object converted = convertToPrimitive(field, map.get(fieldName));
+ Method method = new PropertyDescriptor(fieldName, datIm.getType()).getWriteMethod();
+ method.invoke(obj, converted);
+ } catch (IntrospectionException | IllegalAccessException | InvocationTargetException ex) {
+ Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ } catch (IllegalArgumentException | ClassCastException ex) {
+ throw new AttributeFormatException("Erreur de type sur le champ " + fieldName);
+ }
+ }
+ }
+ listeToReturn.add(obj);
+ } catch (InstantiationException | IllegalAccessException ex) {
+ Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+
+ });
+ }
+ }
+ return listeToReturn;
+ }
+
+ /**
+ * Méthode qui met les libellés des colonnes et leurs valeurs
+ * correspondantes dans une map
+ *
+ * @param titles : ensemble des noms de colonnes
+ * @param values : ensemble des données
+ * @return : rentourne une map (clé,valeur) = (nom_de_la_colonne,
+ * valeur_colonne)
+ */
+ private static Map<String, String> tabToMap(List<String> titles, String[] values) {
+ Map<String, String> map = new HashMap<>();
+ for (int i = 0; i < titles.size(); i++) {
+ map.put(titles.get(i), values[i]);
+ }
+
+ return map;
+ }
+
+ /**
+ * Méthode qui met un tableau de Field dans une
+ * map<nom_du_champ,objet représentant_le_champ>
+ * afin de faciliter leur accès
+ *
+ * @param fields
+ * @return
+ */
+ private static Map<String, Field> fieldsToMap(Field[] fields) {
+ Map<String, Field> map = new HashMap<>();
+ for (Field f : fields) {
+ map.put(f.getName(), f);
+ }
+
+ return map;
+ }
+
+ /**
+ * Méthode qui fait la conversion de la donnée extraite vers un type
+ * primitif
+ *
+ * @param field : objet contenant les informations sur le type auquel
+ * appartient le champ de la donnée extraite
+ * @param value : donnée à convertir
+ * @return : retourne un String si le type du champ ne figure pas dans la
+ * liste ci-dessus
+ */
+ private static Object convertToPrimitive(Field field, String value) {
+ Object obj = value;
+
+ if (field.getType().isAssignableFrom(Integer.class)
+ || field.getType().isAssignableFrom(int.class)) {
+ obj = Integer.parseInt(value);
+ } else if (field.getType().isAssignableFrom(Double.class)
+ || field.getType().isAssignableFrom(double.class)) {
+ obj = Double.parseDouble(value);
+ } else if (field.getType().isAssignableFrom(java.math.BigDecimal.class)) {
+ obj = new java.math.BigDecimal(value);
+ } else if (field.getType().isAssignableFrom(Float.class)
+ || field.getType().isAssignableFrom(float.class)) {
+ obj = Float.valueOf(value);
+ } else if (field.getType().isAssignableFrom(Long.class)
+ || field.getType().isAssignableFrom(long.class)) {
+ obj = Long.parseLong(value);
+ } else if (field.getType().isAssignableFrom(Boolean.class)
+ || field.getType().isAssignableFrom(boolean.class)) {
+ Boolean.parseBoolean(value);
+ }
+
+ return obj;
+ }
+}
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/PaginationElts.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/PaginationElts.java
new file mode 100644
index 0000000..19064c7
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/PaginationElts.java
@@ -0,0 +1,49 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxgenerator.utilities;
+
+import java.util.List;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author mela
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+public class PaginationElts<T> {
+
+ //Numéro de page courante
+ private int page = 0;
+
+ //Nombre de pages
+ private long numberOfPage = 0;
+
+ //Nombre d'éléments à afficher par page
+ private int nbEltsPerPage = 10;
+
+ //Nombre d'éléments total à afficher
+ private long totalElts = 0;
+
+ //Nombre délémnts sur une pages quelconque : peut être inférieure ou égale à nbEltsPerPage
+ private int numberOfElts = 0;
+ private List<T> liste;
+
+ public PaginationElts(int nbEltsPerPage){
+ this.nbEltsPerPage = nbEltsPerPage;
+ }
+
+ public boolean isLast() {
+ return page == (numberOfPage == 0 ? numberOfPage : numberOfPage - 1);
+ }
+
+ public boolean isFirst() {
+ return page == 0;
+ }
+
+}
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/abstracts/AbstractEditDialog.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/abstracts/AbstractEditDialog.fxml
new file mode 100644
index 0000000..b087a8e
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/abstracts/AbstractEditDialog.fxml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane style="-fx-border-color: rgb(184, 184, 184); -fx-border-width: 1;" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatimfx.common.abstracts.AbstractEditDialogController">
+ <top>
+ <HBox onMouseDragged="#mouseDraggedTitleBar" onMousePressed="#mousePressedTitleBar" styleClass="title-bar" BorderPane.alignment="CENTER">
+ <children>
+ <HBox prefWidth="200.0" HBox.hgrow="ALWAYS" />
+ <HBox alignment="CENTER_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+ <children>
+ <Button mnemonicParsing="false" onMouseClicked="#minimize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/min-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button mnemonicParsing="false" onMouseClicked="#maximize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/max-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button mnemonicParsing="false" onAction="#close" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/close-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ </children></HBox>
+ </children>
+ <padding>
+ <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
+ </padding>
+ </HBox>
+ </top>
+ <center>
+ <VBox BorderPane.alignment="CENTER">
+ <children>
+ <HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity" prefHeight="50.0" prefWidth="200.0" styleClass="banner">
+ <children>
+ <Text fx:id="title" fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="TITRE DE LA FENETRE ICI">
+ <font>
+ <Font name="Arial Bold" size="16.0" />
+ </font>
+ </Text>
+ </children>
+ </HBox>
+ <BorderPane fx:id="formPanel">
+ <center>
+ <VBox BorderPane.alignment="CENTER">
+ <padding>
+ <Insets bottom="20.0" left="47.0" right="47.0" top="20.0" />
+ </padding>
+ <children>
+ <VBox fx:id="formContainer" style="-fx-background-color: #F8F8F8; -fx-border-color: #E9E9E9; -fx-border-width: 1;" />
+ </children>
+ </VBox>
+ </center></BorderPane>
+ <HBox fx:id="bottomContainer" alignment="TOP_RIGHT" prefHeight="50.0" spacing="5.0">
+ <children>
+ <Button fx:id="cancelButton" mnemonicParsing="false" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #9d9fa2; -fx-cursor: pointer; -fx-border-color: #9d9fa2; -fx-background-radius: 0;" text="Annuler" textFill="WHITE">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ </Button>
+ <Button fx:id="editButton" mnemonicParsing="false" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #31a19a; -fx-cursor: pointer; -fx-background-radius: 0;" text="Enregistrer" textFill="WHITE">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ </Button>
+ </children>
+ <padding>
+ <Insets left="47.0" right="47.0" />
+ </padding>
+ </HBox>
+ </children>
+ </VBox>
+ </center>
+ <stylesheets>
+ <URL value="@../../../../styles/title-bar.css" />
+ <URL value="@../../../../styles/main-style.css" />
+ </stylesheets>
+</BorderPane>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/abstracts/AbstractEditValidateDialog.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/abstracts/AbstractEditValidateDialog.fxml
new file mode 100644
index 0000000..236bae2
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/abstracts/AbstractEditValidateDialog.fxml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.ScrollPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane prefHeight="571.0" prefWidth="657.0" style="-fx-border-color: rgb(184, 184, 184); -fx-border-width: 1;" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatimfx.common.abstracts.AbstractSelfEditValidateDialogController">
+ <top>
+ <HBox onMouseDragged="#mouseDraggedTitleBar" onMousePressed="#mousePressedTitleBar" styleClass="title-bar" BorderPane.alignment="CENTER">
+ <children>
+ <HBox prefWidth="200.0" HBox.hgrow="ALWAYS" />
+ <HBox alignment="CENTER_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+ <children>
+ <Button mnemonicParsing="false" onAction="#min" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/min-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button mnemonicParsing="false" onAction="#max" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/max-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button mnemonicParsing="false" onAction="#close" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/close-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ </children></HBox>
+ </children>
+ <padding>
+ <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
+ </padding>
+ </HBox>
+ </top>
+ <center>
+ <VBox BorderPane.alignment="CENTER">
+ <children>
+ <HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity" prefHeight="50.0" prefWidth="200.0" styleClass="banner">
+ <children>
+ <Text fx:id="title" fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="TITRE DE LA FENETRE ICI">
+ <font>
+ <Font name="Arial Bold" size="16.0" />
+ </font>
+ </Text>
+ </children>
+ </HBox>
+ <BorderPane fx:id="formPanel" VBox.vgrow="ALWAYS">
+ <center>
+ <VBox prefHeight="200.0" prefWidth="100.0" BorderPane.alignment="CENTER">
+ <padding>
+ <Insets bottom="20.0" left="47.0" right="47.0" top="20.0" />
+ </padding>
+ <children>
+ <ScrollPane fitToHeight="true" fitToWidth="true" prefHeight="381.0" prefWidth="310.0" VBox.vgrow="ALWAYS">
+ <content>
+ <VBox fx:id="formContainer" style="-fx-background-color: #F8F8F8; -fx-border-color: #E9E9E9; -fx-border-width: 1;" />
+ </content>
+ </ScrollPane>
+ </children>
+ </VBox>
+ </center></BorderPane>
+ <HBox fx:id="bottomContainer" alignment="TOP_RIGHT" prefHeight="50.0" spacing="5.0">
+ <children>
+ <Button fx:id="cancelButton" mnemonicParsing="false" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #9d9fa2; -fx-cursor: pointer; -fx-border-color: #9d9fa2; -fx-background-radius: 0;" text="Annuler" textFill="WHITE">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ </Button>
+ <Button fx:id="editButton" mnemonicParsing="false" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #31a19a; -fx-cursor: pointer; -fx-background-radius: 0;" text="Enregistrerr" textFill="WHITE">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ </Button>
+ </children>
+ <padding>
+ <Insets left="47.0" right="47.0" />
+ </padding>
+ </HBox>
+ </children>
+ </VBox>
+ </center>
+ <stylesheets>
+ <URL value="@../../../../styles/main-style.css" />
+ <URL value="@../../../../styles/title-bar.css" />
+ </stylesheets>
+</BorderPane>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/abstracts/AbstractMainDialog.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/abstracts/AbstractMainDialog.fxml
new file mode 100644
index 0000000..c9c5732
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/abstracts/AbstractMainDialog.fxml
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TableView?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" onMouseDragged="#mouseDraggedTitleBar" onMousePressed="#mousePressedTitleBar" prefHeight="678.0" prefWidth="1120.0" style="-fx-border-color: rgb(184, 184, 184); -fx-border-width: 1;" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatimfx.common.abstracts.AbstractMainDialogController">
+ <center>
+ <VBox BorderPane.alignment="CENTER">
+ <children>
+ <HBox alignment="CENTER" prefHeight="65.0" prefWidth="1024.0" styleClass="banner">
+ <children>
+ <Text fx:id="title" fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="TITRE">
+ <font>
+ <Font name="Arial Bold" size="16.0" />
+ </font>
+ </Text>
+ </children>
+ </HBox>
+ <VBox spacing="5.0" style="-fx-background-color: #44507;" VBox.vgrow="ALWAYS">
+ <children>
+ <TitledPane collapsible="false" prefHeight="61.0" prefWidth="1223.0" text="Recherche">
+ <content>
+ <BorderPane fx:id="searchPane" prefHeight="43.0" prefWidth="1219.0" style="-fx-background-color: rgb(246, 247, 249);">
+ <right>
+ <HBox spacing="5.0" BorderPane.alignment="CENTER_LEFT">
+ <BorderPane.margin>
+ <Insets />
+ </BorderPane.margin>
+ <children>
+ <Button fx:id="btnSearch" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="search">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/Recherche.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button fx:id="btnReset" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="search">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/Reset.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <CheckBox fx:id="advancedCheckBox" alignment="CENTER" maxHeight="-Infinity" maxWidth="1.7976931348623157E308" mnemonicParsing="false" prefHeight="25.0" text="Options avancées" />
+ </children>
+ <padding>
+ <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+ </padding>
+ </HBox>
+ </right>
+ <center>
+ <VBox BorderPane.alignment="CENTER">
+ <children>
+ <VBox fx:id="normalSearchContainer" prefHeight="200.0" prefWidth="100.0">
+ <padding>
+ <Insets right="50.0" />
+ </padding>
+ </VBox>
+ <VBox fx:id="advancedSearchContainer" prefHeight="200.0" prefWidth="100.0">
+ <padding>
+ <Insets right="50.0" />
+ </padding>
+ </VBox>
+ </children>
+ </VBox>
+ </center>
+ </BorderPane>
+ </content>
+ </TitledPane>
+ <VBox prefHeight="200.0" prefWidth="100.0" spacing="3.0" style="-fx-background-color: rgb(246, 247, 249);" VBox.vgrow="ALWAYS">
+ <children>
+ <HBox fx:id="buttonContainer" alignment="CENTER_LEFT" spacing="2.0">
+ <children>
+ <HBox fx:id="buttonContainer" alignment="BOTTOM_LEFT" spacing="2.0">
+ <children>
+ <Button fx:id="btnAdd" mnemonicParsing="false" onAction="#onAddDialog" style="-fx-background-color: #31a19a; -fx-cursor: pointer; -fx-background-radius: 8 0 0 0; -fx-border-radius: 8 0 0 0;" textFill="#ebf0ee">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ <graphic>
+ <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/add.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button fx:id="btnEdit" mnemonicParsing="false" onAction="#onEditDialog" style="-fx-background-color: #9d9fa2; -fx-cursor: pointer; -fx-background-radius: 0;" textFill="#f2eded">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ <graphic>
+ <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/edit.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button fx:id="btnPrint" mnemonicParsing="false" onAction="#onEditDialog" style="-fx-background-color: #9d9fa2; -fx-cursor: pointer; -fx-background-radius: 0;" textFill="#f2eded">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ <graphic>
+ <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/print.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button fx:id="btnDelete" mnemonicParsing="false" onAction="#removeElement" style="-fx-background-color: #9d9fa2; -fx-cursor: pointer; -fx-background-radius: 0;" textFill="#f2eded">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ <graphic>
+ <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/trash.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_RIGHT" HBox.hgrow="ALWAYS">
+ <children>
+ <Button fx:id="btnImport" mnemonicParsing="false" onAction="#removeElement" style="-fx-background-color: #9d9fa2; -fx-cursor: pointer; -fx-background-radius: 0;" textFill="#f2eded">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ <graphic>
+ <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/trash.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ </children>
+ </HBox>
+ </children>
+ <opaqueInsets>
+ <Insets />
+ </opaqueInsets>
+ </HBox>
+ <VBox prefHeight="200.0" prefWidth="100.0" VBox.vgrow="ALWAYS">
+ <children>
+ <TableView fx:id="elementTable" VBox.vgrow="ALWAYS">
+ <columnResizePolicy>
+ <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
+ </columnResizePolicy>
+ </TableView>
+ <HBox alignment="CENTER_LEFT" spacing="30.0" style="-fx-background-color: rgb(206, 206, 206);">
+ <children>
+ <HBox alignment="CENTER" spacing="15.0">
+ <children>
+ <HBox alignment="CENTER">
+ <children>
+ <Button fx:id="btnNext" mnemonicParsing="false" style="-fx-background-color: transparent; -fx-padding: 1;">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/next.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Label text="suivant">
+ <font>
+ <Font size="14.0" />
+ </font>
+ </Label>
+ </children>
+ </HBox>
+ <HBox alignment="CENTER">
+ <children>
+ <Button fx:id="btnPrevious" mnemonicParsing="false" onAction="#previousPage" style="-fx-background-color: transparent; -fx-padding: 1;">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/previous.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Label text="precedent">
+ <font>
+ <Font size="14.0" />
+ </font>
+ </Label>
+ </children>
+ </HBox>
+ <Label fx:id="paginationNumberInfo" text="(0/0)">
+ <font>
+ <Font size="14.0" />
+ </font>
+ </Label>
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+ </padding>
+ </HBox>
+ </children>
+ </VBox>
+ </children>
+ </VBox>
+ <HBox alignment="CENTER_RIGHT">
+ <children>
+ <Button fx:id="btnClose" mnemonicParsing="false" prefHeight="27.0" prefWidth="90.0" style="-fx-background-color: rgb(202, 202, 202); -fx-cursor: pointer; -fx-border-color: #9d9fa2;" text="Quitter" textFill="#5d5d5d" />
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="30.0" left="30.0" right="30.0" top="30.0" />
+ </padding>
+ </VBox>
+ </children>
+ </VBox>
+ </center>
+ <top>
+ <HBox styleClass="title-bar" BorderPane.alignment="CENTER">
+ <padding>
+ <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
+ </padding>
+ <children>
+ <HBox prefWidth="200.0" HBox.hgrow="ALWAYS" />
+ <HBox alignment="CENTER_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+ <children>
+ <Button mnemonicParsing="false" onMouseClicked="#minimize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/min-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button mnemonicParsing="false" onMouseClicked="#maximize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/max-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button mnemonicParsing="false" onAction="#close" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/close-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ </children>
+ </HBox>
+ </children>
+ </HBox>
+ </top>
+ <stylesheets>
+ <URL value="@../../../../styles/main-style.css" />
+ <URL value="@../../../../styles/title-bar.css" />
+ </stylesheets>
+</BorderPane>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/main.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/main.fxml
new file mode 100644
index 0000000..a1ebffd
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/main.fxml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Menu?>
+<?import javafx.scene.control.MenuButton?>
+<?import javafx.scene.control.MenuItem?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="533.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.controller.MainController">
+ <children>
+ <VBox fx:id="mainContainer" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" style="-fx-background-color: transparent;" stylesheets="@../../../../styles/main_screen.css" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <HBox style="-fx-background-color: transparent;" stylesheets="@../../../../styles/main_screen.css">
+ <children>
+ <HBox alignment="CENTER">
+ <children>
+ <ImageView fitHeight="48.0" fitWidth="190.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/icone_ins.png" />
+ </image>
+ </ImageView>
+ </children>
+ <padding>
+ <Insets right="30.0" />
+ </padding>
+ </HBox>
+ <HBox fx:id="myMenuBar">
+ <children>
+ <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Fichier">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/Fichier.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ <items>
+ <MenuItem mnemonicParsing="false" onAction="#quit" text="Quitter" />
+ </items>
+ </MenuButton>
+ <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Paramètres">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/143-02.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ <items>
+ <Menu mnemonicParsing="false" text="TypeFichier">
+ <items>
+ <MenuItem fx:id="validateurMenuItem" mnemonicParsing="false" onAction="#openImportTypeFichierDialog" text="Importer" />
+ <MenuItem fx:id="typeFichMenuItem" mnemonicParsing="false" onAction="#openTypeFichierDialog" text="Consulter" />
+ </items>
+ </Menu>
+ <MenuItem fx:id="configMenuItem" mnemonicParsing="false" onAction="#openConfigDialog" text="Configuration des repertoires" />
+ <MenuItem fx:id="validateurTypeFichMenuItem" mnemonicParsing="false" onAction="#openValidateurFichierDialog" text="Consulter les validateurs des typeFichier" />
+ <MenuItem fx:id="fichierValidationMenuItem1" mnemonicParsing="false" onAction="#openFichierValidationDialog" text="Générer les fichiers de validation" />
+ </items>
+ </MenuButton>
+ <MenuButton contentDisplay="TOP" disable="true" mnemonicParsing="false" text="Aide">
+ <graphic>
+ <ImageView disable="true" fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/143-05.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ <items>
+ <MenuItem mnemonicParsing="false" text="A propos" />
+ </items>
+ </MenuButton>
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </HBox>
+ <HBox spacing="10.0" style="-fx-background-color: #fff; -fx-border-color: #dedfe0;">
+ <padding>
+ <Insets bottom="5.0" left="15.0" right="5.0" top="5.0" />
+ </padding>
+ <children>
+ <HBox prefWidth="200.0" spacing="10.0">
+ <children>
+ <Button fx:id="btnGenValidateur" mnemonicParsing="false" onAction="#openFichierValidationDialog" styleClass="receive">
+ <cursor>
+ <Cursor fx:constant="HAND" />
+ </cursor>
+ </Button>
+ </children>
+ </HBox>
+ <HBox alignment="TOP_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS" />
+ </children>
+ </HBox>
+ <VBox prefHeight="437.0" prefWidth="928.0" style="-fx-background-color: transparent;" styleClass="main_screen" stylesheets="@../../../../styles/main_screen.css" VBox.vgrow="ALWAYS" />
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/main2.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/main2.fxml
new file mode 100644
index 0000000..8c6e129
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/main2.fxml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Menu?>
+<?import javafx.scene.control.MenuButton?>
+<?import javafx.scene.control.MenuItem?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+
+<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" style="-fx-background-color: transparent;" stylesheets="@../../../../styles/main_screen.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.controller.MainController">
+ <children>
+ <HBox style="-fx-background-color: transparent;" stylesheets="@../../../../styles/main_screen.css">
+ <children>
+ <HBox alignment="CENTER">
+ <children>
+ <ImageView fitHeight="48.0" fitWidth="190.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/icone_ins.png" />
+ </image>
+ </ImageView>
+ </children>
+ <padding>
+ <Insets right="30.0" />
+ </padding>
+ </HBox>
+ <HBox fx:id="myMenuBar">
+ <children>
+ <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Fichier">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../../../../../importation-validation-data/src/main/resources/images/Fichier.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ <items>
+ <MenuItem mnemonicParsing="false" onAction="#quit" text="Quitter" />
+ </items>
+ </MenuButton>
+ <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Paramètres">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../../../../../importation-validation-data/src/main/resources/images/143-02.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ <items>
+ <Menu mnemonicParsing="false" text="TypeFichier">
+ <items>
+ <MenuItem fx:id="validateurMenuItem" mnemonicParsing="false" onAction="#openImportTypeFichierDialog" text="Importer" />
+ <MenuItem fx:id="typeFichMenuItem" mnemonicParsing="false" onAction="#openTypeFichierDialog" text="Consulter" />
+ </items>
+ </Menu>
+ <MenuItem fx:id="configMenuItem" mnemonicParsing="false" onAction="#openConfigDialog" text="Configuration des repertoires" />
+ <MenuItem fx:id="validateurTypeFichMenuItem" mnemonicParsing="false" onAction="#openValidateurFichierDialog" text="Consulter les validateurs des typeFichier" />
+ <MenuItem fx:id="fichierValidationMenuItem1" mnemonicParsing="false" onAction="#openFichierValidationDialog" text="Générer les fichiers de validation" />
+ </items>
+ </MenuButton>
+ <MenuButton contentDisplay="TOP" disable="true" mnemonicParsing="false" text="Aide">
+ <graphic>
+ <ImageView disable="true" fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../../../../../importation-validation-data/src/main/resources/images/143-05.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ <items>
+ <MenuItem mnemonicParsing="false" text="A propos" />
+ </items>
+ </MenuButton>
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </HBox>
+ <HBox spacing="10.0" style="-fx-background-color: #fff; -fx-border-color: #dedfe0;">
+ <padding>
+ <Insets bottom="5.0" left="15.0" right="5.0" top="5.0" />
+ </padding>
+ <children>
+ <HBox prefWidth="200.0" spacing="10.0">
+ <children>
+ <Button fx:id="btnGenValidateur" mnemonicParsing="false" onAction="#openFichierValidationDialog" styleClass="receive">
+ <cursor>
+ <Cursor fx:constant="HAND" />
+ </cursor>
+ </Button>
+ </children>
+ </HBox>
+ <HBox alignment="TOP_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS" />
+ </children>
+ </HBox>
+ <VBox prefHeight="437.0" prefWidth="928.0" style="-fx-background-color: transparent;" styleClass="cover" stylesheets="@../../../../styles/style.css" />
+ </children>
+</VBox>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/main_1.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/main_1.fxml
new file mode 100644
index 0000000..5821b04
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/main_1.fxml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Menu?>
+<?import javafx.scene.control.MenuBar?>
+<?import javafx.scene.control.MenuItem?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="928.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.controller.MainController">
+ <children>
+ <VBox fx:id="mainContainer" prefHeight="200.0" prefWidth="100.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <MenuBar>
+ <menus>
+ <Menu mnemonicParsing="false" text="Fichier">
+ <items>
+ <MenuItem mnemonicParsing="false" onAction="#quit" text="Quitter" />
+ </items>
+ </Menu>
+ <Menu mnemonicParsing="false" text="Paramètres">
+ <items>
+ <Menu mnemonicParsing="false" text="TypeFichier">
+ <items>
+ <MenuItem fx:id="typeFichMenuItem" mnemonicParsing="false" onAction="#openTypeFichierDialog" text="Consulter" />
+ <MenuItem fx:id="validateurMenuItem" mnemonicParsing="false" onAction="#openImportTypeFichierDialog" text="Importer" />
+ </items>
+ </Menu>
+ <MenuItem fx:id="configMenuItem" mnemonicParsing="false" onAction="#openConfigDialog" text="Configuration des repertoires" />
+ <MenuItem fx:id="validateurTypeFichMenuItem" mnemonicParsing="false" onAction="#openValidateurFichierDialog" text="Consulter les validateurs des typeFichier" />
+ <MenuItem fx:id="fichierValidationMenuItem1" mnemonicParsing="false" onAction="#openFichierValidationDialog" text="Générer les fichiers de validation" />
+ </items>
+ </Menu>
+ <Menu mnemonicParsing="false" text="Aide">
+ <items>
+ <MenuItem mnemonicParsing="false" text="Afficher l'aide" />
+ <MenuItem mnemonicParsing="false" text="A propos de le l'application" />
+ </items>
+ </Menu>
+ </menus>
+ </MenuBar>
+ <VBox prefHeight="437.0" prefWidth="928.0" styleClass="cover" stylesheets="@../../../../styles/style.css" VBox.vgrow="ALWAYS" />
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/TypeFichierAdvancedSearchForm.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/TypeFichierAdvancedSearchForm.fxml
new file mode 100644
index 0000000..a363df9
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/TypeFichierAdvancedSearchForm.fxml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="30.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.controller.search.TypeFichierAdvancedSearchFormController">
+ <children>
+ <VBox prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <HBox layoutX="10.0" layoutY="45.0" spacing="5.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="42.0" prefHeight="17.0" prefWidth="57.0" text="participant">
+ <HBox.margin>
+ <Insets />
+ </HBox.margin></Label>
+ <TextField fx:id="participant" prefHeight="25.0" prefWidth="80.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox spacing="5.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" prefWidth="57.0" text="Libelle" />
+ <TextField fx:id="libelle" styleClass="square-border" stylesheets="@../../../../../styles/style.css" HBox.hgrow="ALWAYS" />
+ </children>
+ </HBox>
+ </children>
+ </VBox>
+ </children>
+ <padding>
+ <Insets top="10.0" />
+ </padding>
+</AnchorPane>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/TypeFichierSearchForm.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/TypeFichierSearchForm.fxml
new file mode 100644
index 0000000..4ffa428
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/TypeFichierSearchForm.fxml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="13.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.controller.search.TypeFichierSearchFormController">
+ <children>
+ <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <HBox spacing="5.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="42.0" prefWidth="57.0" text="Code" />
+ <TextField fx:id="code" prefWidth="80.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+ </children>
+ </HBox>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/ValidateurFichierAdvancedSearchForm.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/ValidateurFichierAdvancedSearchForm.fxml
new file mode 100644
index 0000000..c311dfe
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/ValidateurFichierAdvancedSearchForm.fxml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="30.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.controller.search.ValidateurFichierAdvancedSearchFormController">
+ <children>
+ <VBox prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <HBox spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" prefHeight="17.0" prefWidth="96.0" text="Nombre Position" />
+ <TextField fx:id="nombrePosition" prefHeight="25.0" prefWidth="71.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+ </children>
+ </HBox>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/ValidateurFichierSearchForm.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/ValidateurFichierSearchForm.fxml
new file mode 100644
index 0000000..a8d438e
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/controller/search/ValidateurFichierSearchForm.fxml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="13.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.controller.search.ValidateurFichierSearchFormController">
+ <children>
+ <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <HBox alignment="CENTER_LEFT" prefWidth="96.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="76.0" prefHeight="17.0" prefWidth="96.0" text="Type de fichier" />
+ <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="330.0" prefHeight="27.0" prefWidth="432.0" />
+ </children>
+ <VBox.margin>
+ <Insets bottom="10.0" />
+ </VBox.margin>
+ </HBox>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/ConfigEditForm.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/ConfigEditForm.fxml
new file mode 100644
index 0000000..3989ba3
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/ConfigEditForm.fxml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane id="AnchorPane" prefHeight="87.0" prefWidth="648.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.forms.ConfigEditFormController">
+ <children>
+ <VBox prefHeight="400.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <TitledPane collapsible="false" text="Informations sur les repertoires">
+ <content>
+ <VBox spacing="5.0">
+ <children>
+ <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Repertoire de stockage des validateurs XML" />
+ <TextField fx:id="outputDir" prefHeight="25.0" prefWidth="336.0" styleClass="square-border" stylesheets="@../../../../styles/style.css">
+ <HBox.margin>
+ <Insets left="10.0" right="2.0" />
+ </HBox.margin>
+ </TextField>
+ <Button fx:id="outButton" mnemonicParsing="false" onMousePressed="#outButtonOnClicked" prefHeight="25.0" prefWidth="25.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" text="...">
+ <HBox.margin>
+ <Insets right="10.0" />
+ </HBox.margin>
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ </Button>
+ </children>
+ </HBox>
+ </children>
+ </VBox>
+ </content>
+ </TitledPane>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/FichierValidationEditForm.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/FichierValidationEditForm.fxml
new file mode 100644
index 0000000..dc7e575
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/FichierValidationEditForm.fxml
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.PasswordField?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="249.0" prefWidth="648.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.forms.FichierValidationEditFormController">
+ <children>
+ <VBox spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <padding>
+ <Insets bottom="20.0" left="32.0" right="32.0" top="20.0" />
+ </padding>
+ <children>
+ <TitledPane collapsible="false" text="Informations sur le fichier de validation">
+ <content>
+ <VBox spacing="5.0">
+ <children>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Type de fichier" />
+ <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="330.0" prefWidth="327.0">
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin></AbstractSelectionItem>
+ </children>
+ </HBox>
+ <HBox layoutX="25.0" layoutY="87.0" prefHeight="100.0" prefWidth="200.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" prefWidth="205.0" text="Protéger fichier de validation ?" />
+ <CheckBox fx:id="isProtegeCheckBox" layoutX="235.0" layoutY="10.0" mnemonicParsing="false" text="Oui">
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin>
+ </CheckBox>
+ </children>
+ </HBox>
+ <HBox prefHeight="100.0" prefWidth="200.0" spacing="10.0">
+ <children>
+ <Label alignment="TOP_RIGHT" prefWidth="205.0" text="Clé de cryptage" />
+ <StackPane minWidth="328.0" prefHeight="150.0" prefWidth="200.0">
+ <children>
+ <TextField fx:id="showKeyToEncrypt" prefWidth="328.0" style="-fx-background-radius: 0%;" />
+ <PasswordField fx:id="keyToEncryptField" />
+ <ImageView fx:id="imageView" fitHeight="15.0" fitWidth="15.0" onMousePressed="#eyeOnMousePressed" pickOnBounds="true" preserveRatio="true" StackPane.alignment="CENTER_RIGHT">
+ <StackPane.margin>
+ <Insets right="5.0" />
+ </StackPane.margin>
+ <image>
+ <Image url="@../../../../images/oeil.png" />
+ </image>
+ </ImageView>
+ </children>
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin>
+ </StackPane>
+ </children>
+ </HBox>
+ <HBox layoutX="25.0" layoutY="57.0" prefHeight="100.0" prefWidth="200.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" prefWidth="205.0" text="Confirmation de la clé" />
+ <PasswordField fx:id="keyConfirmationField" minWidth="328.0">
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin>
+ </PasswordField>
+ </children>
+ </HBox>
+ <HBox layoutX="25.0" layoutY="117.0" prefHeight="100.0" prefWidth="200.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" prefWidth="205.0" text="Valider nom du fichier ?" />
+ <CheckBox fx:id="validateFileNameCheckBox" layoutX="235.0" layoutY="10.0" mnemonicParsing="false" text="Oui">
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin>
+ </CheckBox>
+ </children>
+ </HBox>
+<!-- <HBox alignment="CENTER_LEFT">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Repertoire de sortie" />
+ <TextField fx:id="OutDirTextField" prefHeight="25.0" prefWidth="336.0">
+ <HBox.margin>
+ <Insets left="10.0" right="2.0" />
+ </HBox.margin>
+ </TextField>
+ <Button fx:id="OutButton" mnemonicParsing="false" onMousePressed="#outButtonOnClicked" prefHeight="25.0" prefWidth="31.0" text="...">
+ <HBox.margin>
+ <Insets right="10.0" />
+ </HBox.margin>
+ </Button>
+ </children>
+ </HBox>-->
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </VBox>
+ </content>
+ </TitledPane>
+ <TitledPane fx:id="fileNameTitledPane" collapsible="false" text="Informations sur le nom du fichier à valider">
+ <content>
+ <VBox spacing="5.0">
+ <children>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Format de la date" />
+ <ComboBox fx:id="formatDate" prefWidth="327.0" style="-fx-background-radius: 0%;">
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin></ComboBox>
+ </children>
+ </HBox>
+<!-- <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Extension du fichier" />
+ <ComboBox fx:id="extensionFichier" prefWidth="327.0" style="-fx-background-radius: 0%;">
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin>
+ </ComboBox>
+ </children>
+ </HBox>-->
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Valeur maximale des tierces" />
+ <TextField fx:id="MaxValueTierceTextField" prefHeight="25.0" prefWidth="124.0" style="-fx-background-radius: 0%;">
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin>
+ </TextField>
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </VBox>
+ </content>
+ </TitledPane>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/ImportTypeFichierEditForm.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/ImportTypeFichierEditForm.fxml
new file mode 100644
index 0000000..1ac5df9
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/ImportTypeFichierEditForm.fxml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane id="AnchorPane" prefHeight="182.0" prefWidth="648.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.forms.ImportTypeFichierEditFormController">
+ <children>
+ <VBox layoutX="-6.0" layoutY="7.0" spacing="5.0" AnchorPane.bottomAnchor="-7.0" AnchorPane.leftAnchor="-6.0" AnchorPane.rightAnchor="6.0" AnchorPane.topAnchor="7.0">
+ <padding>
+ <Insets bottom="20.0" left="32.0" right="32.0" top="20.0" />
+ </padding>
+ <children>
+ <TitledPane collapsible="false" text="Informations sur le fichier à importer">
+ <content>
+ <VBox spacing="5.0">
+ <children>
+<!-- <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Format du fichier" />
+ <ComboBox fx:id="formatFichier" prefWidth="150.0" />
+ </children>
+ </HBox>-->
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Délimiteur de ligne" />
+ <ComboBox fx:id="delimiteurLigne" prefHeight="25.0" prefWidth="328.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Délimiteur colonne" />
+ <ComboBox fx:id="delimiteurColonne" prefHeight="25.0" prefWidth="328.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Fichier à importer" />
+ <TextField fx:id="fileToImportTextField" prefHeight="25.0" prefWidth="336.0" styleClass="square-border" stylesheets="@../../../../styles/style.css">
+ <HBox.margin>
+ <Insets left="10.0" right="2.0" />
+ </HBox.margin>
+ </TextField>
+ <Button fx:id="importButton" mnemonicParsing="false" onMousePressed="#importButtonOnClicked" prefHeight="25.0" prefWidth="31.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" text="...">
+ <HBox.margin>
+ <Insets right="10.0" />
+ </HBox.margin>
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ </Button>
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </VBox>
+ </content>
+ </TitledPane>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/StructureLigneEditForm.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/StructureLigneEditForm.fxml
new file mode 100644
index 0000000..7eb47d8
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/StructureLigneEditForm.fxml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="394.0" prefWidth="586.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.forms.StructureLigneEditFormController">
+ <children>
+ <VBox prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <TitledPane collapsible="false" text="Informations générales sur la structure de la ligne" VBox.vgrow="ALWAYS">
+ <content>
+ <VBox fx:id="formFieldContainer" spacing="5.0">
+ <children>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Position" />
+ <ComboBox fx:id="positionComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Code" />
+ <TextField fx:id="codeTextField" prefWidth="100.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Désignation" />
+ <TextField fx:id="designationTextField" prefWidth="280.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Type de donnée" />
+ <ComboBox fx:id="typeDonneeComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Taille" />
+ <TextField fx:id="tailleTextField" prefWidth="100.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="145.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Taille partie décimale" />
+ <TextField fx:id="taillePartieDecimalTextField" prefWidth="100.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox fx:id="dateFormatContainer" alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Format" />
+ <ComboBox fx:id="formatDateComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ <!--<TextField fx:id="formatDateTextField" prefWidth="100.0" />-->
+ </children>
+ </HBox>
+ <HBox fx:id="dateFormatContainer1" alignment="CENTER_LEFT" layoutX="25.0" layoutY="175.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Séparateur de date" />
+ <ComboBox fx:id="delimiteurDateComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox fx:id="dateFormatContainer11" alignment="CENTER_LEFT" layoutX="25.0" layoutY="205.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefHeight="17.0" prefWidth="138.0" text="Séparateur de décimal" />
+ <ComboBox fx:id="delimiteurDecimalComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </VBox>
+ </content>
+ </TitledPane>
+ </children>
+ <padding>
+ <Insets bottom="20.0" left="32.0" right="32.0" top="20.0" />
+ </padding>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/TypeFichierEditForm.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/TypeFichierEditForm.fxml
new file mode 100644
index 0000000..26fb40f
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/TypeFichierEditForm.fxml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="182.0" prefWidth="648.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.forms.TypeFichierEditFormController">
+ <children>
+ <VBox layoutX="-6.0" layoutY="7.0" spacing="5.0" AnchorPane.bottomAnchor="-7.0" AnchorPane.leftAnchor="-6.0" AnchorPane.rightAnchor="6.0" AnchorPane.topAnchor="7.0">
+ <padding>
+ <Insets bottom="20.0" left="32.0" right="32.0" top="20.0" />
+ </padding>
+ <children>
+ <TitledPane collapsible="false" text="Informations générales sur le type fichier">
+ <content>
+ <VBox spacing="5.0">
+ <children>
+<!-- <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Format du fichier" />
+ <ComboBox fx:id="formatFichier" prefWidth="150.0" />
+ </children>
+ </HBox>-->
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Code TypeFichier" />
+ <TextField fx:id="codeTextField" minWidth="328.0" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Libellé" />
+ <TextField fx:id="libelleTextField" minWidth="328.0" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Code Participant" />
+ <TextField fx:id="codeParticipantTextField" maxWidth="328.0" minWidth="328.0" prefHeight="25.0" prefWidth="336.0" styleClass="square-border" stylesheets="@../../../../styles/style.css">
+ <HBox.margin>
+ <Insets left="10.0" right="2.0" />
+ </HBox.margin>
+ </TextField>
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </VBox>
+ </content>
+ </TitledPane>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/ValidateurFichierEditForm.fxml b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/ValidateurFichierEditForm.fxml
new file mode 100644
index 0000000..a89834b
--- /dev/null
+++ b/fdx_generator/src/main/resources/com/megatim/fdxgenerator/forms/ValidateurFichierEditForm.fxml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractNestedEntityTable?>
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="543.0" prefWidth="650.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.forms.ValidateurFichierEditFormController">
+ <children>
+ <VBox spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <padding>
+ <Insets bottom="20.0" left="32.0" right="32.0" top="20.0" />
+ </padding>
+ <children>
+ <TitledPane collapsible="false" text="Informations sur le validateur">
+ <content>
+ <VBox spacing="5.0">
+ <children>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" text="Type de fichier" />
+ <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="330.0" prefWidth="330.0" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Format du fichier de données" />
+ <ComboBox fx:id="dataTypeComboBox" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+ </children>
+ </HBox>
+ <HBox fx:id="delimiteurLigneHBox" alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Délimiteur de ligne" />
+ <ComboBox fx:id="delimiteurLigne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+ </children>
+ </HBox>
+ <HBox fx:id="delimiteurColonneHBox" alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-text-fill: black;" text="Délimiteur colonne" />
+ <ComboBox fx:id="delimiteurColonne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" text="Nombre de position par ligne" />
+ <TextField fx:id="nombrePositionTextField" prefWidth="50.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-text-fill: black;" text="Fichier contient ligne d'entête ?" />
+ <CheckBox fx:id="headerPresentCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </VBox>
+ </content>
+ </TitledPane>
+ <TitledPane animated="false" collapsible="false" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="Structure des lignes" VBox.vgrow="ALWAYS">
+ <content>
+ <VBox prefHeight="200.0" prefWidth="100.0" spacing="5.0">
+ <children>
+ <HBox alignment="CENTER_RIGHT">
+ <children>
+ <CheckBox fx:id="saisieStructureLigneChecBox" mnemonicParsing="false" styleClass="square-border" stylesheets="@../../../../styles/style.css" text="Saisir la structure des ligne" />
+ </children>
+ </HBox>
+ <AbstractNestedEntityTable fx:id="structureLigneAbstractTable" prefHeight="252.0" prefWidth="526.0" VBox.vgrow="ALWAYS" />
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding></VBox>
+ </content>
+ </TitledPane>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/src/main/resources/images/143-01.png b/fdx_generator/src/main/resources/images/143-01.png
new file mode 100644
index 0000000..84f2182
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/143-01.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/143-02.png b/fdx_generator/src/main/resources/images/143-02.png
new file mode 100644
index 0000000..ad7888f
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/143-02.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/143-03.png b/fdx_generator/src/main/resources/images/143-03.png
new file mode 100644
index 0000000..4f9314e
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/143-03.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/143-04.png b/fdx_generator/src/main/resources/images/143-04.png
new file mode 100644
index 0000000..80f3975
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/143-04.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/143-05.png b/fdx_generator/src/main/resources/images/143-05.png
new file mode 100644
index 0000000..195001d
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/143-05.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/Accuueil_Generator.jpg b/fdx_generator/src/main/resources/images/Accuueil_Generator.jpg
new file mode 100644
index 0000000..300e38e
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/Accuueil_Generator.jpg
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/Fichier.png b/fdx_generator/src/main/resources/images/Fichier.png
new file mode 100644
index 0000000..e390ade
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/Fichier.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/Motif.png b/fdx_generator/src/main/resources/images/Motif.png
new file mode 100644
index 0000000..646d5d6
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/Motif.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/Recherche.png b/fdx_generator/src/main/resources/images/Recherche.png
new file mode 100644
index 0000000..c9ca377
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/Recherche.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/Reset.png b/fdx_generator/src/main/resources/images/Reset.png
new file mode 100644
index 0000000..07ebdb5
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/Reset.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/add.png b/fdx_generator/src/main/resources/images/add.png
new file mode 100644
index 0000000..ee865fa
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/add.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/close-icon.png b/fdx_generator/src/main/resources/images/close-icon.png
new file mode 100644
index 0000000..15cb17e
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/close-icon.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/edit.png b/fdx_generator/src/main/resources/images/edit.png
new file mode 100644
index 0000000..72def46
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/edit.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/generate.png b/fdx_generator/src/main/resources/images/generate.png
new file mode 100644
index 0000000..a2535ba
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/generate.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/icone_ins.png b/fdx_generator/src/main/resources/images/icone_ins.png
new file mode 100644
index 0000000..372530d
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/icone_ins.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/max-icon.png b/fdx_generator/src/main/resources/images/max-icon.png
new file mode 100644
index 0000000..191f0c2
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/max-icon.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/min-icon.png b/fdx_generator/src/main/resources/images/min-icon.png
new file mode 100644
index 0000000..60178dc
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/min-icon.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/next.png b/fdx_generator/src/main/resources/images/next.png
new file mode 100644
index 0000000..b3b83bb
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/next.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/oeil.png b/fdx_generator/src/main/resources/images/oeil.png
new file mode 100644
index 0000000..bf5a58d
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/oeil.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/previous.png b/fdx_generator/src/main/resources/images/previous.png
new file mode 100644
index 0000000..97dbf08
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/previous.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/images/trash.png b/fdx_generator/src/main/resources/images/trash.png
new file mode 100644
index 0000000..1c21ed9
--- /dev/null
+++ b/fdx_generator/src/main/resources/images/trash.png
Binary files differ
diff --git a/fdx_generator/src/main/resources/log4j.properties b/fdx_generator/src/main/resources/log4j.properties
new file mode 100644
index 0000000..8c3f444
--- /dev/null
+++ b/fdx_generator/src/main/resources/log4j.properties
@@ -0,0 +1,12 @@
+# Root logger option
+log4j.rootLogger=INFO, file
+
+log4j.appender.file=org.apache.log4j.RollingFileAppender
+log4j.appender.file.File=generateur.log
+log4j.appender.file.MaxFileSize=10GB
+log4j.appender.file.MaxBackupIndex=5
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
+
+# Log everything. Good for troubleshooting
+log4j.logger.org.hibernate=FATAL
\ No newline at end of file
diff --git a/fdx_generator/src/main/resources/styles/main-style.css b/fdx_generator/src/main/resources/styles/main-style.css
new file mode 100644
index 0000000..ef7fe30
--- /dev/null
+++ b/fdx_generator/src/main/resources/styles/main-style.css
@@ -0,0 +1,251 @@
+/*
+ * Empty Stylesheet file.
+ */
+
+.banner {
+ -fx-background-image: url(../images/Motif.png);
+ -fx-background-position: center center;
+ -fx-background-repeat: stretch;
+ -fx-background-size: cover;
+}
+
+.mainFxmlClass {
+
+}
+
+.table-view {
+ -fx-background-color: transparent;
+ -fx-border-color: rgb(209, 211, 212);
+ -fx-padding: 0;
+}
+
+.table-view .column-header,
+.table-view .column-header-background .filler {
+ -fx-background-color: #44507B;
+}
+
+.column-header {
+
+}
+
+.table-view .column-header-background{
+ -fx-padding: 0;
+}
+
+.table-view .column-header {
+ -fx-border-color: rgb(209, 211, 212);
+}
+
+.table-view .column-header .label{
+ -fx-text-fill: white;
+ -fx-font-weight: bold;
+ -fx-alignment: CENTER;
+ -fx-padding: 5;
+}
+
+.table-cell {
+ -fx-border-width: 0 1 0 1;
+ -fx-border-color: rgb(230, 231, 232);
+ -fx-padding: 5;
+ -fx-alignment: CENTER;
+}
+
+.table-row-cell{
+ -fx-background-color: #ffffff;
+}
+
+.table-row-cell:odd {
+ -fx-background-color: rgb(239, 239, 240);
+}
+
+.table-row-cell:selected {
+ -fx-background-color: rgba(214, 236, 219, 1);
+ -fx-background-insets: 0;
+ -fx-background-radius: 0;
+}
+
+.table-row-cell:selected .text {
+ -fx-fill: #000;
+}
+
+/*
+* Style for TextField
+*/
+.text-field {
+ -fx-background-color: #F6F7F9;
+ -fx-border-color: #30AFDC;
+ -fx-border-radius: 3px;
+ -fx-background-radius: 3px;
+}
+
+/*
+Tab Pane style
+*/
+
+.tab-pane > .tab-header-area > .headers-region > .tab:top {
+ -fx-border-color: #a3a7a8;
+ -fx-border-radius: 5 5 0 0;
+ -fx-background-color: white;
+ -fx-pref-height: 40px;
+ -fx-background-insets: 0;
+}
+
+.tab-pane > .tab-header-area > .headers-region > .tab:selected:top {
+ -fx-border-color: #a3a7a8 #a3a7a8 #a3a7a8 #a3a7a8;
+ -fx-border-width: 1 1 1 1;
+ -fx-border-radius: 5 5 0 0;
+ -fx-background-color: white;
+ -fx-pref-height: 40px;
+ -fx-background-insets: 0;
+ -fx-border-insets: 0;
+}
+
+.tab-pane > .tab-header-area > .headers-region > .tab:selected > .tab-container > .tab-label {
+ -fx-alignment: CENTER;
+ -fx-text-fill: #323232;
+ -fx-font-weight: bold;
+}
+
+.tab-pane > .tab-header-area > .headers-region > .tab > .tab-container > .tab-label {
+ -fx-alignment: CENTER;
+ -fx-text-fill: #323232;
+ -fx-font-weight: bold;
+}
+
+.tab-pane > .tab-header-area > .tab-header-background {
+ -fx-background-color: white;
+ -fx-border-color: #a3a7a8;
+ -fx-border-width: 0 0 1 0;
+ -fx-background-insets: 0;
+ -fx-pref-height: 45px;
+}
+
+/*
+* Title pane style
+*/
+.titled-pane {
+ -fx-border-color: rgba(199, 200, 202, 1);
+ -fx-text-fill: rgba(255, 255, 255, 1);
+}
+
+.titled-pane > .title {
+ -fx-background-radius: 0;
+ -fx-border-radius: 0;
+ -fx-background-color: rgba(68, 80, 123, 1);
+}
+
+.titled-pane > .title .text {
+
+}
+
+/* #2 */
+.titled-pane > .title > .text {
+ -fx-font-size: 14px;
+ -fx-background-color: rgba(114, 114, 116, 1);
+}
+
+/*
+* Search buttons
+*/
+
+.search {
+ -fx-background-color: rgba(220, 221, 223, 1);
+ -fx-background-radius: 0;
+ -fx-border-radius: 0;
+ -fx-text-fill: rgba(53, 52, 52, 1);
+}
+
+.search:hover {
+ -fx-background-color: rgba(220, 221, 223, .8);
+}
+
+.search:cancel {
+ -fx-text-fill: gray;
+}
+
+/* CHECKBOX */
+.check-box {
+ /* default properties */
+ selected-box-color: rgba(255, 255, 255, 1);
+ box-color: rgba(255, 255, 255, 1);
+ mark-color: white;
+}
+
+.check-box .box {
+ /* background color for selected checkbox */
+ -fx-border-width: 1px;
+ -fx-border-color: rgb(208, 208, 208);
+}
+
+.check-box:selected > .box {
+ /* background color for selected checkbox */
+ -fx-background-color: selected-box-color;
+}
+
+.check-box > .box {
+ /* background color of unselected checkbox */
+ -fx-background-color: box-color;
+ -fx-border-radius: 0px;
+ -fx-background-radius: 0px;
+}
+
+/* TEXTFIELD */
+
+.text-field {
+ -fx-background-color: rgba(208, 208, 208, 1);
+ -fx-border-radius: 0px;
+ -fx-background-radius: 0px;
+ -fx-text-fill: rgba(98, 98, 100, 1);
+ -fx-border-color: rgba(208, 208, 208, 1);
+ -fx-border-width: 1;
+}
+
+.text-field:disabled {
+ -fx-opacity: 0.8;
+}
+
+/* COMBOBOX */
+/* The ListCell that shows the selected item in a non-editable ComboBox */
+.combo-box,
+.combo-box:focus,
+.combo-box .list-cell {
+ -fx-background-color: rgba(208, 208, 208, 1);
+}
+
+.combo-box .list-view .list-cell {
+ -fx-background-color: rgba(255, 255, 255, 1);
+}
+
+/* The TextField that shows the selected item in an editable ComboBox */
+.combo-box .text-input {
+ -fx-background-color: rgba(208, 208, 208, 1);
+}
+
+.combo-box:disabled {
+ -fx-opacity: 0.8;
+}
+
+
+/* Style the arrow button area */
+.combo-box .arrow-button {
+ -fx-background-color: rgba(255, 255, 255, 1);
+ -fx-border-radius: 0px;
+ -fx-background-radius: 0px;
+ -fx-border-color: rgba(225, 225, 225, 1);
+ -fx-border-width: 1;
+}
+
+.combo-box .arrow-button .arrow {
+ -fx-background-color: rgba(162, 162, 162, 1);
+}
+
+/* Set the text color in the popup list for ComboBox to blue */
+.combo-box-popup .list-view .list-cell {
+ -fx-text-fill: rgba(98, 98, 100, 1);
+}
+
+/* Set the text color in the popup list for ComboBox to blue */
+.combo-box-popup .list-view .list-cell:hover {
+ -fx-text-fill: rgba(98, 98, 100, 1);
+ -fx-background-color: rgba(214, 236, 219, 1);
+}
\ No newline at end of file
diff --git a/fdx_generator/src/main/resources/styles/main_screen.css b/fdx_generator/src/main/resources/styles/main_screen.css
new file mode 100644
index 0000000..f9b625c
--- /dev/null
+++ b/fdx_generator/src/main/resources/styles/main_screen.css
@@ -0,0 +1,246 @@
+/*
+ * Empty Stylesheet file.
+ */
+
+@font-face {
+ font-family: 'Roboto';
+ src: url('../fonts/Roboto-Medium.ttf');
+}
+
+* {
+ -fx-font-family: 'Roboto';
+}
+
+.main_screen {
+ -fx-background-image: url('../images/Accuueil_Generator.jpg');
+ -fx-background-position: center center;
+ -fx-background-repeat: stretch;
+ -fx-background-size: cover;
+ -fx-border-color: #C5CFCE;
+}
+
+.dashboard {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/Tableau_de_bord_1.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.dashboard:hover {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/Barre_outils_hover-03.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.receive {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/generate.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.receive:hover {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/generate.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.update {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/Modif-01-01x.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.update:hover {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/Modif-01-01.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.generate {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/fichiers_generesx.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.generate:hover {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/Barre_outils_hover-01.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.treatment {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/tache.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.treatment:hover {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/tache_hover.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+}
+
+/*
+* Title pane style
+*/
+.titled-pane > .title {
+ -fx-background-color: #C5D6E0;
+ -fx-border-color: #C5D6E0;
+}
+
+.titled-pane > .title .text {
+
+}
+
+/* #2 */
+.titled-pane > .title > .text {
+ -fx-font-size: 14px;
+}
+
+/*
+* Menu-bar style
+*/
+/*
+.menu-item {
+ -fx-border-color: #fff;
+ -fx-margin: 0;
+}
+
+.menu .text,
+.menu-item .text {
+ -fx-fill: #000;
+ -fx-fill: #000;
+}
+
+.menu:hover .text,
+.menu:showing .text,
+.menu:focused .text,
+.menu-item:hover .text,
+.menu-item:showing .text,
+.menu-item:focused .text {
+ -fx-fill: #fff;
+ -fx-fill: #fff;
+ -fx-font-weight: bold;
+}
+
+
+.menu:hover,
+.menu:showing,
+.menu:focused,
+.menu-item:hover,
+.menu-item:showing,
+.menu-item:focused {
+ -fx-background-color: #BCD18A;
+}
+
+.menu:clicked {
+ -fx-background-color: #BCD18A;
+}
+*/
+/*
+* MENU BUTTON
+*/
+
+.menu-button > .arrow-button {
+ -fx-padding: 0;
+}
+
+.menu-button > .arrow-button > .arrow {
+ -fx-padding: 0;
+}
+
+.menu-button {
+ -fx-background-color: transparent;
+ -fx-background-radius: 7;
+ -fx-border-radius: 7;
+ -fx-border-width: 1;
+ -fx-border-color: transparent;
+ -fx-text-fill: white;
+ -fx-font-size: 11px;
+ -fx-padding: 0;
+}
+
+.menu-button:hover {
+ -fx-background-color: #ededee;
+ -fx-background-radius: 7;
+ -fx-border-radius: 7;
+ -fx-border-width: 1;
+ -fx-border-color: #F2F2F2;
+ -fx-text-fill: white;
+ -fx-font-weight: normal;
+}
+
+/* LABEL */
+
+.bottom-label {
+ -fx-text-fill: rgba(90, 90, 90, 1);
+ -fx-font-weight: bold;
+ -fx-font-size: 11px;
+}
+
+/* TEXTFIELD */
+
+.bottom-text-field {
+ -fx-background-color: #e0e4e3;
+ -fx-border-radius: 0px;
+ -fx-background-radius: 0px;
+ -fx-text-fill: rgba(0, 0, 0, 1);
+ -fx-border-color: #C5CFCE;
+ -fx-border-width: 1;
+ -fx-padding: 3;
+ -fx-font-size: 11px;
+ -fx-background-radius: 2;
+ -fx-border-radius: 2;
+}
+
+.bottom-text-field:disabled {
+ -fx-opacity: 0.8;
+}
\ No newline at end of file
diff --git a/fdx_generator/src/main/resources/styles/style.css b/fdx_generator/src/main/resources/styles/style.css
new file mode 100644
index 0000000..2b219de
--- /dev/null
+++ b/fdx_generator/src/main/resources/styles/style.css
@@ -0,0 +1,18 @@
+/*
+Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+Click nbfs://nbhost/SystemFileSystem/Templates/Other/CascadeStyleSheet.css to edit this template
+*/
+/*
+ Created on : 15 nov. 2022, 11:59:29
+ Author : STEPHANIE
+*/
+
+.cover{
+ -fx-background-image: url(../images/Accuueil_Generator.jpg);
+ -fx-background-position: center center;
+ -fx-background-repeat: stretch;
+ -fx-background-size: stretch;
+}
+.square-border {
+ -fx-background-radius:0%;
+}
\ No newline at end of file
diff --git a/fdx_generator/src/main/resources/styles/title-bar.css b/fdx_generator/src/main/resources/styles/title-bar.css
new file mode 100644
index 0000000..59cff2c
--- /dev/null
+++ b/fdx_generator/src/main/resources/styles/title-bar.css
@@ -0,0 +1,44 @@
+/*
+To change this license header, choose License Headers in Project Properties.
+To change this template file, choose Tools | Templates
+and open the template in the editor.
+*/
+/*
+ Created on : 3 mars 2022, 14:50:08
+ Author : MGT_DEV3
+*/
+
+.title-bar {
+ -fx-background-color: rgba(235, 235, 235, 1);
+}
+
+.title-bar-button {
+ -fx-background-color: transparent;
+ -fx-background-radius: 0;
+ -fx-border-radius: 0;
+ -fx-border-width: 0;
+}
+
+.title-bar-button:hover {
+ -fx-cursor: hand;
+ -fx-background-color: rgba(220, 221, 222, 1);
+ -fx-background-radius: 0;
+ -fx-border-radius: 0;
+ -fx-border-width: 0;
+}
+
+.title-bar-button-close {
+ -fx-cursor: hand;
+ -fx-background-color: transparent;
+ -fx-background-radius: 0;
+ -fx-border-radius: 0;
+ -fx-border-width: 0;
+}
+
+.title-bar-button-close:hover {
+ -fx-background-color: rgba(232, 17, 35, 1);
+ -fx-background-radius: 0;
+ -fx-border-radius: 0;
+ -fx-border-width: 0;
+}
+
diff --git a/fdx_generator/src/main/resources/update-description.txt b/fdx_generator/src/main/resources/update-description.txt
new file mode 100644
index 0000000..ec24b8b
--- /dev/null
+++ b/fdx_generator/src/main/resources/update-description.txt
@@ -0,0 +1,3 @@
+title of the update version 1.0
+use this as description version 1.0
+bla bla bla
diff --git a/fdx_generator/target/classes/.netbeans_automatic_build b/fdx_generator/target/classes/.netbeans_automatic_build
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/fdx_generator/target/classes/.netbeans_automatic_build
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/abstracts/AbstractEditDialog.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/abstracts/AbstractEditDialog.fxml
new file mode 100644
index 0000000..b087a8e
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/abstracts/AbstractEditDialog.fxml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane style="-fx-border-color: rgb(184, 184, 184); -fx-border-width: 1;" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatimfx.common.abstracts.AbstractEditDialogController">
+ <top>
+ <HBox onMouseDragged="#mouseDraggedTitleBar" onMousePressed="#mousePressedTitleBar" styleClass="title-bar" BorderPane.alignment="CENTER">
+ <children>
+ <HBox prefWidth="200.0" HBox.hgrow="ALWAYS" />
+ <HBox alignment="CENTER_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+ <children>
+ <Button mnemonicParsing="false" onMouseClicked="#minimize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/min-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button mnemonicParsing="false" onMouseClicked="#maximize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/max-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button mnemonicParsing="false" onAction="#close" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/close-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ </children></HBox>
+ </children>
+ <padding>
+ <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
+ </padding>
+ </HBox>
+ </top>
+ <center>
+ <VBox BorderPane.alignment="CENTER">
+ <children>
+ <HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity" prefHeight="50.0" prefWidth="200.0" styleClass="banner">
+ <children>
+ <Text fx:id="title" fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="TITRE DE LA FENETRE ICI">
+ <font>
+ <Font name="Arial Bold" size="16.0" />
+ </font>
+ </Text>
+ </children>
+ </HBox>
+ <BorderPane fx:id="formPanel">
+ <center>
+ <VBox BorderPane.alignment="CENTER">
+ <padding>
+ <Insets bottom="20.0" left="47.0" right="47.0" top="20.0" />
+ </padding>
+ <children>
+ <VBox fx:id="formContainer" style="-fx-background-color: #F8F8F8; -fx-border-color: #E9E9E9; -fx-border-width: 1;" />
+ </children>
+ </VBox>
+ </center></BorderPane>
+ <HBox fx:id="bottomContainer" alignment="TOP_RIGHT" prefHeight="50.0" spacing="5.0">
+ <children>
+ <Button fx:id="cancelButton" mnemonicParsing="false" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #9d9fa2; -fx-cursor: pointer; -fx-border-color: #9d9fa2; -fx-background-radius: 0;" text="Annuler" textFill="WHITE">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ </Button>
+ <Button fx:id="editButton" mnemonicParsing="false" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #31a19a; -fx-cursor: pointer; -fx-background-radius: 0;" text="Enregistrer" textFill="WHITE">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ </Button>
+ </children>
+ <padding>
+ <Insets left="47.0" right="47.0" />
+ </padding>
+ </HBox>
+ </children>
+ </VBox>
+ </center>
+ <stylesheets>
+ <URL value="@../../../../styles/title-bar.css" />
+ <URL value="@../../../../styles/main-style.css" />
+ </stylesheets>
+</BorderPane>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/abstracts/AbstractEditValidateDialog.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/abstracts/AbstractEditValidateDialog.fxml
new file mode 100644
index 0000000..236bae2
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/abstracts/AbstractEditValidateDialog.fxml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.ScrollPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane prefHeight="571.0" prefWidth="657.0" style="-fx-border-color: rgb(184, 184, 184); -fx-border-width: 1;" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatimfx.common.abstracts.AbstractSelfEditValidateDialogController">
+ <top>
+ <HBox onMouseDragged="#mouseDraggedTitleBar" onMousePressed="#mousePressedTitleBar" styleClass="title-bar" BorderPane.alignment="CENTER">
+ <children>
+ <HBox prefWidth="200.0" HBox.hgrow="ALWAYS" />
+ <HBox alignment="CENTER_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+ <children>
+ <Button mnemonicParsing="false" onAction="#min" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/min-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button mnemonicParsing="false" onAction="#max" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/max-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button mnemonicParsing="false" onAction="#close" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/close-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ </children></HBox>
+ </children>
+ <padding>
+ <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
+ </padding>
+ </HBox>
+ </top>
+ <center>
+ <VBox BorderPane.alignment="CENTER">
+ <children>
+ <HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity" prefHeight="50.0" prefWidth="200.0" styleClass="banner">
+ <children>
+ <Text fx:id="title" fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="TITRE DE LA FENETRE ICI">
+ <font>
+ <Font name="Arial Bold" size="16.0" />
+ </font>
+ </Text>
+ </children>
+ </HBox>
+ <BorderPane fx:id="formPanel" VBox.vgrow="ALWAYS">
+ <center>
+ <VBox prefHeight="200.0" prefWidth="100.0" BorderPane.alignment="CENTER">
+ <padding>
+ <Insets bottom="20.0" left="47.0" right="47.0" top="20.0" />
+ </padding>
+ <children>
+ <ScrollPane fitToHeight="true" fitToWidth="true" prefHeight="381.0" prefWidth="310.0" VBox.vgrow="ALWAYS">
+ <content>
+ <VBox fx:id="formContainer" style="-fx-background-color: #F8F8F8; -fx-border-color: #E9E9E9; -fx-border-width: 1;" />
+ </content>
+ </ScrollPane>
+ </children>
+ </VBox>
+ </center></BorderPane>
+ <HBox fx:id="bottomContainer" alignment="TOP_RIGHT" prefHeight="50.0" spacing="5.0">
+ <children>
+ <Button fx:id="cancelButton" mnemonicParsing="false" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #9d9fa2; -fx-cursor: pointer; -fx-border-color: #9d9fa2; -fx-background-radius: 0;" text="Annuler" textFill="WHITE">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ </Button>
+ <Button fx:id="editButton" mnemonicParsing="false" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #31a19a; -fx-cursor: pointer; -fx-background-radius: 0;" text="Enregistrerr" textFill="WHITE">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ </Button>
+ </children>
+ <padding>
+ <Insets left="47.0" right="47.0" />
+ </padding>
+ </HBox>
+ </children>
+ </VBox>
+ </center>
+ <stylesheets>
+ <URL value="@../../../../styles/main-style.css" />
+ <URL value="@../../../../styles/title-bar.css" />
+ </stylesheets>
+</BorderPane>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/abstracts/AbstractMainDialog.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/abstracts/AbstractMainDialog.fxml
new file mode 100644
index 0000000..c9c5732
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/abstracts/AbstractMainDialog.fxml
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TableView?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" onMouseDragged="#mouseDraggedTitleBar" onMousePressed="#mousePressedTitleBar" prefHeight="678.0" prefWidth="1120.0" style="-fx-border-color: rgb(184, 184, 184); -fx-border-width: 1;" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatimfx.common.abstracts.AbstractMainDialogController">
+ <center>
+ <VBox BorderPane.alignment="CENTER">
+ <children>
+ <HBox alignment="CENTER" prefHeight="65.0" prefWidth="1024.0" styleClass="banner">
+ <children>
+ <Text fx:id="title" fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="TITRE">
+ <font>
+ <Font name="Arial Bold" size="16.0" />
+ </font>
+ </Text>
+ </children>
+ </HBox>
+ <VBox spacing="5.0" style="-fx-background-color: #44507;" VBox.vgrow="ALWAYS">
+ <children>
+ <TitledPane collapsible="false" prefHeight="61.0" prefWidth="1223.0" text="Recherche">
+ <content>
+ <BorderPane fx:id="searchPane" prefHeight="43.0" prefWidth="1219.0" style="-fx-background-color: rgb(246, 247, 249);">
+ <right>
+ <HBox spacing="5.0" BorderPane.alignment="CENTER_LEFT">
+ <BorderPane.margin>
+ <Insets />
+ </BorderPane.margin>
+ <children>
+ <Button fx:id="btnSearch" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="search">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/Recherche.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button fx:id="btnReset" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="search">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/Reset.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <CheckBox fx:id="advancedCheckBox" alignment="CENTER" maxHeight="-Infinity" maxWidth="1.7976931348623157E308" mnemonicParsing="false" prefHeight="25.0" text="Options avancées" />
+ </children>
+ <padding>
+ <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+ </padding>
+ </HBox>
+ </right>
+ <center>
+ <VBox BorderPane.alignment="CENTER">
+ <children>
+ <VBox fx:id="normalSearchContainer" prefHeight="200.0" prefWidth="100.0">
+ <padding>
+ <Insets right="50.0" />
+ </padding>
+ </VBox>
+ <VBox fx:id="advancedSearchContainer" prefHeight="200.0" prefWidth="100.0">
+ <padding>
+ <Insets right="50.0" />
+ </padding>
+ </VBox>
+ </children>
+ </VBox>
+ </center>
+ </BorderPane>
+ </content>
+ </TitledPane>
+ <VBox prefHeight="200.0" prefWidth="100.0" spacing="3.0" style="-fx-background-color: rgb(246, 247, 249);" VBox.vgrow="ALWAYS">
+ <children>
+ <HBox fx:id="buttonContainer" alignment="CENTER_LEFT" spacing="2.0">
+ <children>
+ <HBox fx:id="buttonContainer" alignment="BOTTOM_LEFT" spacing="2.0">
+ <children>
+ <Button fx:id="btnAdd" mnemonicParsing="false" onAction="#onAddDialog" style="-fx-background-color: #31a19a; -fx-cursor: pointer; -fx-background-radius: 8 0 0 0; -fx-border-radius: 8 0 0 0;" textFill="#ebf0ee">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ <graphic>
+ <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/add.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button fx:id="btnEdit" mnemonicParsing="false" onAction="#onEditDialog" style="-fx-background-color: #9d9fa2; -fx-cursor: pointer; -fx-background-radius: 0;" textFill="#f2eded">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ <graphic>
+ <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/edit.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button fx:id="btnPrint" mnemonicParsing="false" onAction="#onEditDialog" style="-fx-background-color: #9d9fa2; -fx-cursor: pointer; -fx-background-radius: 0;" textFill="#f2eded">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ <graphic>
+ <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/print.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button fx:id="btnDelete" mnemonicParsing="false" onAction="#removeElement" style="-fx-background-color: #9d9fa2; -fx-cursor: pointer; -fx-background-radius: 0;" textFill="#f2eded">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ <graphic>
+ <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/trash.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_RIGHT" HBox.hgrow="ALWAYS">
+ <children>
+ <Button fx:id="btnImport" mnemonicParsing="false" onAction="#removeElement" style="-fx-background-color: #9d9fa2; -fx-cursor: pointer; -fx-background-radius: 0;" textFill="#f2eded">
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ <graphic>
+ <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/trash.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ </children>
+ </HBox>
+ </children>
+ <opaqueInsets>
+ <Insets />
+ </opaqueInsets>
+ </HBox>
+ <VBox prefHeight="200.0" prefWidth="100.0" VBox.vgrow="ALWAYS">
+ <children>
+ <TableView fx:id="elementTable" VBox.vgrow="ALWAYS">
+ <columnResizePolicy>
+ <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
+ </columnResizePolicy>
+ </TableView>
+ <HBox alignment="CENTER_LEFT" spacing="30.0" style="-fx-background-color: rgb(206, 206, 206);">
+ <children>
+ <HBox alignment="CENTER" spacing="15.0">
+ <children>
+ <HBox alignment="CENTER">
+ <children>
+ <Button fx:id="btnNext" mnemonicParsing="false" style="-fx-background-color: transparent; -fx-padding: 1;">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/next.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Label text="suivant">
+ <font>
+ <Font size="14.0" />
+ </font>
+ </Label>
+ </children>
+ </HBox>
+ <HBox alignment="CENTER">
+ <children>
+ <Button fx:id="btnPrevious" mnemonicParsing="false" onAction="#previousPage" style="-fx-background-color: transparent; -fx-padding: 1;">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/previous.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Label text="precedent">
+ <font>
+ <Font size="14.0" />
+ </font>
+ </Label>
+ </children>
+ </HBox>
+ <Label fx:id="paginationNumberInfo" text="(0/0)">
+ <font>
+ <Font size="14.0" />
+ </font>
+ </Label>
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+ </padding>
+ </HBox>
+ </children>
+ </VBox>
+ </children>
+ </VBox>
+ <HBox alignment="CENTER_RIGHT">
+ <children>
+ <Button fx:id="btnClose" mnemonicParsing="false" prefHeight="27.0" prefWidth="90.0" style="-fx-background-color: rgb(202, 202, 202); -fx-cursor: pointer; -fx-border-color: #9d9fa2;" text="Quitter" textFill="#5d5d5d" />
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="30.0" left="30.0" right="30.0" top="30.0" />
+ </padding>
+ </VBox>
+ </children>
+ </VBox>
+ </center>
+ <top>
+ <HBox styleClass="title-bar" BorderPane.alignment="CENTER">
+ <padding>
+ <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
+ </padding>
+ <children>
+ <HBox prefWidth="200.0" HBox.hgrow="ALWAYS" />
+ <HBox alignment="CENTER_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+ <children>
+ <Button mnemonicParsing="false" onMouseClicked="#minimize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/min-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button mnemonicParsing="false" onMouseClicked="#maximize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/max-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ <Button mnemonicParsing="false" onAction="#close" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button">
+ <graphic>
+ <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/close-icon.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ </Button>
+ </children>
+ </HBox>
+ </children>
+ </HBox>
+ </top>
+ <stylesheets>
+ <URL value="@../../../../styles/main-style.css" />
+ <URL value="@../../../../styles/title-bar.css" />
+ </stylesheets>
+</BorderPane>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/main.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/main.fxml
new file mode 100644
index 0000000..a1ebffd
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/main.fxml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Menu?>
+<?import javafx.scene.control.MenuButton?>
+<?import javafx.scene.control.MenuItem?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="533.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.controller.MainController">
+ <children>
+ <VBox fx:id="mainContainer" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" style="-fx-background-color: transparent;" stylesheets="@../../../../styles/main_screen.css" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <HBox style="-fx-background-color: transparent;" stylesheets="@../../../../styles/main_screen.css">
+ <children>
+ <HBox alignment="CENTER">
+ <children>
+ <ImageView fitHeight="48.0" fitWidth="190.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/icone_ins.png" />
+ </image>
+ </ImageView>
+ </children>
+ <padding>
+ <Insets right="30.0" />
+ </padding>
+ </HBox>
+ <HBox fx:id="myMenuBar">
+ <children>
+ <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Fichier">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/Fichier.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ <items>
+ <MenuItem mnemonicParsing="false" onAction="#quit" text="Quitter" />
+ </items>
+ </MenuButton>
+ <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Paramètres">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/143-02.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ <items>
+ <Menu mnemonicParsing="false" text="TypeFichier">
+ <items>
+ <MenuItem fx:id="validateurMenuItem" mnemonicParsing="false" onAction="#openImportTypeFichierDialog" text="Importer" />
+ <MenuItem fx:id="typeFichMenuItem" mnemonicParsing="false" onAction="#openTypeFichierDialog" text="Consulter" />
+ </items>
+ </Menu>
+ <MenuItem fx:id="configMenuItem" mnemonicParsing="false" onAction="#openConfigDialog" text="Configuration des repertoires" />
+ <MenuItem fx:id="validateurTypeFichMenuItem" mnemonicParsing="false" onAction="#openValidateurFichierDialog" text="Consulter les validateurs des typeFichier" />
+ <MenuItem fx:id="fichierValidationMenuItem1" mnemonicParsing="false" onAction="#openFichierValidationDialog" text="Générer les fichiers de validation" />
+ </items>
+ </MenuButton>
+ <MenuButton contentDisplay="TOP" disable="true" mnemonicParsing="false" text="Aide">
+ <graphic>
+ <ImageView disable="true" fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/143-05.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ <items>
+ <MenuItem mnemonicParsing="false" text="A propos" />
+ </items>
+ </MenuButton>
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </HBox>
+ <HBox spacing="10.0" style="-fx-background-color: #fff; -fx-border-color: #dedfe0;">
+ <padding>
+ <Insets bottom="5.0" left="15.0" right="5.0" top="5.0" />
+ </padding>
+ <children>
+ <HBox prefWidth="200.0" spacing="10.0">
+ <children>
+ <Button fx:id="btnGenValidateur" mnemonicParsing="false" onAction="#openFichierValidationDialog" styleClass="receive">
+ <cursor>
+ <Cursor fx:constant="HAND" />
+ </cursor>
+ </Button>
+ </children>
+ </HBox>
+ <HBox alignment="TOP_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS" />
+ </children>
+ </HBox>
+ <VBox prefHeight="437.0" prefWidth="928.0" style="-fx-background-color: transparent;" styleClass="main_screen" stylesheets="@../../../../styles/main_screen.css" VBox.vgrow="ALWAYS" />
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/main2.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/main2.fxml
new file mode 100644
index 0000000..8c6e129
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/main2.fxml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Menu?>
+<?import javafx.scene.control.MenuButton?>
+<?import javafx.scene.control.MenuItem?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+
+<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" style="-fx-background-color: transparent;" stylesheets="@../../../../styles/main_screen.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.controller.MainController">
+ <children>
+ <HBox style="-fx-background-color: transparent;" stylesheets="@../../../../styles/main_screen.css">
+ <children>
+ <HBox alignment="CENTER">
+ <children>
+ <ImageView fitHeight="48.0" fitWidth="190.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../images/icone_ins.png" />
+ </image>
+ </ImageView>
+ </children>
+ <padding>
+ <Insets right="30.0" />
+ </padding>
+ </HBox>
+ <HBox fx:id="myMenuBar">
+ <children>
+ <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Fichier">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../../../../../importation-validation-data/src/main/resources/images/Fichier.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ <items>
+ <MenuItem mnemonicParsing="false" onAction="#quit" text="Quitter" />
+ </items>
+ </MenuButton>
+ <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Paramètres">
+ <graphic>
+ <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../../../../../importation-validation-data/src/main/resources/images/143-02.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ <items>
+ <Menu mnemonicParsing="false" text="TypeFichier">
+ <items>
+ <MenuItem fx:id="validateurMenuItem" mnemonicParsing="false" onAction="#openImportTypeFichierDialog" text="Importer" />
+ <MenuItem fx:id="typeFichMenuItem" mnemonicParsing="false" onAction="#openTypeFichierDialog" text="Consulter" />
+ </items>
+ </Menu>
+ <MenuItem fx:id="configMenuItem" mnemonicParsing="false" onAction="#openConfigDialog" text="Configuration des repertoires" />
+ <MenuItem fx:id="validateurTypeFichMenuItem" mnemonicParsing="false" onAction="#openValidateurFichierDialog" text="Consulter les validateurs des typeFichier" />
+ <MenuItem fx:id="fichierValidationMenuItem1" mnemonicParsing="false" onAction="#openFichierValidationDialog" text="Générer les fichiers de validation" />
+ </items>
+ </MenuButton>
+ <MenuButton contentDisplay="TOP" disable="true" mnemonicParsing="false" text="Aide">
+ <graphic>
+ <ImageView disable="true" fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+ <image>
+ <Image url="@../../../../../../../../importation-validation-data/src/main/resources/images/143-05.png" />
+ </image>
+ </ImageView>
+ </graphic>
+ <items>
+ <MenuItem mnemonicParsing="false" text="A propos" />
+ </items>
+ </MenuButton>
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </HBox>
+ <HBox spacing="10.0" style="-fx-background-color: #fff; -fx-border-color: #dedfe0;">
+ <padding>
+ <Insets bottom="5.0" left="15.0" right="5.0" top="5.0" />
+ </padding>
+ <children>
+ <HBox prefWidth="200.0" spacing="10.0">
+ <children>
+ <Button fx:id="btnGenValidateur" mnemonicParsing="false" onAction="#openFichierValidationDialog" styleClass="receive">
+ <cursor>
+ <Cursor fx:constant="HAND" />
+ </cursor>
+ </Button>
+ </children>
+ </HBox>
+ <HBox alignment="TOP_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS" />
+ </children>
+ </HBox>
+ <VBox prefHeight="437.0" prefWidth="928.0" style="-fx-background-color: transparent;" styleClass="cover" stylesheets="@../../../../styles/style.css" />
+ </children>
+</VBox>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/main_1.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/main_1.fxml
new file mode 100644
index 0000000..5821b04
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/main_1.fxml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Menu?>
+<?import javafx.scene.control.MenuBar?>
+<?import javafx.scene.control.MenuItem?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="928.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.controller.MainController">
+ <children>
+ <VBox fx:id="mainContainer" prefHeight="200.0" prefWidth="100.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <MenuBar>
+ <menus>
+ <Menu mnemonicParsing="false" text="Fichier">
+ <items>
+ <MenuItem mnemonicParsing="false" onAction="#quit" text="Quitter" />
+ </items>
+ </Menu>
+ <Menu mnemonicParsing="false" text="Paramètres">
+ <items>
+ <Menu mnemonicParsing="false" text="TypeFichier">
+ <items>
+ <MenuItem fx:id="typeFichMenuItem" mnemonicParsing="false" onAction="#openTypeFichierDialog" text="Consulter" />
+ <MenuItem fx:id="validateurMenuItem" mnemonicParsing="false" onAction="#openImportTypeFichierDialog" text="Importer" />
+ </items>
+ </Menu>
+ <MenuItem fx:id="configMenuItem" mnemonicParsing="false" onAction="#openConfigDialog" text="Configuration des repertoires" />
+ <MenuItem fx:id="validateurTypeFichMenuItem" mnemonicParsing="false" onAction="#openValidateurFichierDialog" text="Consulter les validateurs des typeFichier" />
+ <MenuItem fx:id="fichierValidationMenuItem1" mnemonicParsing="false" onAction="#openFichierValidationDialog" text="Générer les fichiers de validation" />
+ </items>
+ </Menu>
+ <Menu mnemonicParsing="false" text="Aide">
+ <items>
+ <MenuItem mnemonicParsing="false" text="Afficher l'aide" />
+ <MenuItem mnemonicParsing="false" text="A propos de le l'application" />
+ </items>
+ </Menu>
+ </menus>
+ </MenuBar>
+ <VBox prefHeight="437.0" prefWidth="928.0" styleClass="cover" stylesheets="@../../../../styles/style.css" VBox.vgrow="ALWAYS" />
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/TypeFichierAdvancedSearchForm.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/TypeFichierAdvancedSearchForm.fxml
new file mode 100644
index 0000000..a363df9
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/TypeFichierAdvancedSearchForm.fxml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="30.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.controller.search.TypeFichierAdvancedSearchFormController">
+ <children>
+ <VBox prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <HBox layoutX="10.0" layoutY="45.0" spacing="5.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="42.0" prefHeight="17.0" prefWidth="57.0" text="participant">
+ <HBox.margin>
+ <Insets />
+ </HBox.margin></Label>
+ <TextField fx:id="participant" prefHeight="25.0" prefWidth="80.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox spacing="5.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" prefWidth="57.0" text="Libelle" />
+ <TextField fx:id="libelle" styleClass="square-border" stylesheets="@../../../../../styles/style.css" HBox.hgrow="ALWAYS" />
+ </children>
+ </HBox>
+ </children>
+ </VBox>
+ </children>
+ <padding>
+ <Insets top="10.0" />
+ </padding>
+</AnchorPane>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/TypeFichierSearchForm.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/TypeFichierSearchForm.fxml
new file mode 100644
index 0000000..4ffa428
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/TypeFichierSearchForm.fxml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="13.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.controller.search.TypeFichierSearchFormController">
+ <children>
+ <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <HBox spacing="5.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="42.0" prefWidth="57.0" text="Code" />
+ <TextField fx:id="code" prefWidth="80.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+ </children>
+ </HBox>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/ValidateurFichierAdvancedSearchForm.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/ValidateurFichierAdvancedSearchForm.fxml
new file mode 100644
index 0000000..c311dfe
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/ValidateurFichierAdvancedSearchForm.fxml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="30.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.controller.search.ValidateurFichierAdvancedSearchFormController">
+ <children>
+ <VBox prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <HBox spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" prefHeight="17.0" prefWidth="96.0" text="Nombre Position" />
+ <TextField fx:id="nombrePosition" prefHeight="25.0" prefWidth="71.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+ </children>
+ </HBox>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/ValidateurFichierSearchForm.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/ValidateurFichierSearchForm.fxml
new file mode 100644
index 0000000..a8d438e
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/controller/search/ValidateurFichierSearchForm.fxml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="13.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.controller.search.ValidateurFichierSearchFormController">
+ <children>
+ <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <HBox alignment="CENTER_LEFT" prefWidth="96.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="76.0" prefHeight="17.0" prefWidth="96.0" text="Type de fichier" />
+ <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="330.0" prefHeight="27.0" prefWidth="432.0" />
+ </children>
+ <VBox.margin>
+ <Insets bottom="10.0" />
+ </VBox.margin>
+ </HBox>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/ConfigEditForm.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/ConfigEditForm.fxml
new file mode 100644
index 0000000..3989ba3
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/ConfigEditForm.fxml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane id="AnchorPane" prefHeight="87.0" prefWidth="648.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.forms.ConfigEditFormController">
+ <children>
+ <VBox prefHeight="400.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <TitledPane collapsible="false" text="Informations sur les repertoires">
+ <content>
+ <VBox spacing="5.0">
+ <children>
+ <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Repertoire de stockage des validateurs XML" />
+ <TextField fx:id="outputDir" prefHeight="25.0" prefWidth="336.0" styleClass="square-border" stylesheets="@../../../../styles/style.css">
+ <HBox.margin>
+ <Insets left="10.0" right="2.0" />
+ </HBox.margin>
+ </TextField>
+ <Button fx:id="outButton" mnemonicParsing="false" onMousePressed="#outButtonOnClicked" prefHeight="25.0" prefWidth="25.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" text="...">
+ <HBox.margin>
+ <Insets right="10.0" />
+ </HBox.margin>
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ </Button>
+ </children>
+ </HBox>
+ </children>
+ </VBox>
+ </content>
+ </TitledPane>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/FichierValidationEditForm.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/FichierValidationEditForm.fxml
new file mode 100644
index 0000000..dc7e575
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/FichierValidationEditForm.fxml
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.PasswordField?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="249.0" prefWidth="648.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.forms.FichierValidationEditFormController">
+ <children>
+ <VBox spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <padding>
+ <Insets bottom="20.0" left="32.0" right="32.0" top="20.0" />
+ </padding>
+ <children>
+ <TitledPane collapsible="false" text="Informations sur le fichier de validation">
+ <content>
+ <VBox spacing="5.0">
+ <children>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Type de fichier" />
+ <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="330.0" prefWidth="327.0">
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin></AbstractSelectionItem>
+ </children>
+ </HBox>
+ <HBox layoutX="25.0" layoutY="87.0" prefHeight="100.0" prefWidth="200.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" prefWidth="205.0" text="Protéger fichier de validation ?" />
+ <CheckBox fx:id="isProtegeCheckBox" layoutX="235.0" layoutY="10.0" mnemonicParsing="false" text="Oui">
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin>
+ </CheckBox>
+ </children>
+ </HBox>
+ <HBox prefHeight="100.0" prefWidth="200.0" spacing="10.0">
+ <children>
+ <Label alignment="TOP_RIGHT" prefWidth="205.0" text="Clé de cryptage" />
+ <StackPane minWidth="328.0" prefHeight="150.0" prefWidth="200.0">
+ <children>
+ <TextField fx:id="showKeyToEncrypt" prefWidth="328.0" style="-fx-background-radius: 0%;" />
+ <PasswordField fx:id="keyToEncryptField" />
+ <ImageView fx:id="imageView" fitHeight="15.0" fitWidth="15.0" onMousePressed="#eyeOnMousePressed" pickOnBounds="true" preserveRatio="true" StackPane.alignment="CENTER_RIGHT">
+ <StackPane.margin>
+ <Insets right="5.0" />
+ </StackPane.margin>
+ <image>
+ <Image url="@../../../../images/oeil.png" />
+ </image>
+ </ImageView>
+ </children>
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin>
+ </StackPane>
+ </children>
+ </HBox>
+ <HBox layoutX="25.0" layoutY="57.0" prefHeight="100.0" prefWidth="200.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" prefWidth="205.0" text="Confirmation de la clé" />
+ <PasswordField fx:id="keyConfirmationField" minWidth="328.0">
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin>
+ </PasswordField>
+ </children>
+ </HBox>
+ <HBox layoutX="25.0" layoutY="117.0" prefHeight="100.0" prefWidth="200.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" prefWidth="205.0" text="Valider nom du fichier ?" />
+ <CheckBox fx:id="validateFileNameCheckBox" layoutX="235.0" layoutY="10.0" mnemonicParsing="false" text="Oui">
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin>
+ </CheckBox>
+ </children>
+ </HBox>
+<!-- <HBox alignment="CENTER_LEFT">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Repertoire de sortie" />
+ <TextField fx:id="OutDirTextField" prefHeight="25.0" prefWidth="336.0">
+ <HBox.margin>
+ <Insets left="10.0" right="2.0" />
+ </HBox.margin>
+ </TextField>
+ <Button fx:id="OutButton" mnemonicParsing="false" onMousePressed="#outButtonOnClicked" prefHeight="25.0" prefWidth="31.0" text="...">
+ <HBox.margin>
+ <Insets right="10.0" />
+ </HBox.margin>
+ </Button>
+ </children>
+ </HBox>-->
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </VBox>
+ </content>
+ </TitledPane>
+ <TitledPane fx:id="fileNameTitledPane" collapsible="false" text="Informations sur le nom du fichier à valider">
+ <content>
+ <VBox spacing="5.0">
+ <children>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Format de la date" />
+ <ComboBox fx:id="formatDate" prefWidth="327.0" style="-fx-background-radius: 0%;">
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin></ComboBox>
+ </children>
+ </HBox>
+<!-- <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Extension du fichier" />
+ <ComboBox fx:id="extensionFichier" prefWidth="327.0" style="-fx-background-radius: 0%;">
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin>
+ </ComboBox>
+ </children>
+ </HBox>-->
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Valeur maximale des tierces" />
+ <TextField fx:id="MaxValueTierceTextField" prefHeight="25.0" prefWidth="124.0" style="-fx-background-radius: 0%;">
+ <HBox.margin>
+ <Insets left="10.0" />
+ </HBox.margin>
+ </TextField>
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </VBox>
+ </content>
+ </TitledPane>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/ImportTypeFichierEditForm.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/ImportTypeFichierEditForm.fxml
new file mode 100644
index 0000000..1ac5df9
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/ImportTypeFichierEditForm.fxml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane id="AnchorPane" prefHeight="182.0" prefWidth="648.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.forms.ImportTypeFichierEditFormController">
+ <children>
+ <VBox layoutX="-6.0" layoutY="7.0" spacing="5.0" AnchorPane.bottomAnchor="-7.0" AnchorPane.leftAnchor="-6.0" AnchorPane.rightAnchor="6.0" AnchorPane.topAnchor="7.0">
+ <padding>
+ <Insets bottom="20.0" left="32.0" right="32.0" top="20.0" />
+ </padding>
+ <children>
+ <TitledPane collapsible="false" text="Informations sur le fichier à importer">
+ <content>
+ <VBox spacing="5.0">
+ <children>
+<!-- <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Format du fichier" />
+ <ComboBox fx:id="formatFichier" prefWidth="150.0" />
+ </children>
+ </HBox>-->
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Délimiteur de ligne" />
+ <ComboBox fx:id="delimiteurLigne" prefHeight="25.0" prefWidth="328.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Délimiteur colonne" />
+ <ComboBox fx:id="delimiteurColonne" prefHeight="25.0" prefWidth="328.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Fichier à importer" />
+ <TextField fx:id="fileToImportTextField" prefHeight="25.0" prefWidth="336.0" styleClass="square-border" stylesheets="@../../../../styles/style.css">
+ <HBox.margin>
+ <Insets left="10.0" right="2.0" />
+ </HBox.margin>
+ </TextField>
+ <Button fx:id="importButton" mnemonicParsing="false" onMousePressed="#importButtonOnClicked" prefHeight="25.0" prefWidth="31.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" text="...">
+ <HBox.margin>
+ <Insets right="10.0" />
+ </HBox.margin>
+ <font>
+ <Font name="System Bold" size="12.0" />
+ </font>
+ </Button>
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </VBox>
+ </content>
+ </TitledPane>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/StructureLigneEditForm.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/StructureLigneEditForm.fxml
new file mode 100644
index 0000000..7eb47d8
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/StructureLigneEditForm.fxml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="394.0" prefWidth="586.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.forms.StructureLigneEditFormController">
+ <children>
+ <VBox prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <children>
+ <TitledPane collapsible="false" text="Informations générales sur la structure de la ligne" VBox.vgrow="ALWAYS">
+ <content>
+ <VBox fx:id="formFieldContainer" spacing="5.0">
+ <children>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Position" />
+ <ComboBox fx:id="positionComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Code" />
+ <TextField fx:id="codeTextField" prefWidth="100.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Désignation" />
+ <TextField fx:id="designationTextField" prefWidth="280.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Type de donnée" />
+ <ComboBox fx:id="typeDonneeComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Taille" />
+ <TextField fx:id="tailleTextField" prefWidth="100.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="145.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Taille partie décimale" />
+ <TextField fx:id="taillePartieDecimalTextField" prefWidth="100.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox fx:id="dateFormatContainer" alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Format" />
+ <ComboBox fx:id="formatDateComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ <!--<TextField fx:id="formatDateTextField" prefWidth="100.0" />-->
+ </children>
+ </HBox>
+ <HBox fx:id="dateFormatContainer1" alignment="CENTER_LEFT" layoutX="25.0" layoutY="175.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefWidth="138.0" text="Séparateur de date" />
+ <ComboBox fx:id="delimiteurDateComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox fx:id="dateFormatContainer11" alignment="CENTER_LEFT" layoutX="25.0" layoutY="205.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="138.0" prefHeight="17.0" prefWidth="138.0" text="Séparateur de décimal" />
+ <ComboBox fx:id="delimiteurDecimalComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </VBox>
+ </content>
+ </TitledPane>
+ </children>
+ <padding>
+ <Insets bottom="20.0" left="32.0" right="32.0" top="20.0" />
+ </padding>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/TypeFichierEditForm.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/TypeFichierEditForm.fxml
new file mode 100644
index 0000000..26fb40f
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/TypeFichierEditForm.fxml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="182.0" prefWidth="648.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.forms.TypeFichierEditFormController">
+ <children>
+ <VBox layoutX="-6.0" layoutY="7.0" spacing="5.0" AnchorPane.bottomAnchor="-7.0" AnchorPane.leftAnchor="-6.0" AnchorPane.rightAnchor="6.0" AnchorPane.topAnchor="7.0">
+ <padding>
+ <Insets bottom="20.0" left="32.0" right="32.0" top="20.0" />
+ </padding>
+ <children>
+ <TitledPane collapsible="false" text="Informations générales sur le type fichier">
+ <content>
+ <VBox spacing="5.0">
+ <children>
+<!-- <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Format du fichier" />
+ <ComboBox fx:id="formatFichier" prefWidth="150.0" />
+ </children>
+ </HBox>-->
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Code TypeFichier" />
+ <TextField fx:id="codeTextField" minWidth="328.0" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Libellé" />
+ <TextField fx:id="libelleTextField" minWidth="328.0" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT">
+ <children>
+ <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Code Participant" />
+ <TextField fx:id="codeParticipantTextField" maxWidth="328.0" minWidth="328.0" prefHeight="25.0" prefWidth="336.0" styleClass="square-border" stylesheets="@../../../../styles/style.css">
+ <HBox.margin>
+ <Insets left="10.0" right="2.0" />
+ </HBox.margin>
+ </TextField>
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </VBox>
+ </content>
+ </TitledPane>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/ValidateurFichierEditForm.fxml b/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/ValidateurFichierEditForm.fxml
new file mode 100644
index 0000000..a89834b
--- /dev/null
+++ b/fdx_generator/target/classes/com/megatim/fdxgenerator/forms/ValidateurFichierEditForm.fxml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractNestedEntityTable?>
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="543.0" prefWidth="650.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatim.fdxgenerator.forms.ValidateurFichierEditFormController">
+ <children>
+ <VBox spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+ <padding>
+ <Insets bottom="20.0" left="32.0" right="32.0" top="20.0" />
+ </padding>
+ <children>
+ <TitledPane collapsible="false" text="Informations sur le validateur">
+ <content>
+ <VBox spacing="5.0">
+ <children>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" text="Type de fichier" />
+ <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="330.0" prefWidth="330.0" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Format du fichier de données" />
+ <ComboBox fx:id="dataTypeComboBox" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+ </children>
+ </HBox>
+ <HBox fx:id="delimiteurLigneHBox" alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Délimiteur de ligne" />
+ <ComboBox fx:id="delimiteurLigne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+ </children>
+ </HBox>
+ <HBox fx:id="delimiteurColonneHBox" alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-text-fill: black;" text="Délimiteur colonne" />
+ <ComboBox fx:id="delimiteurColonne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+ </children>
+ </HBox>
+ <HBox alignment="CENTER_LEFT" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" text="Nombre de position par ligne" />
+ <TextField fx:id="nombrePositionTextField" prefWidth="50.0" styleClass="square-border" stylesheets="@../../../../styles/style.css" />
+ </children>
+ </HBox>
+ <HBox prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+ <children>
+ <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-text-fill: black;" text="Fichier contient ligne d'entête ?" />
+ <CheckBox fx:id="headerPresentCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+ </children>
+ </HBox>
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding>
+ </VBox>
+ </content>
+ </TitledPane>
+ <TitledPane animated="false" collapsible="false" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="Structure des lignes" VBox.vgrow="ALWAYS">
+ <content>
+ <VBox prefHeight="200.0" prefWidth="100.0" spacing="5.0">
+ <children>
+ <HBox alignment="CENTER_RIGHT">
+ <children>
+ <CheckBox fx:id="saisieStructureLigneChecBox" mnemonicParsing="false" styleClass="square-border" stylesheets="@../../../../styles/style.css" text="Saisir la structure des ligne" />
+ </children>
+ </HBox>
+ <AbstractNestedEntityTable fx:id="structureLigneAbstractTable" prefHeight="252.0" prefWidth="526.0" VBox.vgrow="ALWAYS" />
+ </children>
+ <padding>
+ <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+ </padding></VBox>
+ </content>
+ </TitledPane>
+ </children>
+ </VBox>
+ </children>
+</AnchorPane>
diff --git a/fdx_generator/target/classes/images/143-01.png b/fdx_generator/target/classes/images/143-01.png
new file mode 100644
index 0000000..84f2182
--- /dev/null
+++ b/fdx_generator/target/classes/images/143-01.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/143-02.png b/fdx_generator/target/classes/images/143-02.png
new file mode 100644
index 0000000..ad7888f
--- /dev/null
+++ b/fdx_generator/target/classes/images/143-02.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/143-03.png b/fdx_generator/target/classes/images/143-03.png
new file mode 100644
index 0000000..4f9314e
--- /dev/null
+++ b/fdx_generator/target/classes/images/143-03.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/143-04.png b/fdx_generator/target/classes/images/143-04.png
new file mode 100644
index 0000000..80f3975
--- /dev/null
+++ b/fdx_generator/target/classes/images/143-04.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/143-05.png b/fdx_generator/target/classes/images/143-05.png
new file mode 100644
index 0000000..195001d
--- /dev/null
+++ b/fdx_generator/target/classes/images/143-05.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/Accuueil_Generator.jpg b/fdx_generator/target/classes/images/Accuueil_Generator.jpg
new file mode 100644
index 0000000..300e38e
--- /dev/null
+++ b/fdx_generator/target/classes/images/Accuueil_Generator.jpg
Binary files differ
diff --git a/fdx_generator/target/classes/images/Fichier.png b/fdx_generator/target/classes/images/Fichier.png
new file mode 100644
index 0000000..e390ade
--- /dev/null
+++ b/fdx_generator/target/classes/images/Fichier.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/Motif.png b/fdx_generator/target/classes/images/Motif.png
new file mode 100644
index 0000000..646d5d6
--- /dev/null
+++ b/fdx_generator/target/classes/images/Motif.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/Recherche.png b/fdx_generator/target/classes/images/Recherche.png
new file mode 100644
index 0000000..c9ca377
--- /dev/null
+++ b/fdx_generator/target/classes/images/Recherche.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/Reset.png b/fdx_generator/target/classes/images/Reset.png
new file mode 100644
index 0000000..07ebdb5
--- /dev/null
+++ b/fdx_generator/target/classes/images/Reset.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/add.png b/fdx_generator/target/classes/images/add.png
new file mode 100644
index 0000000..ee865fa
--- /dev/null
+++ b/fdx_generator/target/classes/images/add.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/close-icon.png b/fdx_generator/target/classes/images/close-icon.png
new file mode 100644
index 0000000..15cb17e
--- /dev/null
+++ b/fdx_generator/target/classes/images/close-icon.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/edit.png b/fdx_generator/target/classes/images/edit.png
new file mode 100644
index 0000000..72def46
--- /dev/null
+++ b/fdx_generator/target/classes/images/edit.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/generate.png b/fdx_generator/target/classes/images/generate.png
new file mode 100644
index 0000000..a2535ba
--- /dev/null
+++ b/fdx_generator/target/classes/images/generate.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/icone_ins.png b/fdx_generator/target/classes/images/icone_ins.png
new file mode 100644
index 0000000..372530d
--- /dev/null
+++ b/fdx_generator/target/classes/images/icone_ins.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/max-icon.png b/fdx_generator/target/classes/images/max-icon.png
new file mode 100644
index 0000000..191f0c2
--- /dev/null
+++ b/fdx_generator/target/classes/images/max-icon.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/min-icon.png b/fdx_generator/target/classes/images/min-icon.png
new file mode 100644
index 0000000..60178dc
--- /dev/null
+++ b/fdx_generator/target/classes/images/min-icon.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/next.png b/fdx_generator/target/classes/images/next.png
new file mode 100644
index 0000000..b3b83bb
--- /dev/null
+++ b/fdx_generator/target/classes/images/next.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/oeil.png b/fdx_generator/target/classes/images/oeil.png
new file mode 100644
index 0000000..bf5a58d
--- /dev/null
+++ b/fdx_generator/target/classes/images/oeil.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/previous.png b/fdx_generator/target/classes/images/previous.png
new file mode 100644
index 0000000..97dbf08
--- /dev/null
+++ b/fdx_generator/target/classes/images/previous.png
Binary files differ
diff --git a/fdx_generator/target/classes/images/trash.png b/fdx_generator/target/classes/images/trash.png
new file mode 100644
index 0000000..1c21ed9
--- /dev/null
+++ b/fdx_generator/target/classes/images/trash.png
Binary files differ
diff --git a/fdx_generator/target/classes/log4j.properties b/fdx_generator/target/classes/log4j.properties
new file mode 100644
index 0000000..8c3f444
--- /dev/null
+++ b/fdx_generator/target/classes/log4j.properties
@@ -0,0 +1,12 @@
+# Root logger option
+log4j.rootLogger=INFO, file
+
+log4j.appender.file=org.apache.log4j.RollingFileAppender
+log4j.appender.file.File=generateur.log
+log4j.appender.file.MaxFileSize=10GB
+log4j.appender.file.MaxBackupIndex=5
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
+
+# Log everything. Good for troubleshooting
+log4j.logger.org.hibernate=FATAL
\ No newline at end of file
diff --git a/fdx_generator/target/classes/styles/main-style.css b/fdx_generator/target/classes/styles/main-style.css
new file mode 100644
index 0000000..ef7fe30
--- /dev/null
+++ b/fdx_generator/target/classes/styles/main-style.css
@@ -0,0 +1,251 @@
+/*
+ * Empty Stylesheet file.
+ */
+
+.banner {
+ -fx-background-image: url(../images/Motif.png);
+ -fx-background-position: center center;
+ -fx-background-repeat: stretch;
+ -fx-background-size: cover;
+}
+
+.mainFxmlClass {
+
+}
+
+.table-view {
+ -fx-background-color: transparent;
+ -fx-border-color: rgb(209, 211, 212);
+ -fx-padding: 0;
+}
+
+.table-view .column-header,
+.table-view .column-header-background .filler {
+ -fx-background-color: #44507B;
+}
+
+.column-header {
+
+}
+
+.table-view .column-header-background{
+ -fx-padding: 0;
+}
+
+.table-view .column-header {
+ -fx-border-color: rgb(209, 211, 212);
+}
+
+.table-view .column-header .label{
+ -fx-text-fill: white;
+ -fx-font-weight: bold;
+ -fx-alignment: CENTER;
+ -fx-padding: 5;
+}
+
+.table-cell {
+ -fx-border-width: 0 1 0 1;
+ -fx-border-color: rgb(230, 231, 232);
+ -fx-padding: 5;
+ -fx-alignment: CENTER;
+}
+
+.table-row-cell{
+ -fx-background-color: #ffffff;
+}
+
+.table-row-cell:odd {
+ -fx-background-color: rgb(239, 239, 240);
+}
+
+.table-row-cell:selected {
+ -fx-background-color: rgba(214, 236, 219, 1);
+ -fx-background-insets: 0;
+ -fx-background-radius: 0;
+}
+
+.table-row-cell:selected .text {
+ -fx-fill: #000;
+}
+
+/*
+* Style for TextField
+*/
+.text-field {
+ -fx-background-color: #F6F7F9;
+ -fx-border-color: #30AFDC;
+ -fx-border-radius: 3px;
+ -fx-background-radius: 3px;
+}
+
+/*
+Tab Pane style
+*/
+
+.tab-pane > .tab-header-area > .headers-region > .tab:top {
+ -fx-border-color: #a3a7a8;
+ -fx-border-radius: 5 5 0 0;
+ -fx-background-color: white;
+ -fx-pref-height: 40px;
+ -fx-background-insets: 0;
+}
+
+.tab-pane > .tab-header-area > .headers-region > .tab:selected:top {
+ -fx-border-color: #a3a7a8 #a3a7a8 #a3a7a8 #a3a7a8;
+ -fx-border-width: 1 1 1 1;
+ -fx-border-radius: 5 5 0 0;
+ -fx-background-color: white;
+ -fx-pref-height: 40px;
+ -fx-background-insets: 0;
+ -fx-border-insets: 0;
+}
+
+.tab-pane > .tab-header-area > .headers-region > .tab:selected > .tab-container > .tab-label {
+ -fx-alignment: CENTER;
+ -fx-text-fill: #323232;
+ -fx-font-weight: bold;
+}
+
+.tab-pane > .tab-header-area > .headers-region > .tab > .tab-container > .tab-label {
+ -fx-alignment: CENTER;
+ -fx-text-fill: #323232;
+ -fx-font-weight: bold;
+}
+
+.tab-pane > .tab-header-area > .tab-header-background {
+ -fx-background-color: white;
+ -fx-border-color: #a3a7a8;
+ -fx-border-width: 0 0 1 0;
+ -fx-background-insets: 0;
+ -fx-pref-height: 45px;
+}
+
+/*
+* Title pane style
+*/
+.titled-pane {
+ -fx-border-color: rgba(199, 200, 202, 1);
+ -fx-text-fill: rgba(255, 255, 255, 1);
+}
+
+.titled-pane > .title {
+ -fx-background-radius: 0;
+ -fx-border-radius: 0;
+ -fx-background-color: rgba(68, 80, 123, 1);
+}
+
+.titled-pane > .title .text {
+
+}
+
+/* #2 */
+.titled-pane > .title > .text {
+ -fx-font-size: 14px;
+ -fx-background-color: rgba(114, 114, 116, 1);
+}
+
+/*
+* Search buttons
+*/
+
+.search {
+ -fx-background-color: rgba(220, 221, 223, 1);
+ -fx-background-radius: 0;
+ -fx-border-radius: 0;
+ -fx-text-fill: rgba(53, 52, 52, 1);
+}
+
+.search:hover {
+ -fx-background-color: rgba(220, 221, 223, .8);
+}
+
+.search:cancel {
+ -fx-text-fill: gray;
+}
+
+/* CHECKBOX */
+.check-box {
+ /* default properties */
+ selected-box-color: rgba(255, 255, 255, 1);
+ box-color: rgba(255, 255, 255, 1);
+ mark-color: white;
+}
+
+.check-box .box {
+ /* background color for selected checkbox */
+ -fx-border-width: 1px;
+ -fx-border-color: rgb(208, 208, 208);
+}
+
+.check-box:selected > .box {
+ /* background color for selected checkbox */
+ -fx-background-color: selected-box-color;
+}
+
+.check-box > .box {
+ /* background color of unselected checkbox */
+ -fx-background-color: box-color;
+ -fx-border-radius: 0px;
+ -fx-background-radius: 0px;
+}
+
+/* TEXTFIELD */
+
+.text-field {
+ -fx-background-color: rgba(208, 208, 208, 1);
+ -fx-border-radius: 0px;
+ -fx-background-radius: 0px;
+ -fx-text-fill: rgba(98, 98, 100, 1);
+ -fx-border-color: rgba(208, 208, 208, 1);
+ -fx-border-width: 1;
+}
+
+.text-field:disabled {
+ -fx-opacity: 0.8;
+}
+
+/* COMBOBOX */
+/* The ListCell that shows the selected item in a non-editable ComboBox */
+.combo-box,
+.combo-box:focus,
+.combo-box .list-cell {
+ -fx-background-color: rgba(208, 208, 208, 1);
+}
+
+.combo-box .list-view .list-cell {
+ -fx-background-color: rgba(255, 255, 255, 1);
+}
+
+/* The TextField that shows the selected item in an editable ComboBox */
+.combo-box .text-input {
+ -fx-background-color: rgba(208, 208, 208, 1);
+}
+
+.combo-box:disabled {
+ -fx-opacity: 0.8;
+}
+
+
+/* Style the arrow button area */
+.combo-box .arrow-button {
+ -fx-background-color: rgba(255, 255, 255, 1);
+ -fx-border-radius: 0px;
+ -fx-background-radius: 0px;
+ -fx-border-color: rgba(225, 225, 225, 1);
+ -fx-border-width: 1;
+}
+
+.combo-box .arrow-button .arrow {
+ -fx-background-color: rgba(162, 162, 162, 1);
+}
+
+/* Set the text color in the popup list for ComboBox to blue */
+.combo-box-popup .list-view .list-cell {
+ -fx-text-fill: rgba(98, 98, 100, 1);
+}
+
+/* Set the text color in the popup list for ComboBox to blue */
+.combo-box-popup .list-view .list-cell:hover {
+ -fx-text-fill: rgba(98, 98, 100, 1);
+ -fx-background-color: rgba(214, 236, 219, 1);
+}
\ No newline at end of file
diff --git a/fdx_generator/target/classes/styles/main_screen.css b/fdx_generator/target/classes/styles/main_screen.css
new file mode 100644
index 0000000..f9b625c
--- /dev/null
+++ b/fdx_generator/target/classes/styles/main_screen.css
@@ -0,0 +1,246 @@
+/*
+ * Empty Stylesheet file.
+ */
+
+@font-face {
+ font-family: 'Roboto';
+ src: url('../fonts/Roboto-Medium.ttf');
+}
+
+* {
+ -fx-font-family: 'Roboto';
+}
+
+.main_screen {
+ -fx-background-image: url('../images/Accuueil_Generator.jpg');
+ -fx-background-position: center center;
+ -fx-background-repeat: stretch;
+ -fx-background-size: cover;
+ -fx-border-color: #C5CFCE;
+}
+
+.dashboard {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/Tableau_de_bord_1.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.dashboard:hover {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/Barre_outils_hover-03.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.receive {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/generate.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.receive:hover {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/generate.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.update {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/Modif-01-01x.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.update:hover {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/Modif-01-01.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.generate {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/fichiers_generesx.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.generate:hover {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/Barre_outils_hover-01.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.treatment {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/tache.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+
+}
+
+.treatment:hover {
+ -fx-pref-width: 20px;
+ -fx-pref-height: 20px;
+ -fx-background-color: transparent;
+ -fx-background-image: url('../images/tache_hover.png');
+ -fx-background-size: 20px;
+ -fx-background-position: 0, 0, 0, 0;
+ -fx-background-repeat: stretch;
+}
+
+/*
+* Title pane style
+*/
+.titled-pane > .title {
+ -fx-background-color: #C5D6E0;
+ -fx-border-color: #C5D6E0;
+}
+
+.titled-pane > .title .text {
+
+}
+
+/* #2 */
+.titled-pane > .title > .text {
+ -fx-font-size: 14px;
+}
+
+/*
+* Menu-bar style
+*/
+/*
+.menu-item {
+ -fx-border-color: #fff;
+ -fx-margin: 0;
+}
+
+.menu .text,
+.menu-item .text {
+ -fx-fill: #000;
+ -fx-fill: #000;
+}
+
+.menu:hover .text,
+.menu:showing .text,
+.menu:focused .text,
+.menu-item:hover .text,
+.menu-item:showing .text,
+.menu-item:focused .text {
+ -fx-fill: #fff;
+ -fx-fill: #fff;
+ -fx-font-weight: bold;
+}
+
+
+.menu:hover,
+.menu:showing,
+.menu:focused,
+.menu-item:hover,
+.menu-item:showing,
+.menu-item:focused {
+ -fx-background-color: #BCD18A;
+}
+
+.menu:clicked {
+ -fx-background-color: #BCD18A;
+}
+*/
+/*
+* MENU BUTTON
+*/
+
+.menu-button > .arrow-button {
+ -fx-padding: 0;
+}
+
+.menu-button > .arrow-button > .arrow {
+ -fx-padding: 0;
+}
+
+.menu-button {
+ -fx-background-color: transparent;
+ -fx-background-radius: 7;
+ -fx-border-radius: 7;
+ -fx-border-width: 1;
+ -fx-border-color: transparent;
+ -fx-text-fill: white;
+ -fx-font-size: 11px;
+ -fx-padding: 0;
+}
+
+.menu-button:hover {
+ -fx-background-color: #ededee;
+ -fx-background-radius: 7;
+ -fx-border-radius: 7;
+ -fx-border-width: 1;
+ -fx-border-color: #F2F2F2;
+ -fx-text-fill: white;
+ -fx-font-weight: normal;
+}
+
+/* LABEL */
+
+.bottom-label {
+ -fx-text-fill: rgba(90, 90, 90, 1);
+ -fx-font-weight: bold;
+ -fx-font-size: 11px;
+}
+
+/* TEXTFIELD */
+
+.bottom-text-field {
+ -fx-background-color: #e0e4e3;
+ -fx-border-radius: 0px;
+ -fx-background-radius: 0px;
+ -fx-text-fill: rgba(0, 0, 0, 1);
+ -fx-border-color: #C5CFCE;
+ -fx-border-width: 1;
+ -fx-padding: 3;
+ -fx-font-size: 11px;
+ -fx-background-radius: 2;
+ -fx-border-radius: 2;
+}
+
+.bottom-text-field:disabled {
+ -fx-opacity: 0.8;
+}
\ No newline at end of file
diff --git a/fdx_generator/target/classes/styles/style.css b/fdx_generator/target/classes/styles/style.css
new file mode 100644
index 0000000..2b219de
--- /dev/null
+++ b/fdx_generator/target/classes/styles/style.css
@@ -0,0 +1,18 @@
+/*
+Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+Click nbfs://nbhost/SystemFileSystem/Templates/Other/CascadeStyleSheet.css to edit this template
+*/
+/*
+ Created on : 15 nov. 2022, 11:59:29
+ Author : STEPHANIE
+*/
+
+.cover{
+ -fx-background-image: url(../images/Accuueil_Generator.jpg);
+ -fx-background-position: center center;
+ -fx-background-repeat: stretch;
+ -fx-background-size: stretch;
+}
+.square-border {
+ -fx-background-radius:0%;
+}
\ No newline at end of file
diff --git a/fdx_generator/target/classes/styles/title-bar.css b/fdx_generator/target/classes/styles/title-bar.css
new file mode 100644
index 0000000..59cff2c
--- /dev/null
+++ b/fdx_generator/target/classes/styles/title-bar.css
@@ -0,0 +1,44 @@
+/*
+To change this license header, choose License Headers in Project Properties.
+To change this template file, choose Tools | Templates
+and open the template in the editor.
+*/
+/*
+ Created on : 3 mars 2022, 14:50:08
+ Author : MGT_DEV3
+*/
+
+.title-bar {
+ -fx-background-color: rgba(235, 235, 235, 1);
+}
+
+.title-bar-button {
+ -fx-background-color: transparent;
+ -fx-background-radius: 0;
+ -fx-border-radius: 0;
+ -fx-border-width: 0;
+}
+
+.title-bar-button:hover {
+ -fx-cursor: hand;
+ -fx-background-color: rgba(220, 221, 222, 1);
+ -fx-background-radius: 0;
+ -fx-border-radius: 0;
+ -fx-border-width: 0;
+}
+
+.title-bar-button-close {
+ -fx-cursor: hand;
+ -fx-background-color: transparent;
+ -fx-background-radius: 0;
+ -fx-border-radius: 0;
+ -fx-border-width: 0;
+}
+
+.title-bar-button-close:hover {
+ -fx-background-color: rgba(232, 17, 35, 1);
+ -fx-background-radius: 0;
+ -fx-border-radius: 0;
+ -fx-border-width: 0;
+}
+
diff --git a/fdx_generator/target/classes/update-description.txt b/fdx_generator/target/classes/update-description.txt
new file mode 100644
index 0000000..ec24b8b
--- /dev/null
+++ b/fdx_generator/target/classes/update-description.txt
@@ -0,0 +1,3 @@
+title of the update version 1.0
+use this as description version 1.0
+bla bla bla
diff --git a/fdx_generator/target/maven-archiver/pom.properties b/fdx_generator/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..8fa5804
--- /dev/null
+++ b/fdx_generator/target/maven-archiver/pom.properties
@@ -0,0 +1,5 @@
+#Generated by Maven
+#Thu Jun 18 17:23:39 WAT 2026
+version=1.0
+groupId=com.megatim.com.megatim.fdxgenerator
+artifactId=fdx-generator
diff --git a/fdx_generator/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/fdx_generator/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..40c687b
--- /dev/null
+++ b/fdx_generator/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,70 @@
+com\megatim\fdxgenerator\model\StructureLigne.class
+com\megatim\fdxgenerator\model\dao\ValidateurFichierDAO.class
+com\megatim\fdxgenerator\annotations\KeyToDecryptConstraint.class
+com\megatim\fdxgenerator\annotations\FormatDateConstraint.class
+com\megatim\fdxgenerator\controller\search\ValidateurFichierSearchFormController$1.class
+com\megatim\fdxgenerator\controller\search\TypeFichierSearchFormController.class
+com\megatim\fdxgenerator\utilities\DataToImport.class
+com\megatim\fdxgenerator\forms\ImportTypeFichierEditFormController.class
+com\megatim\fdxgenerator\pojo\Delimiteur.class
+com\megatim\fdxgenerator\controller\StructureLigneListDialogController.class
+com\megatim\fdxgenerator\annotations\FormatDateValidator.class
+com\megatim\fdxgenerator\annotations\TailleFormatDateValidator.class
+com\megatim\fdxgenerator\annotations\TailleFormatDateConstraint.class
+com\megatim\fdxgenerator\BriefLogFormatter.class
+com\megatim\fdxgenerator\controller\MainController$1.class
+com\megatim\fdxgenerator\forms\TypeFichierEditFormController.class
+com\megatim\fdxgenerator\model\dao\StructureLigneDAO.class
+com\megatim\fdxgenerator\controller\ImportTypeFichierEditDialogController.class
+com\megatim\fdxgenerator\controller\ConfigEditDialogController.class
+com\megatim\fdxgenerator\controller\TypeFichierListDialogController.class
+com\megatim\fdxgenerator\controller\MainController.class
+com\megatim\fdxgenerator\forms\FichierValidationEditFormController$1.class
+com\megatim\fdxgenerator\controller\ValidateurFichierEditDialogController$1.class
+com\megatim\fdxgenerator\model\dao\HibernateUtil.class
+com\megatim\fdxgenerator\service\ConfigurationService.class
+com\megatim\fdxgenerator\forms\StructureLigneEditFormController.class
+com\megatim\fdxgenerator\App.class
+com\megatim\fdxgenerator\annotations\FileNameValidator.class
+com\megatim\fdxgenerator\controller\table\TypeFichierTable.class
+com\megatim\fdxgenerator\controller\ValidateurFichierEditDialogController.class
+com\megatim\fdxgenerator\controller\search\TypeFichierAdvancedSearchFormController.class
+com\megatim\fdxgenerator\model\ImportFile.class
+com\megatim\fdxgenerator\model\dao\TypeFichierDAO.class
+com\megatim\fdxgenerator\utilities\AttributeFormatException.class
+com\megatim\fdxgenerator\AppUpdate.class
+com\megatim\fdxgenerator\controller\search\ValidateurFichierSearchFormController.class
+com\megatim\fdxgenerator\controller\FichierValidationEditDialogController$2.class
+com\megatim\fdxgenerator\service\ImportFileService.class
+com\megatim\fdxgenerator\utilities\ImportData.class
+com\megatim\fdxgenerator\controller\search\StructureLigneSearchFormController.class
+com\megatim\fdxgenerator\model\dao\AbstractDAO$1.class
+com\megatim\fdxgenerator\controller\search\StructureLigneAdvancedSearchFormController.class
+com\megatim\fdxgenerator\annotations\ConfigConstraint.class
+com\megatim\fdxgenerator\forms\ValidateurFichierEditFormController$1.class
+com\megatim\fdxgenerator\forms\ValidateurFichierEditFormController.class
+com\megatim\fdxgenerator\model\ValidateurFichier.class
+com\megatim\fdxgenerator\model\TypeFichier.class
+com\megatim\fdxgenerator\forms\FichierValidationEditFormController.class
+com\megatim\fdxgenerator\controller\table\StructureLigneTable.class
+com\megatim\fdxgenerator\enums\TypeDonnee.class
+com\megatim\fdxgenerator\model\FichierValidation.class
+com\megatim\fdxgenerator\service\TypeFichierService.class
+com\megatim\fdxgenerator\utilities\PaginationElts.class
+com\megatim\fdxgenerator\service\ValidateurFichierService.class
+com\megatim\fdxgenerator\controller\StructureLigneEditDialogController.class
+com\megatim\fdxgenerator\model\dao\AbstractDAO.class
+com\megatim\fdxgenerator\forms\ConfigEditFormController.class
+com\megatim\fdxgenerator\controller\search\ValidateurFichierAdvancedSearchFormController.class
+com\megatim\fdxgenerator\model\Configuration.class
+com\megatim\fdxgenerator\exceptions\ConfigException.class
+com\megatim\fdxgenerator\controller\TypeFichierEditDialogController.class
+com\megatim\fdxgenerator\controller\table\ValidateurFichierTable.class
+com\megatim\fdxgenerator\enums\DataType.class
+com\megatim\fdxgenerator\annotations\FileNameConstraint.class
+com\megatim\fdxgenerator\controller\FichierValidationEditDialogController$1.class
+com\megatim\fdxgenerator\annotations\KeyToDecryptValidator.class
+com\megatim\fdxgenerator\annotations\ConfigValidator.class
+com\megatim\fdxgenerator\service\StructureLigneService.class
+com\megatim\fdxgenerator\controller\FichierValidationEditDialogController.class
+com\megatim\fdxgenerator\controller\ValidateurFichierListDialogController.class
diff --git a/fdx_generator/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/fdx_generator/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..0cf8814
--- /dev/null
+++ b/fdx_generator/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,62 @@
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\annotations\FileNameValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\annotations\TailleFormatDateValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\service\ImportFileService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\utilities\AttributeFormatException.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\ValidateurFichierListDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\model\ImportFile.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\forms\FichierValidationEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\App.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\forms\ConfigEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\annotations\FileNameConstraint.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\FichierValidationEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\enums\DataType.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\model\StructureLigne.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\annotations\KeyToDecryptValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\search\TypeFichierSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\BriefLogFormatter.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\search\StructureLigneSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\model\Configuration.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\table\ValidateurFichierTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\annotations\FormatDateConstraint.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\pojo\Delimiteur.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\model\dao\HibernateUtil.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\ConfigEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\search\ValidateurFichierSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\search\TypeFichierAdvancedSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\TypeFichierListDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\model\dao\ValidateurFichierDAO.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\utilities\PaginationElts.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\table\TypeFichierTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\service\TypeFichierService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\annotations\ConfigConstraint.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\model\dao\AbstractDAO.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\annotations\KeyToDecryptConstraint.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\utilities\ImportData.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\StructureLigneListDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\model\TypeFichier.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\utilities\DataToImport.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\service\ConfigurationService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\AppUpdate.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\MainController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\model\dao\StructureLigneDAO.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\annotations\TailleFormatDateConstraint.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\search\ValidateurFichierAdvancedSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\annotations\ConfigValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\StructureLigneEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\service\ValidateurFichierService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\forms\StructureLigneEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\ImportTypeFichierEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\annotations\FormatDateValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\enums\TypeDonnee.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\table\StructureLigneTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\search\StructureLigneAdvancedSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\exceptions\ConfigException.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\model\dao\TypeFichierDAO.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\service\StructureLigneService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\forms\ValidateurFichierEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\ValidateurFichierEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\forms\TypeFichierEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\model\FichierValidation.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\model\ValidateurFichier.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\forms\ImportTypeFichierEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\generation-validateur-typefichier\src\main\java\com\megatim\fdxgenerator\controller\TypeFichierEditDialogController.java
diff --git a/fdx_generator/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/fdx_generator/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/fdx_generator/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
diff --git a/fdx_generator/target/test-classes/.netbeans_automatic_build b/fdx_generator/target/test-classes/.netbeans_automatic_build
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/fdx_generator/target/test-classes/.netbeans_automatic_build
--
Gitblit v1.10.0