EXAMEN
Semestre : 1 X 2
Session : Principale X
Unité d’enseignement : Architecture systèmes d’information Module : Architecture SI II
Enseignants : Spring Team
Documents autorisés : OUI X NON Nombre de pages : 3
Calculatrice autorisée : OUI NON X Internet autorisée : OUI NON X
Option : 4 ERP-BI & 4 SIM Date : 06/01/2023 Heure : 09:00 Durée : 1h30
La validation de l’épreuve est appliquée à la base d’un code source exécutable.
Aucun code source non fonctionnel ne sera comptabilisé lors de la validation.
On vous propose d’implémenter une application simplifiée de gestion d’une assurance en ligne,
suivant le diagramme de classes ci-dessous :
Partie I (5 points) :
Implémenter les entités qui permettent de générer le schéma de la base de données comme illustré
dans le diagramme de classes ci-dessus sachant que :
1
• Notre base de données est MySQL. Les identifiants sont auto-générés par la stratégie
IDENTITY.
• L’association bidirectionnelle Evenement-Participant indique qu’un évènement peut avoir
plusieurs participants et qu’un participant peut participer à plusieurs évènements.
• L’association unidirectionnelle Evenement-Logistique indique qu’un évènement peut
allouer plusieurs logistiques et qu’un logistique peut être alloué à un seul évènement.
• L’énumération Tache doit être stockée en tant que chaîne de caractères dans la base de
données.
Partie II (15 points) :
- Développer les services nécessaires dans des beans Spring @Service, et exposer les
en tant que Web Services dans des beans de type @RestController.
- Vous pouvez tester les méthodes à travers Swagger ou Postman.
1) Ajouter 4 participants suivant les détails ci-dessous en respectant la signature suivante :
public Participant ajouterParticipant (Participant p) (1.5 pt)
nom prenom tache
Tounsi Ahmed ORGANISATEUR
Trablsi Sarra SERVEUR
Salhi Achraf ANIMATEUR
Daoud Ilhem ORGANISATEUR
2) Ajouter 3 évènements suivants en les affectant aux participants au moment de l’ajout en se
basant sur les détails ci-dessous :
NB : Le coût des évènements sera calculé et mis à jour à la question 6.
Evenement Participant
description dateDebut dateFin cout nom prenom
Sommet de la 2023-05- 2023-05-
francophonie 02 03 0 Tounsi Ahmed
Tounsi Ahmed
2023-09- 2023-09-
Festival Medina 07 10 0 Trablsi Sarra
2
Salhi Achraf
Festival des arts 2023-01- 2023-01- 0 Trablsi Sarra
15 19
Daoud Ilhem
En respectant la signature suivante :
public Evenement ajoutAffectEvenParticip (Evenement e) ( 2.5 pts)
3) Ajouter 3 logistiques en les affectant aux évènements correspondants en respectant la
signature suivante :
public Logistique ajoutAffectLogEvnm (Logistique l, String descriptionEvnmt) ( 2
pts)
description quantite reserve prixUnit Evenement
tente 2 false 580 Festival Medina
table 10 true 15 Festival Medina
chaise 50 true 5 Festival Medina
4) Afficher les logistiques réservés pour les évènements qui commencent entre deux dates en
respectant la signature suivante :
public List <Logistique> getLogistiquesDates (Date dateDeb, date dateFin) (2 pts)
5) Afficher la liste des organisateurs qui ont planifié des évènements et qui n’ont pas encore
réservé des logistiques en respectant la signature suivante :
public List <Participant> getParReservLogis ( ) (2 pts)
6) En utilisant SpringScheduler, proposer une méthode qui se déclenche toutes les 60
secondes et mettre à jour le cout de chaque évènement dans la base de données.
N.B : Le cout se calcule à travers la somme de prix unitaires de ses logistiques réservés.
public void calculCout ( ) (2.5 pts)
7) En utilisant Spring AOP implémenter un aspect qui permet d’afficher le temps de réponse
et les noms de méthodes exécutées ayant le type de retour void. (1.5 pts)
Bon courage