37 0 66KB
2ème Année GI
Ecole Hassania des Travaux Publics
Ateliers JEE Application de Gestion de Stock Nous souhaitons développer une application de gestion de stock pour une entreprise de commercialisation de produits informatiques. Partie 1 : Les produits L’entreprise commercialise un catalogue de produits avec deux entités métiers : Les marques des produits constituent une première entité. Chaque marque est définie par les éléments suivants
Nom de la marque
Origine de fabrication
Liste des références des produits de la marque
Un exemple d’une marque pourrait correspondre aux éléments :
Apple
Chine
(IMAC_32, I_MAC_27, IPHONE10,IPHONE 11, macbookpro13)
La deuxième entité métier correspond aux produits commercialisés par l’entreprise. Chaque produit est défini par les éléments suivants :
Référence du produit
La marque du produit
Dénomination
Prix
Poids
Volume
1
Un exemple d’un produit pourrait correspondre aux éléments suivants :
IPHONE10
Apple
Smartphone
10 000,00
0,2
0,0002
Nous souhaitons, dans un premier lieu, développer la partie correspondant à la gestion des produits. Pour cela, il faudra :
Créer les entités Marque et Produit
Créer les ejbs session façade permettant d’implanter les méthodes métiers de gestion suivantes : o Création d’une marque o Suppression d’une marque o Ajouter un produit à une marque o Lister l’ensemble des marques o Création d’un produit o Suppression d’un produit o Modification des éléments d’un produit (sauf bien sûr la clé primaire) o Lister les produits
En donnant l’ensemble des produits référencés
En donnant la liste des produits d’une marque
Créer les servlets correspondantes permettant d’interroger les ejbs session façade.
Commentaires :
Pour l’entité Marque, o La clé primaire est le nom de la marque (doit être signalé par l’annotation
@Id). o L’attribut correspondant à la liste des produits correspond à une liste des clés étrangères avec une relation de type 1,*. Pour ce faire utiliser l’annotation
@OneToMany avec un code du type :
2
@OneToMany public List ListeDesProduits=new ArrayList();
o Définir un constructeur prenant en argument le nom de la marque et le pays d’origine. Ne pas oublier de déclarer un constructeur sans argument.
Pour l’entité Produit, o La clé primaire est la référence du produit (doit être signalé par l’annotation
@Id).
L’attribut correspondant à la marque fait référence à une clé étrangère avec une relation de type *,1. Pour ce faire utiliser l’annotation @ManyToOne avec un code du type :
@ManyToOne
public Marque MarqueProduit;
o Définir un constructeur prenant en argument la référence du produit, la référence de la marque du produit, la dénomination, le prix, le poids, et le volume. Ne pas oublier de déclarer un constructeur sans argument en appelant super.
Pour l’EJB session facade pour l’entité Marque, coder les quatre méthodes de création, de suppression, de liste des marques, et de rajout de produit. o Pour la méthode de création, de préférence lui faire renvoyer un booléen. Prendre en argument le nom de la marque ainsi que le pays d’origine. Vérifier que le nom n’est pas référencé dans la base de données. Si c’est le cas, renvoyer faux, sinon appeler le constructeur et renvoyer vrai pour signifier la réussite de la création. o Pour la suppression, rester dans la même logique et renvoyer aussi un booléen. o Pour la méthode de listing des produits d’une marque, prendre en argument le nom de la marque. Utiliser la méthode find et renvoyer un type
List en utilisant le getter sur l’attribut correspondant. o Pour le rajout de produit, prendre en argument, une marque et un produit. Appeler la méthode add sur l’attribut listeProduits de marque, puis la méthode merge de l’entity manager pour mettre à jour la base de données.
Pour l’EJB session façade pour l’entité Produit, coder l’ensemble des méthodes. Faire attention : 3
o Pour la création d’un produit, il faut s’assurer que la référence du produit n’est pas référencée dans la BD, mais aussi s’assurer que le nom de la marque est référencé dans la BD. o Pour le listing global des produits, renvoyer un type : List en faisant appel à la méthode findAll.
Pour les servlets, prendre en compte les éléments suivants : o A titre d’exemple, prenant la servlet de création d’une marque,
Dans le get, on aura un formulaire avec les deux champs nom de la marque et pays d’origine.
Dans le post, on fera appel à la méthode de création (après injection de ref ou recherche jndi pour l’EJB session façade de l’entité Marque). On affichera un message de confirmation ou non selon le retour de l’exécution de la méthode.
o Pour la création de référence, il serait intéressant, pour minimiser les erreurs de saisie, d’utiliser un champ de type select pour la spécification de la marque. Dans le cas de réussite de la création ou de son échec, afficher le message correspondant. o Pour le listing, dans le get de la servlet, utiliser un champ de type select permettant de choisir la marque dont les produits seront affichés en plus d’un choix « Toutes les marques ». Une fois la sélection faite, le post appellera la méthode correspondante. Partie 2 : Gestion du stock Une fois que les produits et les marques sont bien référencés dans la BD, on souhaite maintenant implanter la partie du code qui va permettre de gérer le stock de l’entreprise avec une visibilité sur les disponibilités des produits. Pour cela, nous allons définir les classes java suivantes :
La classe ElementDeStock considérant 2 attributs. Le premier attribut RefProduit donne la référence du produit concerné, alors que le deuxième attribut Quantite donne la quantité de ce produit. Des getters et des setters seront définis pour les deux attributs. 4
La
classe
ListeDeStock
considérant
un
attribut
unique
de
type :
List. Une fois ces deux classes définies, on pourra définir l’entité métier correspondant au stock. Généralement une entreprise possède plusieurs stocks (par exemple, le stock d’exposition des magasins, les stocks dans les différents dépôts, le stock en route, etc.). Pour cela chaque stock sera défini par les éléments suivants
Nom du stock
Liste de stock
Un exemple d’un stock pourrait correspondre aux éléments :
StockMagasinCasablanca
((IMAC,10), (IPHONE,34), (macobookpro,8))
Etant donné que liste de stock est un attribut de l’entité Stock, il est nécessaire que les deux classes ElementDeStock et ListeDeStock implémentent l’interface Serializable. Nous allons, ensuite, définir un EJB session façade pour le traitement des stocks en implémentant les méthodes suivantes :
Création d’un stock en passant en argument le nom du stock
La prise en compte d’une entrée de stock en passant en argument le nom du stock, la référence du produit, ainsi que la quantité correspondante.
La prise en compte d’une sortie de stock
La modification du stock d’un élément avec une nouvelle quantité
La liste d’un stock donné ou la somme de l’ensemble des stocks
Par la suite, on définira les servlets de gestion de stock correspondantes
5
Modalités d’évaluation des ateliers JEE
Possibilité de travailler en binôme.
Retour en 3 phases o Etat d’avancement 1/3 : Dimanche 30 Mai, minuit o Etat d’avancement 2/3 : Dimanche 06 Juin, minuit o Retour Final : Dimanche 13 Juin, minuit
Type de retour pour chaque phase : o Un mail envoyé sur l’adresse « [email protected] », avec deux fichiers :
Code source sous forme d’un projet NetBeans (merci d’indiquer la version utilisée)
Un rapport sous forme d’une screen vidéo adressant les deux points suivants :
Survol et commentaire du code
Scénarii
d’exécution
en
considérant
les
différentes
fonctionnalités demandées et en couvrant les cas les plus significatifs
Les éventuelles améliorations ou extensions du projet
6