Sujet du projet
Vous devrez rendre une version améliorée du gestionnaire de compte bancaires que nous avons développé en TPs.
Dans ce projet, vous devrez compléter le TP en ajoutant les fonctionnalités suivantes :
- Ajoutez une table des clients de la banque
- Nous allons créer un entity bean Client qui va modéliser un client de la banque, avec son id, son nom, son prénom, son adresse, son téléphone.
- Des relations uniront un client et son (ses) compte(s).
- On veut pouvoir lister tous les clients, faire des recherches par client,
- pour chaque client, on veut pouvoir voir ses comptes, et tout l'historique de tous les comptes.
- pour chaque compte, on veut pouvoir voir les propriétaires et l'historique.
- Gérer une connexion/deconnexion par login/password et ne pas redemander de s'identifier à chaque fois. Vous devrez donc gérer dans la session utilisateur le fait que l'on est loggué ou pas (voir session HTTP dans vos cours web ou sur google).
- Selon que l'on est identifié comme administrateur ou comme utilisateur classique, on aura accès à des fonctionnalités différentes :
- l'administrateur peut créer/supprimer des comptes, créer/supprimer des clients, ajouter/enlever de l'argent sur les comptes, transférer, etc... et ce sur tous les comptes. C'est en gros ce que l'on a fait dans le TP.
- Un utilisateur ne peut gérer que ses propres comptes : les consulter, transférer de l'argent d'un de ses comptes vers n'importe quel compte (pensez aux RIB (ou IBAN)).
- On devra gérer plusieurs types de comptes avec de l'héritage : la classe CompteBancaire du TP deviendra abstraite, et vous ferez des sous classes pour un compte courant, un compte épargne, un compte joint, (plusieurs utilisateurs propriétaire !)
- Vous devrez utiliser l'héritage et le polymorphisme ! Et une requête polymorphe permettant de voir tous les comptes de la banque ou d'un client, quel que soit le type de compte !
- On devra pouvoir afficher tous les comptes ou seulement les comptes d'un certain type.
- Vous utiliserez pour la génération des tables une des stratégies vue en cours, qui supporte le polymorphisme.
- Vous fourniez une base de données remplie ou vous remplirez la base de données dès le lancement ou par un lien dans la page principale
i.e, au moins 20 comptes, 5 clients, des opérations, etc etc.... pas juste 4 comptes...
- Les opérations de transfert bancaire seront gérées par envoi de message JMS à un message driven bean qui est client du gestionnaire de compte bancaires. Comme dans le TP4
Facultatif mais recommandé :
- ++ inspirez-vous des projets et exemples montrés en cours pour proposer une présentation plus agréable (avec templating : inclusion de pages jsp pour des menus sur la gauche ou en haut, css etc). et/ou plus fluide (Ajax)
- + gérez les différentes alertes et erreurs pour rendre l'application robuste et ergonomique.
- + commentez votre code (Javadoc!)
Conseils pour le développement
Implémentez rapidement les fonctionnalités de base puis ajoutez de la fonctionnalité.
Si votre persistence manager est en mode "supprimer et créer" il supprimera les tables et les recréera, ce qui permettra à vos modèles d'évoluer.
Pour la fonctionnalité qui permet PAR PROGRAMME de peupler la base avec un jeu de test conséquent. Dans la Servlet qui sera appelée au début, par exemple, implémentez une action qui appelle la méthode peupleLaBaseXXXAvecJeuDeTest() dans un gestionnaireDeXXX,
Modalités de rendu
- Vous rendrez un répertoire intitulé Projet_EMSI_Marrakech_nom1_nom2_nom3 qui contient :
- Votre projet netbeans (faites un clean project avant, cela réduira sa taille),
- La base de données (prenez-là dans netbeans-derby, voir tp2 pour créer une base de données), donnez lui un nom qui contient vos noms de binome afin que tout le monde n'ait pas les memes noms,
- Un fichier word avec explications, les noms du binôme, description de l'architecture du projet netbeans, le nom de la base de données sur laquelle vous travaillez, comment il faut l'utiliser, logins, passwords pour tester, photos d'écrans, etc.
- Ce répertoire doit être rendu compressé (en rar ou en zip) et déposé quelque part où je puisse le récupérer (serveur ftp, page web, répertoire partagé dropbox, à vous de choisir)
- Je récapitule : à la fin, vous m'envoyez un mail avec un lien, je récupère le lien, le dezippe, et dedans j'ai tout ce qu'il faut pour corriger le projet. Si le 11 avril 20h00 je n'ai pas le fichier je mets zéro !