L3 - Génie Logiciel – Projet 2018-2019 – version révisée
Objectif du projet
Ce projet est à faire en binôme. Vous devez réaliser une application qui permet de consulter, et
d’éditer des données provenant d’une base de données au format H2, Northwind, fournie.
Votre application doit être programmée suivant le modèle MVVM et comporter des tests
unitaires (JUnit). Elle va comporter 5 projets Eclipse au total. Basez-vous sur les projets de
démarrage qui vous sont fournis.
Le projet infrastructure
Le premier projet Eclipse comporte le code d’infrastructure permettant de faire fonctionner
l’application. C’est lui qui contient la fonction main(), point d’entrée du programme. Il est
recommandé d’étudier brièvement le fonctionnement de ce projet.
Le projet Vues
Le projet Vues contient les vues (le V de MVVM). Les vues sont automatiquement créées par
le projet d’infrastructure après exécution d’un contrôleur. Ce projet a une dépendance vers le
projet contrôleur. En l’état actuel du code de démarrage qui vous est fourni, il a également une
dépendance sur le projet Modèle (cela ne contrevient pas aux principes de base).
Le projet Contrôleurs
Le projet Contrôleurs contient les différents traitements réalisés par votre application. Chaque
Contrôleur a une classe Vue correspondante dans le projet Vue. La correspondance est faite en
remplaçant (exactement) la chaine Contrôleur par la chaine Vue dans le nom canonique des
classes. Ainsi :
fc.Application.MVC.Controllers.SomeController
a une vue correspondante dont le nom est figé :
Advertisement
fc.Application.MVC.Views.SomeView
Le projet Contrôleur référence le projet Modèle, défini ci-après, et aucun autre. Il n’a pas
connaissance des vues. De même le projet Contrôleur n’utilise pas de dépendance vers les
bibliothèques SWT. Seul le projet Vues a une dépendance.
Le projet Modèle
Le quatrième projet contient le Modèle (le M de MVVM). Ce modèle doit intégrer notamment
un modèle fortement typé JPA, généré à partir de la base de données Northwind, en utilisant le
noyau d’accès Hibernate, comme nous l’avons vu en TP.
Le projet Modèle ne doit se lier à aucun autre projet Eclipse.
[email protected] - 2019
Si vous effectuez vos requêtes avec JPQL, votre projet Modèle devra contenir des fonctions
d’accès explicitement écrites par vos soins et le projet Modèles-de-Vue ne devra utiliser que ces
fonctions explicitement écrites. Les fonctions d’accès accèderont, à leur tour, au modèle-objet
JPA généré par Hibernate. Les requêtes JPQL doivent être écrites dans un fichier XML de
requêtes nommées, comme vu en cours.
Si vous effectuez vos requêtes avec la Criteria API, votre projet Modèle n’aura pas à contenir
des fonctions explicites en dehors d’un moyen de donner l’accès à la base de données. Les
Modèles-de-Vue pourront faire les requêtes directement avec la Criteria API.
Des points supplémentaires seront attribués en passant par la Criteria API.
Vous ne devez pas utiliser des requêtes natives SQL (créées via createNativeQuery).
Le projet de tests unitaires
C’est à vous de créer ce projet. Ce projet JUnit va tester les méthodes des Contrôleurs et, si
vous faites vos requêtes en JPQL, des méthodes sur le Modèle lui-même. Vous n’avez pas
Advertisement
besoin de tester le Modèle si votre code des Contrôleurs fait ses requêtes avec la Criteria API.
Ce projet est lié aux deux projets correspondants. Il n’est pas lié au projet infrastructure. Pour
tester, fournissez une infrastructure différente du projet infrastructure, qui ne créé pas de Vues
en réponse à l’exécution d’un contrôleur notamment.
Prérequis d’installation
Les outils de conception Eclipse SWT doivent être installés pour réaliser ce projet. Pour savoir
s’ils sont installés, aller dans File > New > Other…, et dans le texte de filtrage,
entrer « SWT ». Si vous ne voyez pas de catégorie nommée « SWT Designer » en dessous,
c’est que les outils ne sont pas encore installés.
Pour les installer, aller dans Help > Install New Software. Dans le champ Work with,
sélectionner :
2018-12 - http://download.eclipse.org/releases/2018-12
Si cette URL n’est pas visible/disponible, il se peut que vous ayez à ajouter un nouveau dépôt
au préalable (bouton Add, puis Name : 2018-12, Location:
http://download.eclipse.org/releases/2018-12, cliquer sur Add à la fin)
Pour installer les outils de conception SWT, aller dans la section General Purpose Tools et
sélectionner tous les items commençant par « SWT Designer » et « WindowBuilder », au total
au nombre d’une douzaine.
Application à réaliser
L’application que vous devez réaliser va comporter 1 fenêtre par vue. Chaque vue devra être
créée avec le wizard « Dialog » (pas Application Window ) d’SWT :
[email protected] - 2019
Voici la vue associée au contrôleur de démarrage (notez dans le code de l’infrastructure l’appel
Advertisement
au contrôleur de démarrage, sans paramètre additionnel) :
Cette dialog affiche la liste des clients de la base de données dans la liste déroulante du haut.
La table du bas affiche la liste des commandes (orders en anglais) du client sélectionné. La
dialog comprend en outre 2 boutons :
Voir détails commande permet de consulter les détails de la commande actuellement
sélectionnée dans la table, en basculant sur une autre vue :
[email protected] - 2019
Dans cette vue, cliquer sur l’entête de chaque colonne doit permettre de trier les détails de la
commande avec cette colonne. Le tri ne doit pas se faire avec le tri intégré du widget Table
d’SWT. Le tri doit se faire soit
avec une requête Criteria API fortement typée . C’est le scénario préférable.
avec une requête textuelle JPQL, à condition qu’une fonction proxy fortement typée
soit introduite sur la classe Modèle
Editer permet d’éditer le client sélectionné dans la liste déroulante en haut de la fenêtre. Ce
bouton permet de basculer vers une nouvelle vue :
Vous devez coder enfin une autre vue qui valide la mise à jour d’un client.
Pour basculer dans une nouvelle vue, vous devez interagir avec le projet infrastructure et lui
indiquer quelle est le nouveau Contrôleur qui prend la main. De là, le code d’infrastructure va :
créer le Contrôleur et l’exécuter avec les paramètres que vous avez spécifié dans
runController().
afficher la vue correspondante au modèle de vue en lui donnant le modèle de vue
retourné par le contrôleur.
Advertisement
Tests unitaires
[email protected] - 2019
Les méthodes de
vos Contrôleurs
votre Modèle
doivent être testées. Les méthodes explicitement écrites de votre Modèles seront testées. Cela,
seulement si vous avez choisi JPQL comme langage de requête (si vous avez choisi Criteria API
pour faire vos requêtes, vous n’aurez pas de méthodes explicites sur votre classe Modèle ; par
conséquent, il n’est pas nécessaire de faire des tests unitaires dessus).
Remise du projet
L’ensemble de votre Workspace Eclipse devra être envoyé sur l’espace de dépôt communities
(https://community-sciences.unilim.fr, rubrique Génie Logiciel) au plus tard le dimanche 19
mai 2019, sous forme d’une archive ZIP. Le modèle JPA doit être pré-généré dans votre projet
Modèle (c’est absolument capital, car votre projet doit compiler en l’état), mais les
configurations JPA et Hibernate doivent être valides pour permettre une génération manuelle
au moment de la correction. Le chemin de la base de données, à l’évidence non identique d’une
machine à l’autre, sera changée lors de la correction.
[email protected] - 2019