Vous êtes sur la page 1sur 6

Ecole Hassania des Travaux Publics 2ème Année GI

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<Produit> 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<Produit> 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<Produit> 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<ElementDeStock>.

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 « guennoun@gmail.com », 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

Vous aimerez peut-être aussi