Le projet se compose de 2 parties distinctes. La première partie correspond à un site permettant l'affichage de transactions mises en base de donnée dans le projet XML (disponible ici). Ce site doit être sécurisé à l'aide de Spring Security et doit fournir une pagination des transactions à l'aide de l'interface PagingAndSortingRepository. La seconde partie correspond à un site d'abonnements. Nous avons choisi de créer KNK Multimedia qui propose des abonnemnts pour des films, ebooks, etc. Cette partie doit implémenter une architecture rest avec un serveur java et un client lourd Angularjs.
Les données d'exemple sont contenus dans le fichier banksimulation.sql (les créations de tables sont aussi incluses même si elles sont faites automatiquement par le serveur).
Etant donnée que la sécurité + l'affichage était pratiquement impossible a faire nous avons fait le choix de séparer la parte I en 2 sous partie. Une partie avec la sécurité l'autre avec l'affichage seulement.
La partie sécurisée se compose en plusieurs partie. Les configurations de sécurité; les pages jsp et les controlleurs.
Cette page sert juste à faire correspondre les pages du type /Liste vers la sp associée, celle ci étant retournée par le controller. Les pages sont alors cherchée dans /WEB-INF/Pages puis l'extension est ajoutée.
Cette configuration contiens la liste des comptes et leurs autorisation. L'utilisateur Admin à accès à toutes les pages. User à accès a accès juste a la page Research. Elle contient également la redirection en cas d'essai d'accès aux pages sécurisée et la redirection en cas de déconnexion.
Cette partie ne marche pas pour des raisons très obsure, cependant toutes les pages sont prete en cas de débug.
Le client se compose de 3 pages html, 1 page de script et 1 feuille de style.
Les grandes lignes du style (couleurs, cadres,...) sont définies dans la feuille, mais pour tout le reste il y a bootstrap.
Cette page statique décrit le site et les abonnements proposés.
Cette page est la principale du site. Elle regroupe la liste des produits, leurs abonnements et le filtre des catégories. Elle fournit aussi les fonctionnalités d'administration des données et de souscription aux abonnements.
Cette page permet l'affichage du résumé d'une souscription. Le résumé est accessible grace au numéro de la commande qui peut etre utilisé dans l'url (lien envoyé par mail) ou dans un champ texte sur la même page.
L'application angularjs utilisée se compose de 3 controlleur.
Controlleur gérant les accès et les ajouts des catégories
Controlleur gérant les accès, ajouts et supressions des produits, de leurs abonnements. Il gère aussi la création de commande.
Controlleur gérant les accès aux archives des commandes.
Chaque controlleur côté client correspond à un controlleur côté serveur qui lui fournit les méthodes d'accès et de modifications des données.
Les données fournies sont enregistrées sous la forme suivante:
- Un produit (Product) est composé de:
- Son nom, qui est sa clé primaire (String).
- Le nom de sa categorie (String).
- Une liste d'abonnement (List).
- Une catégorie (Category) est composée de:
- Son nom, qui est sa clé primaire (String).
- Un abonnement (Subscription) est composé de:
- Son nom, qui est sa clé primaire (String).
- Son prix (float).
- Sa durée (Integer).
- Une commande (Order) est composée de:
- Son numero de commande, qui est sa clé primaire (Integer).
- Du nom de l'abonné (String).
- Du prénom de l'abonné (String).
- De l'adresse mail de l'abonné (String).
- De l'IBAN de l'abonné (String).
- Du nom de l'abonnement (String).
- Du nom du produit (String).
Chacune des donnée est passée en base de donnée via des repository de type JpaRepository.
La classe AutoMail gère l'envoie des mails de confirmation de souscription à l'aide de l'API Commons Email d'apache.