Projet Java EE6 Miage MBDS/NTDP 2012-2013

De $1

 

Introduction

Dans le cadre de ce cours, deux projets sont proposés, et des projets personnalisés sont aussi possibles. Le projet "serveur de streaming" peut être commun avec le cours "Web 2.0", dans ce cas, à la date de rendu, il suffira de me montrer où vous en êtes, il ne s'agira pas d'une remise à proprement parler.

Sujet No1 : un gestionnaire de compte bancaires en ligne

Vous allez réaliser un gestionnaire de comptes bancaires qui est la suite des TPs. Mais avec des relations clients-comptes-opérations bancaires, + gestion de connexion, beaucoup de données (plusieurs pages de comptes, de clients, etc)  et aussi que ce soit joli !

Réalisez le site d'une banque

Vous complèterez le TP 4  sur les comptes bancaires, avec la contrainte de gérer les points suivants :

  1. Vous devrez gérer des sessions utilisateurs, avec connexion par login/password. Une fois loggé, les champs pour entrer le login et le password ne sont plus affichés, puisqu'une session est ouverte. Voir le projet d'exemple qui est sur la page du cours. Voir aussi le cours JSF2 sur les SessionScoped. Si on se loggue admin on a accès à toutes les fonctionnalités, à tous les comptes, à tous les utilisateurs. Si on se loggue en tant que client de la banque on a accès qu'à ses comptes, on peut déposer/retirer/transférer mais que sur ses comptes. On ne peut pas créer/supprimer de compte.
  2. Vous appliquerez un "layout" aux pages, avec un menu sur la gauche et un bandeau au-dessus, en utilisant les templates (cf tp2) ou bien des composants de layout de la librairie PrimeFaces (comme dans les démos en ligne sur primefaces.org)
  3. Vous devrez gérer plusieurs types de comptes bancaires, avec de l'héritage entre entity beans. Vous devrez proposer d'afficher tous les comptes ou seulement un type de compte particulier. Ex : compte courant, compte épargne avec un taux d'intérêt, compte joint qui a deux propriétaires, etc.Bien entendu, faire de l'héritage signifie que vous ne devez pas avoir une variable String type !!!! Ou une énumération quelconque avec écrit en dur le type de compte. Pour le compte courant, vous simulerez à l'aide d'un EJBTimer le fait que toutes les 10 secondes le compte rapporte de l'arge
  4. On pourra consulter ses propres comptes (en fonction du login/password), mais pas ceux des autres, lorsqu'on est connecté en tant qu'utilisateur "normal".
  5. On ne pourra transférer de l'argent qu'entre ses propres comptes bancaires. Vous utiliserez des listes pré-remplies ou des champs avec auto-complétion ou un autre système ergonomique. On ne veut pas ici de champs où on doit saisir les ids des comptes.
  6. L'administrateur (repéré par son login/password, prenez admin/admin par ex) est le seul qui peut créer des clients, des comptes, les supprimer, etc. Lui seul peut tout voir, tout faire.
  7. L'affichage de la liste des comptes devra utiliser un système de "Lazy Loading" pour afficher les comptes dans une datatable, voir les exemples de datatables primefaces sur leur site. Si on a 500 comptes bancaires, on veut les afficher par exemple 10 par 10, chaque fois qu'on change de page on doit lancer une nouvelle requête. 
  8. OBLIGATOIRE : au moins 500 comptes bancaires et 50 utilisateurs, vous pourrez utiliser le site http://www.generatedata.com pour générer un .csv avec des comptes ou mieux, transformer le .csv en code Java pour inclure dans un EJB @SIngleton @Startup comme on a fait en TP. 
     

Sujet No 2 : un outil de streaming de mp3 à la Deezer

Ce sujet pourra être soit rendu en tant que projet du cours "composants logiciels pour l'entreprise", soit juste présenté et complété par la suite avec des web services et des clients divers (android, html5/js, iphone, etc).

Imaginez que vous vouliez écouter vos mp3 situés chez vous depuis une page web ou un téléphone. Un Itunes dans une page web ! On veut pouvoir parcourir les chansons, les artistes, les albums, les favoris, par années etc.. En gros, une navigation selon les tags ID3 (il existe plusieurs librairies qui savent les extraire en java). Mais comme certains préfèrent organiser leurs mp3 en répertoires et sous répertoires, on fera une double classification : par tags ID3 mais aussi par répertoires et noms de fichier.

On veut pouvoir aussi faire des playlists (des listes de lecture) pour jouer des morceaux dans un ordre pré-établi.

Plus tard dans la partie "amélioration à la web 2.0", dans le cadre du projet web 2.0 on voudra partager ces playlist avec des amis, il faudra donc gèrer des amis, des invitations, des listes de partage. Les amis voudront voir les derniers ajouts, etc. Cette partie est facultative pour le moment, à moins que vous ne souhaitiez en tenir compte dès maintenant pour le modèle de données et les services.

Ce projet sera rendu "en l'état" lors de la date limite de remise du projet EJB mais il est clair qu'il sera "ré-évalué" si à la fin du cours web 2, vous avez modifié la partie back end et qu'elle est nettement plus aboutie. En effet, ce projet est prévu pour être aussi le projet du cours web 2.0 (on y adjoindra des web services REST pour le rendre utilisable par des clients externes par ex sur téléphone, et on utilisera des web services externes comme musicbrainz). Les parties requises pour la partie web 2.0 seront précisées plus tard. Pour le moment concentrez-vous sur la partie back-end et proposez une interface web simple pour tester les fonctionnalités.

Si on utilise la méthode de conception agile, on peut déterminer l'ordre dans lequel les fonctionnalités de base devront être implémentées (vous devez les tester dans cet ordre au fur et à mesure de l'implémentation, on ne passe pas à la suite tant qu'une fonctionnalité ne marche pas).

Vous pourrez vous inspirer du logiciel open gratuit subsonic.org par exemple, pour trouver des idées. Il vient avec des clients android, iphone, etc.

Priorité Nom
10 En tant qu’utilisateur, je peux visualiser la liste des catégories
20 En tant qu’utilisateur, je peux visualiser la liste des artistes
30 En tant qu’utilisateur, je peux consulter la liste des albums d’une catégorie
40 En tant qu’utilisateur, je peux consulter la liste des albums d’un artiste
45 En tant qu’utilisateur, je peux consulter la liste des pistes d’un album
45 En tant qu’utilisateur, je peux jouer un morceau à l'aide d'un lecteur audio HTML5 ou Flash ou autre (http://www.jplayer.org/ etc.)
50 En tant qu’utilisateur, je peux rechercher un album
50 En tant qu'admin je peux indiquer les répertoires à scanner, et reconstruire la base de données
60 En tant qu’utilisateur, je peux consulter la liste des playlists enregistrées
70 En tant qu’utilisateur, je peux charger une playlist existante
80 En tant qu’utilisateur, je peux créer et enregistrer une nouvelle playlist
90 En tant qu’utilisateur, je peux ajouter des pistes à une playlist
95 En tant qu’utilisateur, je peux réordonner les pistes d’une playlist
97 En tant qu’utilisateur, je peux enlever des pistes à une playlist
100 En tant qu’utilisateur, je peux sauvegarder une playlist
110 En tant qu’utilisateur, je peux supprimer une playlist

Exemples de photos d'écrans et explications de projets rendus l'an dernier

S'il vous plait, vous pouvez contacter ces étudiants pour récupérer leurs projets mais si c'est pour me les rendre tels quels -> aucun intérêt ! En plus je les connais par coeur ceux-là... Je donne ces deux PDFs  pour que vous puissiez vous faire une idée de ce qui est attendu et de ce à quoi les bons projets de l'an dernier ressemblaient. 

Ressources intéressantes

  • Librairie pour lire les tags ID3 (et les écrire, au cas où...) des fichiers mp3 : http://jid3.blinkenlights.org/
    • Cette archive : ExemplesUtilisationLibJId3.zip tirée d'un projet équivalent, contient des bouts de code pour analyser récursivement à partir d'un message driven bean un ensemble de répertoires. Le fichier Test.java montre un exemple d'utilisation de la lib jid3.

Modalités de remise du projet

Date limite : début janvier, remise en main propre après démo personnalisée avec vos enseignants. La date précise arrive bientôt.

Vous devrez fournir un zip ou un rar portant votre nom, par exemple projetJavaEEMBDS2012-nom1-nom2.zip. Le projet est à faire en binome ou seul éventuellement. Si vous récupérez du code de certains de vos collègues ou sur le net, vous devez l'indiquer. Sinon ce sera assimilé à de la triche et vous serez sanctionnés. Vous avez parfaitement le droit de partager des bouts de code ou de réutiliser du code du net, il faut juste le dire.

Le zip (ou rar) devra contenir :

  1. Les sources du projet, faites un clean avant, pas la peine de me rendre des .class
  2. La base de données n'est pas obligatoire mais il est conseillé de la rendre, donnez lui le nom de votre binome. Si vous avez déjà une base de données  dans votre projet, supprimez persistence.xml, glassfish-resources.xml, et faites new/persistence unit sur votre projet après avoir créé la nouvelle base de données avec le bon nom. Demandez de l'aide à vos encadreurs en cas de soucis.
  3. Un readme d'explications, qui contient un résumé de ce que vous avez fait : points forts, points faibles, logins passwords, nom de la base, log et pass de la base, etc
  4. Des photos d'écrans.
  5. Si votre projet est particulièrement réussi, j'aimerais aussi avoir une petite vidéo sur youtube qui montre votre projet en train de fonctionner. Vous pouvez trouver des logiciels comme camtasia qui permettent de faire des captures d'écran et d'exporter des vidéos. Pas la peine si votre projet n'est pas très beau ou tout juste correct. La vidéo est aussi à rendre en même temps que le projet.

Notes et archives des projets rendus (accès restreint)

  •  

Mots clés:
FichierTailleDateAttaché par 
 readmeAntoineMopolo.pdf
Aucune description
756.97 Ko14:01, 19 Nov 2012MichelBuffaActions
 readmeOliveri.pdf
Aucune description
3.74 Mo14:01, 19 Nov 2012MichelBuffaActions
Images (0)
 
Commentaires (0)
Vous devez être connecté pour poster un commentaire.