1 xooctory – projet gl aurélie cohe fabien fagoaga alice garcia matthieu joubert christelle...
TRANSCRIPT
![Page 1: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/1.jpg)
1
Xooctory – Projet GL
Aurélie COHE
Fabien FAGOAGA
Alice GARCIAMatthieu JOUBERT
Christelle MAZEREAU
Client : Xavier HANIN
![Page 2: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/2.jpg)
2
Plan
Présentation de l’application Architecture adoptée Refactoring et utilisation de Triplesec Réalisation de la persistance en base
(Hibernate) Configuration de l’application (Spring) Tests unitaires Conclusion
![Page 3: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/3.jpg)
3
Présentation du projet
![Page 4: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/4.jpg)
4
Objectif du projet (1/2)
Etat actuel de l’application :
Application
LDAP
Pers
ista
nce
![Page 5: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/5.jpg)
5
Objectif du projet (2/2)
Etat souhaité de l’application :
Application
LDAP Base de données
Pers
ista
nce
Pers
ista
nce
![Page 6: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/6.jpg)
6
Outils utilisés
Wicket : Framework Web permettant de développer des pages
HTML dynamiques en Java Utilisée pour les IHM Compréhension nécessaire pour pouvoir l’utiliser
Hibernate : Outil de mapping objet-relationnel Conseillé par notre client
Spring : Outil utile pour les configurations de l’application
Triplesec : Permet la communication avec un serveur LDAP
![Page 7: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/7.jpg)
7
Organisation du travail
Conception
Réalisation découpé en 2 sous-équipes :
Un binôme sur Wicket et Triplesec
Un trinôme sur Spring et Hibernate
Tests
![Page 8: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/8.jpg)
8
Architecture des paquetages (1/2)
![Page 9: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/9.jpg)
9
Architecture des paquetages (2/2)
Réorganisation des paquetages
Séparation des couches métier, vue et persistance
![Page 10: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/10.jpg)
10
Architecture des classes (1/3)
Actuellement : Utilisation de classes Triplesec dans les éléments
utilisés par Wicket : Modèles et Panels
Utilisation de modèles : adaptateur des données de la couche métier aux composants de Wicket
Composants de Wicket : objets permettant de modéliser un élément d’affichage Ex : wicket.markup.html.form.Button représente
un bouton
![Page 11: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/11.jpg)
11
Architecture des classes (2/3)
Exemple des rôles dans l'application existante :
Conséquences :o Modification de ces éléments afin qu’ils ne fassent
pas appel à Triplesec (directement ou indirectement)o Ajout d’une couche d’abstraction
![Page 12: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/12.jpg)
12
Architecture des classes (3/3)
Exemple des rôles :
![Page 13: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/13.jpg)
13
Refactoring - Méthodologie
Extraction du code spécifique à Triplesec dans les classes
Analyse du service rendu par ces portions de code
Création de l’interface
Remplacement du code spécifique à Triplesec par des appels aux méthodes de l’interface
Déplacement du code spécifique à Triplesec afin d’implémenter les méthodes de l’interface
![Page 14: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/14.jpg)
14
Refactoring (1/3)
PanelsConfiguration de l’application
Mise en placede l’arborescence
Code spécifique à Triplesec
Paquetage : org.xoocode.xooctory.web
![Page 15: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/15.jpg)
15
Refactoring (2/3)
Code spécifique à Triplesec
Fonction du code Triplesec :
o Sauvegarde
o Suppression
o Récupération de toutes les instances stockées dans la couche de persistance
Objets Triplesec :
o Equivalent aux modèles définies
![Page 16: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/16.jpg)
16
Refactoring (3/3)
Code initial
Code spécifique à Triplesec
Code indépendant
Code équivalent utilisant les fonctions de l’interface
![Page 17: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/17.jpg)
17
Refactoring – Exemple (1/3)
public PermissionPanel(String id, Imodel model, Tree tree) {super(id, model, tree);setLegend("Existing Permission");PermissionModel permissionModel = new PermissionModel(getPermission());getForm().setModel(new CompoundPropertyModel(permissionModel));[...]
}
protected void onDelete() {[Code Triplesec pour la suppression]
}
protected AdministeredEntity onSave() {[Code triplesec pour la sauvegarde]
}
private Permission getPermission() {return (Permission) ((DefaultMutableTreeNode)
getModelObject()).getUserObject();}
Exemple avec le panel gérant les permissions
![Page 18: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/18.jpg)
18
Refactoring – Exemple (2/3)
public PermissionPanel(String id, Imodel model, Tree tree) {super(id, model, tree);setLegend("Existing Permission");PermissionModel permissionModel = new
PermissionModel(getPermission());getForm().setModel(new CompoundPropertyModel(getPermission()));[...]
}
protected void onDelete() {
Locator.getSecurityManagementService().deletePermission(getPermission());}
protected AdministeredEntityModel onSave() {return Locator.getSecurityManagementService().savePermission(
getPermission(), (PermissionModel) getForm().getModelObject());}
private PermissionModel getPermission() {return (PermissionModel)
((DefaultMutableTreeNode) getModelObject()).getUserObject();}
![Page 19: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/19.jpg)
19
Refactoring – Exemple (3/3)
private TriplesecPermissionDAO permissionDAO = new TriplesecPermissionDAO();
[...]public AdministeredEntityModel savePermission(PermissionModel oldPermission,
PermissionModel newPermission) {return permissionDAO.save(oldPermission, newPermission);
}
public void deletePermission(PermissionModel permission) {permissionDAO.delete(permission);
}[...]
[...]public void delete(PermissionModel permission) {
[Code Triplesec pour la suppression]}
public AdministeredEntityModel save(PermissionModel oldPermission,PermissionModel newPermission) {
[Code Triplesec pour la sauvegarde]}[...]
TriplesecPermissionDAO
TriplesecSecurityManagementService
![Page 20: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/20.jpg)
20
Persistance en base de données
Utilisation d’Hibernate
Informations stockées dans la même base que celle déjà existante
Mapping des modèles réalisées dans les classes *Model
![Page 21: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/21.jpg)
21
![Page 22: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/22.jpg)
22
Architecture des classes à mapper
Choix technique : Mapping des classes AdministeredEntityModel et
LocalUserModel
![Page 23: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/23.jpg)
23
Choix techniques retenus (1/4)
La classe AdministeredEntityModel :
Mapping en représentant une table par classe concrète
Pas de table AdministeredEntity
Toutes les tables mappant des classes héritant de AdministeredEntityModel contiennent les données de la classe mère
![Page 24: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/24.jpg)
24
Choix techniques retenus (2/4)
La classe LocalUserModel : Hiérarhie dû au framework Triplesec 3 types d’utilisateurs : LocalUser, ExternalUser et
HauskeysUser
Mapping représentant une table par hiérarchie : une seule table User
Uniquement des utilisateurs LocalUser
![Page 25: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/25.jpg)
25
Choix techniques retenus (3/4)
Tables principales :
Ajout des classes faisant l’objet d’un mapping dans le fichier de configuration spring-config-hb.xml :
<property name="annotatedClasses"> <list> ... <value>org.xoocode.xooctory.web.directory.security.model.AdministeredEntityModel</value> <value>org.xoocode.xooctory.web.directory.security.model.ApplicationModel</value> <value>org.xoocode.xooctory.web.directory.security.model.GroupModel</value> <value>org.xoocode.xooctory.web.directory.security.model.LocalUserModel</value> <value>org.xoocode.xooctory.web.directory.security.model.PermissionModel</value> <value>org.xoocode.xooctory.web.directory.security.model.ProfileModel</value> <value>org.xoocode.xooctory.web.directory.security.model.RoleModel</value> <value>org.xoocode.xooctory.web.directory.security.model.UserModel</value> </list></property>
![Page 26: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/26.jpg)
26
Choix techniques retenus (4/4)
D’autres tables pour stocker les associations : Table Profile_Grants pour stocker l’ensemble des
privilèges associés aux profils Table ….
ATTENTION : diapo 22 -> modifié l’image
![Page 27: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/27.jpg)
27
Problème rencontré (1/2)
Tous les modèles héritent de AdministeredEntityModel et mapping représentant une table par classe concrète
@Entity@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)public abstract class AdministeredEntityModel implements Serializable {
private String creatorsName; private String modifiersName; private Date createTimestamp; private Date modifyTimestamp;
…}
Exception au démarrage de l’application :
org.springframework.beans.factory.BeanCreationException: Error creating bean with name'org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor':...nested exception is org.hibernate.AnnotationException: No identifier specified for entity:org.xoocode.xooctory.web.directory.security.model.AdministeredEntityModel
![Page 28: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/28.jpg)
28
Problème rencontré (2/2)
Causes : Pas d’identifiant précisé au modèle avec
l’annotation @Id La classe mère n’a pas d’identifiant, ils sont dans
les sous-classes Correction : Utilisation de l’annotation
@MappedSuperClass
@MappedSuperclasspublic abstract class AdministeredEntityModel implements Serializable {
private String creatorsName; private String modifiersName; private Date createTimestamp; private Date modifyTimestamp;
…}
![Page 29: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/29.jpg)
29
![Page 30: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/30.jpg)
30
Implémentation des DAO Hibernate (1/2)
Accès à la base de données Hibernate en utilisant un ensemble de DAO
Chaque DAO hérite de la classe HibernateDaoSupport du framework Spring : Accès à Hibernate par les méthodes de cette classe
public class HbGroupDAO extends HibernateDaoSupport {
@Transactional(readOnly = false)public AdministeredEntityModel add(GroupModel group) {
String id = (String) getHibernateTemplate().save(group);group.setId(id);return group;
}…
}
![Page 31: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/31.jpg)
31
Implémentation des DAO Hibernate (2/2)
Instanciation d’une SessionFactory obligatoire : Création d’un bean pour chaque DAO dans spring-
config.xml
<bean id="permissionDAO" class="org.xoocode.xooctory.web.directory.security.manager.
hibernate.HbPermissionDAO"> <property name="sessionFactory">
<ref bean="sessionFactory"/></property>
</bean>
Chaque bean possède une propriété SessionFactory récupérée à l’aide du bean sessionFactory présent dans spring-config-hb.xml
?????????? Vérifier le nom du fic
![Page 32: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/32.jpg)
32
Choix de l’implémentation (1/3)
Objectifs :
Facilité pour changer d’implémentation de la sécurité
Pas de modification de code source
Solution : utilisation de Spring pour faire la configuration
![Page 33: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/33.jpg)
33
Choix de l’implémentation (2/3)
Utilisation du fichier spring-config-security.xml
Création de 2 beans
Mise en commentaire du bean non choisi
![Page 34: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/34.jpg)
34
Choix de l’implémentation (3/3)
Création d’un locator :
![Page 35: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/35.jpg)
35
Les DAO Hibernate (1/3)
Homogénéité avec les DAO existants
![Page 36: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/36.jpg)
36
Les DAO Hibernate (2/3)
Ajout d’un bean pour chaque DAO dans le fichier spring-config.xml
![Page 37: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/37.jpg)
37
Les DAO Hibernate (3/3)
Dans spring-config-hb.xml :
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource"><ref local="dataSource"/></property> <property name="annotatedClasses"> <list> ... <value>org.xoocode.xooctory.web.directory.security.model.AdministeredEntityModel</value> <value>org.xoocode.xooctory.web.directory.security.model.ApplicationModel</value> <value>org.xoocode.xooctory.web.directory.security.model.GroupModel</value> <value>org.xoocode.xooctory.web.directory.security.model.LocalUserModel</value> <value>org.xoocode.xooctory.web.directory.security.model.PermissionModel</value> <value>org.xoocode.xooctory.web.directory.security.model.ProfileModel</value> <value>org.xoocode.xooctory.web.directory.security.model.RoleModel</value> <value>org.xoocode.xooctory.web.directory.security.model.UserModel</value> </list> </property>
![Page 38: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/38.jpg)
38
Les problèmes rencontrés
Dans spring-config-hb.xml
Dans spring-config.xml
![Page 39: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/39.jpg)
39
Solution provisoire
Erreur :
java.lang.ClassNotFoundException: ${jdbc.driver.class}
![Page 40: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/40.jpg)
40
![Page 41: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/41.jpg)
41
Tests existants
Avant Après
![Page 42: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/42.jpg)
42
Nouveaux tests
test
web
Une classe de tests par DAO
Ajout Mise à jour Consultation Suppression
![Page 43: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/43.jpg)
43
Scénarios des nouveaux tests Ajout d’un élément
Vérification que l’élément ait bien été créé
Modification de l’élément
Vérification que les modifications aient été prises en compte
Suppression de l’élément
Vérification que l’élément n’existe plus
![Page 44: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/44.jpg)
44
![Page 45: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/45.jpg)
45
Management – Diagramme de Gantt
![Page 46: 1 Xooctory – Projet GL Aurélie COHE Fabien FAGOAGA Alice GARCIA Matthieu JOUBERT Christelle MAZEREAU Client : Xavier HANIN](https://reader036.vdocuments.site/reader036/viewer/2022081504/551d9db5497959293b8d9968/html5/thumbnails/46.jpg)
46
Conclusion
Projet très intéressant
Découverte de nouveaux outils
Refactoring de code
Utilisation d’Hibernate (approfondissement du cours)
Merci à Xavier Hanin pour son aide