From e050f6e049e7bb53e7b8fba33f3d22cebdfae3b4 Mon Sep 17 00:00:00 2001 From: Thomas Rubini <74205383+ThomasRubini@users.noreply.github.com> Date: Tue, 7 Jun 2022 22:24:33 +0200 Subject: [PATCH 1/3] =?UTF-8?q?D=C3=A9but=20du=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index f5707e2..4bd83c6 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,22 @@ -[![Open in Visual Studio Code](https://classroom.github.com/assets/open-in-vscode-c66648af7eb3fe8bc4f294546bfd86ef473780cde1dea487d3c4ff354943c9ae.svg)](https://classroom.github.com/online_ide?assignment_repo_id=7908914&assignment_repo_type=AssignmentRepo) -# Développement d'application SAE 2.01 +**SAE 2.01, TEAM COMCOMBRE** -## IUT d’Aix-Marseille – Département Informatique Aix-en-Provence +Dans ce README, nous allons essayer de résumer rapidement tout ce que nous avons fait lors de cette SAE, afin de vous faciliter la compréhension du code +(Nous n'aurons peut-être pas le temps de tout expliquer ici) -- **Ressource:** [R2.02](https://cache.media.enseignementsup-recherche.gouv.fr/file/SPE4-MESRI-17-6-2021/35/5/Annexe_17_INFO_BUT_annee_1_1411355.pdf) -- **Responsables:** - - [Sébastien Nedjar](mailto:sebastien.nedjar@univ-amu.fr) - - [Cyril Pain-Barre](mailto:cyril.pain-barre@univ-amu.fr) -- **Besoin d'aide ?** - - Consulter et/ou créer des [issues](https://github.com/IUTInfoAix-R202/cours/issues). - - [Email](mailto:sebastien.nedjar@univ-amu.fr) pour une question d'ordre privée, ou pour convenir d'un rendez-vous physique. +## Interface : -## Création de votre fork +Notre interface peut se découper en trois fenêtres (notez le mot "fenêtre, car une fenêtre séparée ouvre effectivement) -La première chose que vous allez faire est de créer un fork d'un dépôt. Pour ce faire, rendez-vous sur le lien suivant : - +## DAO : +Le DAO est l'un des points forts de notre projet. Nous disposons de 3 DAO : JPA, JPA_MEMORY, et TEST +- JPA est le DAO utilisé officiellement par l'application lors de son exécution par un utilisateur +Les classes de ce DAO se trouvent dans le package `dao.jpa` +- JPA_MEMORY est un DAO très similaire à JPA (il se sert des mêmes classes), à l'exception qu'il utilise une autre PersistenceUnit (voir persistence.xml) afin de faire une base de données en mémoire, qui est utilisée lors du test backend (voir BackendTest.java) +Les classes de ce DAO sont les mêmes que le DAO JPA +- TEST est un DAO ne reposant sur aucune base de données, les méthodes DAO crééent et renvoient eux-mêmes les données. ce DAO est utilisé pour le test de l'interface utilisateur (afin de ne pas le coupler à une base de données) +Les classes de ce DAO se trouvent dans le package `dao.test` -Vous devrez créer un fork par équipe. Une fois le fork créé, vous devrez ajouter manuellement vos collègues comme propriétaire du dépôt. +## Tests : +Comme dit précédemment, les tests de l'application sont séparés en deux parties : Backend, et Application +- Les tests Backend servent à tester le DAO de manière isolée de l'application. Nous testons la structure du DAO, mais également les requêtes SQL faites. +- Les tests d'Application servent à tester l'application, certains sont isolés du DAO, et d'autres utilisent le DAO TEST afin d'être encore découplés de la base de données. \ No newline at end of file From 2b784817b1ed44003b5c466d35c94c0c3480d966 Mon Sep 17 00:00:00 2001 From: Thomas Rubini <74205383+ThomasRubini@users.noreply.github.com> Date: Tue, 7 Jun 2022 22:24:43 +0200 Subject: [PATCH 2/3] =?UTF-8?q?d=C3=A9placement=20du=20DAO=20de=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/fr/univ_amu/iut/{ => dao}/test/DAOAcademieTest.java | 2 +- .../java/fr/univ_amu/iut/{ => dao}/test/DAODisciplineTest.java | 2 +- .../java/fr/univ_amu/iut/{ => dao}/test/DAOFactoryTest.java | 2 +- .../java/fr/univ_amu/iut/{ => dao}/test/DAORessourceTest.java | 2 +- .../java/fr/univ_amu/iut/{ => dao}/test/DAOThematiqueTest.java | 2 +- src/main/java/fr/univ_amu/iut/{ => dao}/test/DAOUsageTest.java | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) rename src/main/java/fr/univ_amu/iut/{ => dao}/test/DAOAcademieTest.java (95%) rename src/main/java/fr/univ_amu/iut/{ => dao}/test/DAODisciplineTest.java (94%) rename src/main/java/fr/univ_amu/iut/{ => dao}/test/DAOFactoryTest.java (96%) rename src/main/java/fr/univ_amu/iut/{ => dao}/test/DAORessourceTest.java (96%) rename src/main/java/fr/univ_amu/iut/{ => dao}/test/DAOThematiqueTest.java (95%) rename src/main/java/fr/univ_amu/iut/{ => dao}/test/DAOUsageTest.java (98%) diff --git a/src/main/java/fr/univ_amu/iut/test/DAOAcademieTest.java b/src/main/java/fr/univ_amu/iut/dao/test/DAOAcademieTest.java similarity index 95% rename from src/main/java/fr/univ_amu/iut/test/DAOAcademieTest.java rename to src/main/java/fr/univ_amu/iut/dao/test/DAOAcademieTest.java index d8f95a1..8ab3f6a 100644 --- a/src/main/java/fr/univ_amu/iut/test/DAOAcademieTest.java +++ b/src/main/java/fr/univ_amu/iut/dao/test/DAOAcademieTest.java @@ -1,4 +1,4 @@ -package fr.univ_amu.iut.test; +package fr.univ_amu.iut.dao.test; import fr.univ_amu.iut.dao.DAOAcademie; import fr.univ_amu.iut.model.Academie; diff --git a/src/main/java/fr/univ_amu/iut/test/DAODisciplineTest.java b/src/main/java/fr/univ_amu/iut/dao/test/DAODisciplineTest.java similarity index 94% rename from src/main/java/fr/univ_amu/iut/test/DAODisciplineTest.java rename to src/main/java/fr/univ_amu/iut/dao/test/DAODisciplineTest.java index 0ed59fe..3e15d5a 100644 --- a/src/main/java/fr/univ_amu/iut/test/DAODisciplineTest.java +++ b/src/main/java/fr/univ_amu/iut/dao/test/DAODisciplineTest.java @@ -1,4 +1,4 @@ -package fr.univ_amu.iut.test; +package fr.univ_amu.iut.dao.test; import fr.univ_amu.iut.dao.DAODiscipline; import fr.univ_amu.iut.model.Discipline; diff --git a/src/main/java/fr/univ_amu/iut/test/DAOFactoryTest.java b/src/main/java/fr/univ_amu/iut/dao/test/DAOFactoryTest.java similarity index 96% rename from src/main/java/fr/univ_amu/iut/test/DAOFactoryTest.java rename to src/main/java/fr/univ_amu/iut/dao/test/DAOFactoryTest.java index 7088294..0873ff1 100644 --- a/src/main/java/fr/univ_amu/iut/test/DAOFactoryTest.java +++ b/src/main/java/fr/univ_amu/iut/dao/test/DAOFactoryTest.java @@ -1,4 +1,4 @@ -package fr.univ_amu.iut.test; +package fr.univ_amu.iut.dao.test; import fr.univ_amu.iut.dao.*; import fr.univ_amu.iut.dao.factory.DAOFactory; diff --git a/src/main/java/fr/univ_amu/iut/test/DAORessourceTest.java b/src/main/java/fr/univ_amu/iut/dao/test/DAORessourceTest.java similarity index 96% rename from src/main/java/fr/univ_amu/iut/test/DAORessourceTest.java rename to src/main/java/fr/univ_amu/iut/dao/test/DAORessourceTest.java index 0031db6..e57754c 100644 --- a/src/main/java/fr/univ_amu/iut/test/DAORessourceTest.java +++ b/src/main/java/fr/univ_amu/iut/dao/test/DAORessourceTest.java @@ -1,4 +1,4 @@ -package fr.univ_amu.iut.test; +package fr.univ_amu.iut.dao.test; import fr.univ_amu.iut.dao.DAORessource; import fr.univ_amu.iut.model.Ressource; diff --git a/src/main/java/fr/univ_amu/iut/test/DAOThematiqueTest.java b/src/main/java/fr/univ_amu/iut/dao/test/DAOThematiqueTest.java similarity index 95% rename from src/main/java/fr/univ_amu/iut/test/DAOThematiqueTest.java rename to src/main/java/fr/univ_amu/iut/dao/test/DAOThematiqueTest.java index 2a674d6..c93c6c7 100644 --- a/src/main/java/fr/univ_amu/iut/test/DAOThematiqueTest.java +++ b/src/main/java/fr/univ_amu/iut/dao/test/DAOThematiqueTest.java @@ -1,4 +1,4 @@ -package fr.univ_amu.iut.test; +package fr.univ_amu.iut.dao.test; import fr.univ_amu.iut.dao.DAOThematique; import fr.univ_amu.iut.model.Thematique; diff --git a/src/main/java/fr/univ_amu/iut/test/DAOUsageTest.java b/src/main/java/fr/univ_amu/iut/dao/test/DAOUsageTest.java similarity index 98% rename from src/main/java/fr/univ_amu/iut/test/DAOUsageTest.java rename to src/main/java/fr/univ_amu/iut/dao/test/DAOUsageTest.java index 48405e2..7d170d9 100644 --- a/src/main/java/fr/univ_amu/iut/test/DAOUsageTest.java +++ b/src/main/java/fr/univ_amu/iut/dao/test/DAOUsageTest.java @@ -1,4 +1,4 @@ -package fr.univ_amu.iut.test; +package fr.univ_amu.iut.dao.test; import java.util.ArrayList; import java.util.List; From feb31e48f592356ebb1b3de47a39f32f369514e5 Mon Sep 17 00:00:00 2001 From: Thomas Rubini <74205383+ThomasRubini@users.noreply.github.com> Date: Tue, 7 Jun 2022 22:25:44 +0200 Subject: [PATCH 3/3] Un peu de documentation --- src/main/java/fr/univ_amu/iut/DataMain.java | 5 ++++- src/main/java/fr/univ_amu/iut/Launcher.java | 5 +++++ .../univ_amu/iut/dao/factory/DAOFactoryProducer.java | 2 +- .../java/fr/univ_amu/iut/secret/SecretProvider.java | 6 ++++++ src/main/java/module-info.java | 2 +- src/test/java/fr/univ_amu/iut/BackendTest.java | 11 +++++++++++ 6 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/main/java/fr/univ_amu/iut/DataMain.java b/src/main/java/fr/univ_amu/iut/DataMain.java index d51ca1c..50886c7 100644 --- a/src/main/java/fr/univ_amu/iut/DataMain.java +++ b/src/main/java/fr/univ_amu/iut/DataMain.java @@ -12,7 +12,10 @@ import fr.univ_amu.iut.model.*; public class DataMain { - // A executer une seule fois, pour populate la base de données + /* + Code utilitaire que nous avons utilisé pendant le développement de l'application, afin de remplir la base de donnée + **SUPPRIMER LES TABLES DE LA BASE DE DONNEES AVANT D'EXECUTER** + */ public static void main(String[] args) { DAOFactory daoFactory = DAOFactoryProducer.getFactory(DAOType.JPA); diff --git a/src/main/java/fr/univ_amu/iut/Launcher.java b/src/main/java/fr/univ_amu/iut/Launcher.java index c6c7065..1d0fa2a 100644 --- a/src/main/java/fr/univ_amu/iut/Launcher.java +++ b/src/main/java/fr/univ_amu/iut/Launcher.java @@ -1,6 +1,11 @@ package fr.univ_amu.iut; public class Launcher { + + /* + Déployer l'application au travers d'un fichier .jar exécutable nous demandait + une classe main sans extends (sans lien avec JavaFX) + */ public static void main(String[] args) throws Exception { AppMain.main(args); } diff --git a/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java b/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java index 55e2252..7d2dbc5 100644 --- a/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java +++ b/src/main/java/fr/univ_amu/iut/dao/factory/DAOFactoryProducer.java @@ -1,7 +1,7 @@ package fr.univ_amu.iut.dao.factory; import fr.univ_amu.iut.dao.jpa.DAOFactoryJPA; -import fr.univ_amu.iut.test.DAOFactoryTest; +import fr.univ_amu.iut.dao.test.DAOFactoryTest; public class DAOFactoryProducer { public static DAOFactory getFactory(DAOType type) { diff --git a/src/main/java/fr/univ_amu/iut/secret/SecretProvider.java b/src/main/java/fr/univ_amu/iut/secret/SecretProvider.java index 630e1e0..0d0bcdd 100644 --- a/src/main/java/fr/univ_amu/iut/secret/SecretProvider.java +++ b/src/main/java/fr/univ_amu/iut/secret/SecretProvider.java @@ -1,5 +1,11 @@ package fr.univ_amu.iut.secret; + +/* +SecretProvider : API permettant de vérifier si le mot de passe entré est le bon +Nous avons fait une interface afin de pouvoir créer facilement d'autres implémentations dans le futur +(comme par exemple une implémentation faisant une requête web pour vérifier le mot de passe auprès d'un serveur) + */ public interface SecretProvider { static SecretProvider getInstance(){ diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 9028ea3..e2754f0 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -17,5 +17,5 @@ open module francefx { exports fr.univ_amu.iut; exports fr.univ_amu.iut.dao; exports fr.univ_amu.iut.dao.factory; - exports fr.univ_amu.iut.test; + exports fr.univ_amu.iut.dao.test; } \ No newline at end of file diff --git a/src/test/java/fr/univ_amu/iut/BackendTest.java b/src/test/java/fr/univ_amu/iut/BackendTest.java index 4a65f06..469b8fa 100644 --- a/src/test/java/fr/univ_amu/iut/BackendTest.java +++ b/src/test/java/fr/univ_amu/iut/BackendTest.java @@ -11,6 +11,13 @@ import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +/* +Tests unitaires servants à tester le backend JPA de l'application +On utilise un JPA modifié (une persistenceUnit différente) +afin de faire une base de données en mémoire* +*/ + + public class BackendTest { private static DAOFactory daoFactory; @@ -110,6 +117,10 @@ public class BackendTest { assertThat(list.get(0).getNom()).isEqualTo("Second usage"); } + /* + On essaye d'insérer la même donnée de nouveau (2 fois pour être sûr, + après tout les tests sont faits pour vérifier que l'application est robuste) + */ @Test public void should_not_insert_again(){ daoFactory.createDAOThematique().insert(Thematique.ExpressionOrale);