Outil de gestion d une bibliothèque personnelle Projet de licence professionnelle en conception et développement orientés objet d applications multi tiers à l université de Franche-Comté Dominguez Jonathan Ragot Alexis Encadré par FELEA Violeta Session 2013 /2014
Sommaire Remerciements... 3 Introduction... 4 I Outil de gestion d une bibliothèque personnelle - Besoins... 5 - Fonctionnalités... 5 II Analyse... 6 III Aspects conceptuels et technologiques - L architecture n-tiers... 8 - Le modèle MVC... 9 - Les design patterns... 9 - Logiciels et langages utilisés... 10 IV Développement de l application de gestion de bibliothèque - Description technique du modèle MVC... 12 - Description technique du tier Métier... 14 - Description technique du tier Physique... 15 - Les API utilisés... 16 - Bootstrap... 18 - Paramétrage de l application... 19 - Le téléchargement de fichiers... 19 V Gestion du projet - Diagramme de Gantt... 20 - Travail en binôme... 21 Conclusion... 22 ANNEXES - Règles de codage... 23 - Glossaire... 24 - Interfaces utilisateurs... 25 - Diagrammes UML métier et physique... 30 - Méthode de positionnement des livres... 31 Netographie... 32 Bibliographie... 32 Outil de gestion d une bibliothèque personnelle page 2/33
Remerciements Nous tenons à remercier dans un premier temps, toute l équipe pédagogique de l'université de Franche-Comté et les intervenants professionnels responsables de la licence professionnelle Conception et développement orientés objet d'applications multi-tiers, pour avoir assuré la partie théorique de celle-ci. Nous remercions également Madame Felea notre enseignante tutrice pour l aide et les conseils concernant le projet et à l'élaboration du rapport. Outil de gestion d une bibliothèque personnelle page 3/33
Introduction Le projet de Licence Professionnelle informatique est très important pour l obtention du diplôme. Outre pour ce diplôme, ce projet est un plus sur le CV pour notre avenir. L'équipe de projet est constitué de Ragot Alexis et de Dominguez Jonathan. Nous avons choisi de faire l application permettant de gérer une bibliothèque personnelle. Nous avons choisi ce projet pour deux raisons différentes mais complémentaires, la partie JEE que nous ne connaissions pas avant et la partie en Java que nous voulions approfondir. Ce projet a été proposé par l'enseignante en JEE madame Violeta Felea, cours qui ont été effectués lors du second semestre. Ce projet a pour but de proposer une application permettant la gestion d'une bibliothèque personnelle tout en offrant un accès informatique aux utilisateurs. C'est à partir de cela que nous avons élaboré un cahier des charges avec notre tutrice. La première nouveauté a été l'utilisation de la plateforme JEE avant que les cours nous soient dispensés. Puis nous présenterons des API Open Source pour certaines fonctionnalités. Nous allons donc voir à travers ce rapport dans une première partie une présentation du projet ainsi que ces principaux objectifs. Puis nous verrons quels ont été nos choix pour effectuer ce projet. Et finalement, le résultat de ce travail. Outil de gestion d une bibliothèque personnelle page 4/33
1) Le besoin I. Outil de gestion d une bibliothèque personnelle L organisation d une bibliothèque personnelle s avère facilitée par des outils informatiques. Il s agit premièrement de fournir un inventaire de tout ouvrage présent dans la bibliothèque, sous forme d un catalogue. Semblable aux outils présents dans les bibliothèques publiques (municipales, universitaire), l application de gestion d une bibliothèque personnelle fournit aussi une aide organisationnelle (à une toute autre échelle comparée aux bibliothèques publiques, mais tout aussi utile) : positionner un ouvrage dans une bibliothèque et être capable de le retrouver facilement. Proposer des solutions d organisation et les intégrer dans l application constituent également des attentes du projet. 2) Fonctionnalités L'application propose deux types d'accès différents, bibliothécaire et utilisateur, car l'application propose des fonctionnalités supplémentaires à la bibliothécaire servant à gérer la bibliothèque. En effet la bibliothécaire peut ajouter, modifier et supprimer un livre ainsi qu'une armoire (ellemême obligatoirement composée d'étagères). Chaque livre peut exister en plusieurs exemplaires et peut posséder plusieurs volumes différents. La bibliothécaire peut aussi effectuer une sauvegarde entière des données sous un format Excel et peut charger un ensemble de livres à partir d'un fichier Excel. L'application possède aussi une fonctionnalité permettant de ranger automatiquement la bibliothèque avec des armoires et des étagères rentrées au préalable dans l'application. Par ailleurs, celles-ci sont sauvegardées au même titre que les livres. De plus la bibliothécaire peut visualiser et modifier les structures sauvegardées. L'application met à disposition la possibilité d'effectuer des recherches avec mot-clé en fonction des caractéristiques d un livre (titre, auteur, catégorie) avec comme option de n'afficher que les livres avec de multiples exemplaires. Pour que les recherches soient facilement accessibles et utilisables elles peuvent être sauvegardé sous un format PDF. L'application propose aussi une pagination dans la page de recherche afin que les résultats soit affichable sur plusieurs pages pour une meilleur lisibilité. Outil de gestion d une bibliothèque personnelle page 5/33
II. Analyse L analyse du système a permis d établir le diagramme d entités ci-dessous. Les classes entités sont les classes dont il faudra assurer la persistance. Analyse pour la gestion des livres Afin de pouvoir répondre aux fonctionnalités demandées, nous choisissons de créer une entité Livre. Cette entité comportera différents attributs tels que son auteur, son titre, son tome, son nombre d exemplaire, son origine, son année de parution, son prix ainsi qu un objet de l entité Catégorie. Par ailleurs, la séparation de la catégorie du livre permet de faciliter le développement car diverses fonctionnalités nécessiteront uniquement la catégorie et non le livre. Analyse pour le rangement : Le rangement automatique des livres n est pas une tâche simple et nécessite une analyse. Le but de cette fonctionnalité est de pouvoir retrouver le livre physiquement dans une bibliothèque. Pour pouvoir réaliser cette fonctionnalité nous définissons des structures. Ces structures possèdent un nom ainsi qu un ensemble d armoires. De même que les structures, les armoires ont un nom mais sont composées d étagères. Outil de gestion d une bibliothèque personnelle page 6/33
Les étagères ont différents attributs, afin de représenter au mieux la réalité. Ces attributs sont : - Un numéro représentant l étagère au sein de l armoire (1,2,3...) - Le nombre de livres pouvant être mis l un à côté de l autre sur l étagère (une marge en pourcentage est défini pour ce nombre afin d avoir une flexibilité) - Le nombre de livres pouvant être l un derrière l autre (profondeur) - Le nombre de livres pouvant se superposer l un par dessus l autre (hauteur). Lors du rangement, chaque livre aura comme position : - Le nom de l armoire dans laquelle il se trouve - Le numéro de l étagère - Le numéro de la rangée en profondeur - Le numéro de la rangée en hauteur Chacune de ces informations sur la position sont séparées par le caractère "-" afin d obtenir une valeur lisible. (La méthode résultante de cette analyse est présente dans l'annexe) Analyse de l aspect visuel : Une partie de l'analyse consistait à réaliser des croquis des interfaces utilisateurs. Les principales interfaces résultantes de cette analyse sont les suivantes : - La page d accueil (qui nous informe sur le nombre total de livre physique dans la bibliothèque) - La page de recherche avec l affichage des livres (recherche selon l auteur, le titre et la catégorie) - La page d ajout d exemplaires pour un livre - La page d ajout d un livre - La page de suppression d exemplaire ou de livre - La page d information sur la structure d une armoire - La page de visualisation des armoires en fonction de la structure choisi. - La page de sauvegarde de l ensemble des livre de la bibliothèque en fichier Excel - La page de sauvegarde d une recherche en fichier PDF Ces pages sont visibles dans l annexe. Outil de gestion d une bibliothèque personnelle page 7/33
III. Aspects conceptuels et technologiques L architecture et les principes de développement sont le cœur d une application. Les respecter favorise une maintenance et une évolution simple de l application. Ce chapitre aborde l architecture de l application, le modèle MVC, les design patterns ainsi que les différents logiciels et langages utilisés. 1) L architecture n-tiers L architecture en n-tiers définit, que lors du l utilisation de l application celle-ci peut être déployée sur "n" postes différents. Plus il y a de tier, plus l application est facilement réutilisable, maintenable et évolutive. L outil de gestion est demandé pour une bibliothèque personnelle ; par conséquent, nous avons décidé d utiliser une architecture en 3-tiers qui sont : Le tier Client correspondant à l'affichage, la restitution des infos sur le poste de travail de l utilisateur, le dialogue avec l'utilisateur Le tier Métier correspondant à la mise en œuvre de l'ensemble des règles de gestion et de la logique applicative Le tier Physique correspondant aux données qui sont destinées à être conservées sur la durée, voire de manière définitive. Outil de gestion d une bibliothèque personnelle page 8/33
2) Le modèle MVC Le modèle MVC ou Model View Controller, s intègre à l architecture en 3-tiers. Il va approfondir la relation entre les tiers Métier et Client. Model représente le tier Métier. View est matérialisé par des interfaces avec le client donc le tier Client. Controller réalise le lien entre les tiers Métier et Client. Il récupère des informations provenant de l interface utilisateur, il utilise le tier Métier pour des traitements et modifie l interface utilisateur. Un avantage apporté par ce modèle est la clarté de l'architecture qu'il impose. Cela simplifie la tâche du développeur qui tenterait d'effectuer une maintenance ou une amélioration sur le projet. En effet, la modification des traitements dans le modèle ne change en rien la vue. Par exemple on peut passer d'une base de données de type SQL à XML en changeant simplement les traitements d'interaction avec la base, et les vues ne s'en trouvent pas affectées. 3) Les design patterns Un design pattern est une solution donnée à un problème récurrent. Cela permet de résoudre des problèmes connus et fréquents par des méthodologies. Nous avons utilisé les designs patterns Factory et Singleton. Le design pattern Factory permet d'instancier plusieurs classes différentes héritant d'une même classe Interface. Le design pattern Singleton est utilisé pour limiter le nombre d'exemplaires d'un objet, ici une seule instanciation par implémentation. Chacune de ces instanciations est unique grâce au design pattern Singleton. Les designs patterns Factory et Singleton sont utilisés avec les classes java "MetierFactory" ainsi que "Physique Factory". Exemple : Outil de gestion d une bibliothèque personnelle page 9/33
La Factory possède un objet du type de l'interface, ici StructureBibliothequeService, et un accesseur qui lui est associé. Dans cet accesseur on vérifie si l'objet est nul ; si c est le cas on initialise cet objet avec le constructeur de l'implémentation (polymorphisme). Cela signifie aussi que l'objet est initialisé une seule fois, la première fois que la méthode est appelée (Design pattern Singleton). Le mot clé "static" devant une méthode (ou variable) indique que celle-ci n'appartient pas à une instance particulière de la classe. Dans les classes factory, les methodes static permettent de récupérer les attributs, eux aussi statiques, sans instancier la classe. Cela permet de récupérer les instances des implémentations qui ne sont faite qu une seule fois. 4) Logiciels et langages Langages: Java / JEE (JDK 7 et JRE 7) SQL HTML 5 (avec CSS 3) Outil de gestion d une bibliothèque personnelle page 10/33
Serveur d applications : Glassfish 4 (uniquement pour sa partie serveur web) Environnement de développement : Netbeans 7.4 Système de gestion de base de données : MySQL Outil de gestion d une bibliothèque personnelle page 11/33
IV. Développement de l application de gestion d une bibliothèque 1) Description technique du modèle MVC pour les application web avec Java Pour le développement de l application, divers choix technologiques ont été effectués tels que l utilisation de la plateforme Java JEE. Ce langage peut s adapter sur le modèle MVC, nous expliquerons comment ce langage et ce modèle s associent. Tout d abord, la communication entre la vue et le contrôleur. Avec la plateforme JEE, les vues seront les pages ".jsp" et les contrôleurs seront les "servlets". Nous prendrons comme exemple la page de connexion de notre application qui est «Connexion.jsp» La vue transmet les informations par le biais d un formulaire simplifié comme ci-dessous. Connexion.jsp <form action="/bibliothequejee/connexion" method="post"> <input type="text" name="login" placeholder="login"/> <input type="password" name="mdp"/> <input type="submit" value="connexion"/> </form> Quatre aspects sont importants, les noms des deux champs de saisie (login et mdp), la méthode du formulaire (post) ainsi que l action de ce formulaire vers la servlet «Connexion.java». Cette action fait référence à un lien défini dans le descripteur de déploiement «web.xml» qui est obligatoire à réaliser lors de la création de la servlet. web.xml <servlet> <servlet-name>connexion</servlet-name> <servlet-class>controleur.connexion</servlet-class> </servlet> <servlet-mapping> <servlet-name>connexion</servlet-name> <url-pattern>/connexion</url-pattern> </servlet-mapping> Le premier paragraphe ci-dessus permet de définir un nom (avec la balise <servlet-name>) qui sera associé à une classe (avec la balise <servlet-class>). Cette association est réalisée dans l élément "<servlet>". Une fois cette association effectuée, il faut définir un chemin d accès. Pour cela, l élément <servlet-mapping> permet, grâce au nom de servlet définie précédemment, de définir une URL d accès (avec l élément <url-pattern>). Maintenant que le formulaire envoie les informations au contrôleur voulut, nous montrons comment "Connexion.jave" les récupère. Outil de gestion d une bibliothèque personnelle page 12/33
Le contrôleur est composé de la méthode dopost() que nous utilisons car elle correspond à la méthode de notre formulaire. package controleur; public class Connexion extends HttpServlet { protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { boolean connexion; //Récupération des champs du formulaire String login = request.getparameter("login"); String mdp = request.getparameter("mdp"); // Traitement de l information avec par le tier métier Controleur controleur = Metier.MetierFactory.getControleur() ; connexion = controleur.verificationconnexion(login, mdp); } } request.setattribute("connexion", connexion); this.getservletcontext().getrequestdispatcher("connexion.jsp").forward( request, response ); On peut apercevoir que la méthode dopost() dispose comme paramètre d un objet "HttpServletRequest". Cet objet est important car il permet de récupérer les informations envoyées par les formulaires avec "request.getparameter("login") ;" en indiquant le nom du champ correspondant du formulaire afin de récupérer la valeur saisie. Ensuite, le contrôleur appelle une méthode du tier Métier et récupérer un booléen. Ce booléen est enregistré comme attribut de requête grâce à "request.setattribute("connexion", connexion);". Le premier paramètre sera le nom sous lequel le booléen est enregistré. Pour finir, on appelle la JSP "Connexion.jsp" en lui donnant l objet "HttpServletRequest". Elle pourra ainsi récupérer la valeur du booléen enregistré en utilisant la méthode "request.getattribut("connexion"); " entre les balises permettant d écrire du code Java (les scriptlet <%,%>). <% boolean connexion = Boolean.parseBoolean((String)request.getAttribute("connexion")); %> Outil de gestion d une bibliothèque personnelle page 13/33
2) Description technique du tier Métier Dans ce tier se trouvent : - Les entités. - Les interfaces. - Les implémentations de celles-ci. - Une factory pour récupérer les instanciations des interfaces du tier Métier. - Une classe contrôleur où se font les calculs pour certaines méthodes. Une modélisation de la factory et des interfaces est présente en annexe. Voici une méthode de la classe contrôleur réalisant un tri dans une liste comportant des livres : Cette méthode reçoit en paramètre une liste d'objet "Livre", un "int" représentant par quel attribut l'utilisateur veut-il trier la liste et un "int" précisant si la liste sera triée dans l'ordre croissant ou décroissant que l'on applique à un attribut de "Livre" qui sera expliqué plus tard. Pour ce faire l'objet Livre possède un objet de type "Comparator<Livre>" pour chaque attribut selon lequel on peut trier. Cette méthode est utilisée pour trier une recherche de livres selon différents critères. Outil de gestion d une bibliothèque personnelle page 14/33
Ici on vérifie si la valeur de l'attribut (titre) selon lequel on veut trier est égale dans les deux objets "Livre". En cas affirmatif on trie selon un autre attribut (auteur). Autrement, on trie avec l'attribut de départ. C est dans cette méthode que s applique le parametre "croissantornot" qui permet de définir un tri croissant ou décroissant. En effet la méthode "comparetoignorecase" renvoit un "int" indiquant la position du livre "arg0" par rapport à "arg1". Si l'utilisateur veut que ce soit croissant alors le "int" vaudra 1 et ne changera rien car à la base, le tri est croissant. Cependant si l'utilisateur veut un tri décroissant alors "croissantornot" vaudra -1 et cela inversera tout simplement les résultats. 3) Description technique du tier Physique Dans ce tier se trouvent : - Les interfaces. - Les implémentations de celles-ci. - Une factory pour l'accès de la couche métier à physique (et uniquement en ce sens) - Une classe gérant la connexion avec la base de données où se font les actions pour certaines méthodes. Une modélisation de la factory et des interfaces est présente en annexe. Voici une méthode permettant l'ajout(«insert INTO») d'un objet "Livre" dans la table «livre» grâce à une requête SQL. Cette requête est exécuté par un objet Statement récupéré grâce à une autre classe créée pour gérer la connexion avec la base de données. Outil de gestion d une bibliothèque personnelle page 15/33
4) Les API utilisées Afin de pouvoir sauvegarder sous format PDF une recherche faite au préalable dans l application et ainsi faciliter la recherche d un livre dans la bibliothèque, nous utilisons l'api itextpdf. Cette API nous permet de générer un fichier PDF et d y écrire. Voici un exemple simple de création d un fichier PDF contenant le texte «Hello World» : Document document = new Document(PageSize.A4); try { PdfWriter.getInstance(document, new FileOutputStream("c:/test.pdf")); document.open(); document.add(new Paragraph("Hello World")); } catch (Exception e) { e.printstacktrace(); } document.close(); Pour qu'un(e) bibliothécaire puisse charger un ensemble de livre à partir d'un fichier Excel nous utilisons les API FileUpload et Apache POI. Cette dernière nous permet de lire mais aussi d'écrire un fichier Excel (.xls), ce qui est utilisé pour pouvoir effectuer une sauvegarde de la base de données sous format Excel (.xls). Ces fichiers possèdent un format bien particulier dans notre application qui est précisé lors de la possible mise à jour. Cette fonctionnalité impose le standard de fichier Excel (.xls). Le programme lit chaque feuille, chaque ligne et chaque cellule du fichier Excel dans un ordre bien précis. Voici un exemple simple de création d un fichier Excel : HSSFWorkbook wb = new HSSFWorkbook(); FileOutputStream fileout; try { fileout = new FileOutputStream("monfichier.xls"); wb.write(fileout); fileout.close(); } catch (Exception e) { e.printstacktrace(); } Outil de gestion d une bibliothèque personnelle page 16/33
L API FileUpload nous permet de transférer facilement un fichier du client au serveur. Pour ce faire, il est nécessaire de créer un formulaire disposant d un champ "input" de type "file" et de préciser dans la balise "form" un attribut "enctype" ayant pour valeur "multipart/form-data". Voici la récupération par la servlet : List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); for (FileItem item : items) { if (!item.isformfield()) { // Traiter les champs de type fichier (input type="file") String nomfichier = FilenameUtils.getName(item.getName()); if(nomfichier.endswith(".xls")){ InputStream is = item.getinputstream(); Controleur controleur = Metier.MetierFactory.getControleur(); controleur.liresauvegardeexcel(is); } } } Pour notre projet, seul le flux du fichier a été récupéré et il n a pas été sauvegardé sur le serveur. Pour se connecter à la base de données MySql nous avons utilisé l'api JDBC. JDBC est un ensemble de classes permettant de développer des applications capables de se connecter à des serveurs de base de données. Outil de gestion d une bibliothèque personnelle page 17/33
Voici un exemple illustrant la connexion à une base de données et l exécution d une requête Sql : Cette requête SQL permet d extraire tous les livres sauvegardés dans la table "livre" de la base de données "bibliotheque". 5) Boostrap Bootstrap est une collection d outils utiles à la création de sites web et d applications web. Il offre un ensemble de CSS et d extensions JavaScript. Pour l application il permet de rendre le site «responsive design» c est-à-dire qu il s adaptera à n importe quelle taille d écran (PC, tablette, smartphone, etc...). Outil de gestion d une bibliothèque personnelle page 18/33
6) Paramétrage de l application Au lancement du serveur Glassfish, une servlet est appelée afin de récupérer des informations relatives au bon fonctionnement de l'application. Cette servlet reçoit les informations par le biais du descripteur de déploiement "web.xml" dans lequel il peut être défini pour chaque servlet une valeur associée à un nom. <init-param> <param-name>pagination</param-name> <param-value>15</param-value> </init-param> <init-param> <param-name>connectionproperties</param-name> <param-value>connectionconfig</param-value> </init-param> Dans cet extrait, nous définissons une variable "pagination" ayant pour valeur "15". C'est ici qu'il est possible de modifier le nombre de livres affichables par page. De plus ce fichier xml nous renseigne sur une variable ayant pour valeur "connectionconfig", ceci est le chemin du fichier "connectionconfig.properties". L intérêt de ce fichier de propriétés est qu'il est facilement modifiable et nécessite peu de temps pour pouvoir être modifié. Ce fichier est utile pour pouvoir modifier facilement tous les paramètres de connexion à la base de données. Voici un exemple pour enregistrer une valeur dans un fichier de propriétés : nombase=bibliotheque On remarque qu'il suffit simplement de mettre un nom que l'on initialise avec une valeur. Afin de récupérer cette valeur, nous avons créé un objet "ResourceBundle" et récupérer la valeur à l'aide du nom de celle-ci dans le fichier de propriétés : ResourceBundle rb = ResourceBundle.getBundle(url); String base = rb.getstring("nombase"); 7) Le téléchargement de fichiers Le download est utilisé pour la sauvegarde d une recherche en PDF. Pour le réaliser, il faut préciser dans le constructeur de l objet PdfWriter que l on écrit dans le flux de sorti, qui sera transmis au client. Ensuite, une fois le flux créé, on écrit dans ce flux le contenu du fichier PDF. PdfWriter pdfwriter = PdfWriter.getInstance(myPDF, response.getoutputstream()); mypdf.open(); Paragraph paragraph = controleur.imprimerrecherche(livres, critere); mypdf.add(paragraph); mypdf.close(); response.getoutputstream().close(); Outil de gestion d une bibliothèque personnelle page 19/33
V. Gestion du projet 1) Diagramme de Gantt Afin de mieux gérer l organisation du travail nous avons établi dès le début du projet un diagramme de Gantt. Ce premier diagramme nous a permis d avoir une vision du rythme de travail mais il ne représente pas la réalité. Voici le diagramme de Gantt en temps réel au cours de l évolution du projet. Outil de gestion d une bibliothèque personnelle page 20/33
2) Travail en binôme Le travail en binôme au sein d un même projet n est pas toujours simple, c est pourquoi nous avons décidé d utiliser un outil appelé Github. Cet outil fournit un service d hébergement d application web et de gestion de logiciels pour permettre à plusieurs personnes de travailler sur un projet simultanément. De plus il est directement incorporé à l environnement de développement NetBeans utilisé et permet ainsi une utilisation simple et rapide. Pour ce projet, la répartition des tâches a été une chose simple car nos attentes étaient vraiment complémentaires. Globalement, Dominguez Jonathan a réalisé les tiers métier et physique tandis que Ragot Alexis a développé le tier Client avec l application du modèle MVC. Outil de gestion d une bibliothèque personnelle page 21/33
Conclusion Dans le cadre de notre projet nous avons réalisé une application web pour gérer une bibliothèque. Cette application permet de gérer les livres d'une bibliothèque de manière ergonomique tout en proposant des fonctionnalités de sauvegarde de la base de données, d'import de base de données et de rangement de bibliothèque. De plus, l'application offre la possibilité aux utilisateurs d'effectuer des recherches avec mot clé et critères multiples et d'en sauvegarder les résultats. Le tout sur un navigateur web pouvant s'adapter à n'importe quel support technologique (ordinateur, tablette, portable, ). Cependant, des améliorations possibles existent. En effet, le système de rangement ne range pas de manière la plus optimale. Le rangement se fait par origine et catégorie mais ne prend pas en compte l'épaisseur des livres. Il est donc possible que des livres plus volumineux perturbent les positions affectées. De plus, la lecture de fichier Excel se limite au format.xls, une amélioration possible serait de rendre la lecture compatible avec le format.ods. Nous avons rencontré un problème avec les accents roumains et n'avons réussi à trouver une solution. Ce projet nous a permis d appliquer les connaissances qui nous ont été dispensées au cours de cette année de Licence Professionnelle à l'université de Franche-Comté. Nous avons appris à utilisé des technologies que nous ne connaissions pas et que nous n'aurions jamais connus en cours. Nous avons été confrontés à de nombreux problèmes auxquels nous avons trouvé des solutions. Pour ce projet nous n'avons que peu de temps pour réaliser ce que nous souhaitions faire, cependant cela a été une bonne expérience et nous a beaucoup apportées. Outil de gestion d une bibliothèque personnelle page 22/33
ANNEXES 1) Règles de codage Les règles de codage sont un ensemble de règles à suivre pour uniformiser les pratiques de développements logiciel, diffuser les bonnes pratiques de développement et éviter les erreurs de développement classiques au sein d un groupe de développeurs. Elles permettent d assurer une meilleure lisibilité du code en utilisant le même style de codage et en évitant les constructions qui rendent le code difficile à lire ou à modifier. Les règles de codage participent à la qualité logicielle. Ainsi, plus l importance des développements est élevée, plus les besoins en règles de codages sont nécessaire. CamelCase : Le camelcase c est la manière la plus utilisée pour le nommage en Java. CamelCase, cela signifie que chaque première lettre d un mot (variable, methode etc...) prend une majuscule, que tous les mots sont collés les uns aux autres et petite subtilité, le premier mot ne prend pas de majuscule (sauf pour une classe). Pourquoi camelcase, parce que ça ressemble aux bosses d un chameau. Les classes : Les classes sont nommées selon la méthode camelcase et comportent généralement un verbe d action. Exemple : Recherche, SauvegardeExcel, etc. En plus de cela, il faut savoir que dans une classe on retrouve souvent des méthodes de type getter et setter (accesseur, modificateur), pour récupérer une variable de classe ou la modifier sans toucher directement à la variable. Les getters et setters se nomment généralement getnomdelavariable() et setnomdelvariable(object nomdelavariable). Il existe également d autres mot-clés fréquemment utilisés comme add et remove (ajout, supprimer) pour ajouter et supprimer quelque chose : addsomething(object something), removeall(), etc. Les variables : Les variables commencent selon en camelcase par une lettre (a-z). Le nom d une variable devrait être court et clair. Les variables à un caractère sont à éviter sauf pour un usage temporaire (i, j, k, l, m, n pour les entiers et c, d, e pour les caractères). Exemples : nombrelivre, listelivre, i, etc. Outil de gestion d une bibliothèque personnelle page 23/33
2) Glossaire MVC : Model View Controller (Modèle Vue Contrôleur) JSP : JavaServer Pages UML : Unified Modeling Language JEE : Java Enterprise Edition IDE : Integrated Development Environment (Environnement de Développement Intégré) API : Application Programming Interface HTML : Hypertext Markup Language PDF : Portable Document Format CSS : Cascading Style Sheets SQL : Structured Query Language CDOOAM : Conception et Développement Orientés Objet d Application Multi tiers Outil de gestion d une bibliothèque personnelle page 24/33
3) Interfaces utilisateurs Voici quelques interfaces utilisateurs de l'application. La page d'accueil La page de recherche avec l'affichage du résultat d une recherche Outil de gestion d une bibliothèque personnelle page 25/33
La page d'ajout d'exemplaires pour un livre La page d'ajout d'un livre Outil de gestion d une bibliothèque personnelle page 26/33
La page d'information sur la structure d une armoire La page de supression d'exemplaire ou de livre Outil de gestion d une bibliothèque personnelle page 27/33
La page de visualisation d'une structure La page de sauvegarde de la base de données en fichier Excel Outil de gestion d une bibliothèque personnelle page 28/33
La page de sauvegarde d'une recherche en fichier PDF. Outil de gestion d une bibliothèque personnelle page 29/33
4) Diagrammes UML métier et physique Diagramme du tier physique Diagramme du tier métier Outil de gestion d une bibliothèque personnelle page 30/33
5) Méthode de positionnement des livres Outil de gestion d une bibliothèque personnelle page 31/33
Netographie Site communautaire : http://fr.openclassrooms.com/ (Consulté Février 2014) http://stackoverflow.com/ (Consulté Février 2014) Site officiel : http://docs.oracle.com/javase/7/docs/ (Consulté Février 2014) Site API : http://itextpdf.com/ (Consulté Février 2014) http://commons.apache.org/proper/commons-fileupload/ (Consulté Février 2014) http://poi.apache.org/ (Consulté Février 2014) http://www.jmdoudoux.fr/accueil_java.htm (Consulté Février 2014) Bibliographie Goncalves, Antonio. Java EE6 et Glassfish 3. Pearson, 554. Outil de gestion d une bibliothèque personnelle page 32/33
Résumé Dans le cadre de notre projet de Licence Professionnelle CDOOAM de l'université de Franche- Comté, nous avons développé une application permettant de gérer une bibliothèque. Cette application a été développée sur la plateforme JEE, elle permet de gérer le contenu physique d'une bibliothèque. Elle permet aussi à des utilisateurs, avec des accès limités à certaines fonctionnalités, de l'utiliser. L'application offre la possibilité de ranger automatiquement les livres enregistrés, par le calcul de la position du livre dans la bibliothèque. Le fait de développer une telle application se montre utile dans la gestion, parfois fastidieuse, d'une grande bibliothèque personnelle. Mots-clés : Bibliothèque, Java, JEE, n-tiers, Singleton, Factory, MVC, itext, Apache POI, FileUpload, Bootstrap Summary As part of our project of professional licence CDOOAM from the University of Franche-Comté, we have developed an application to manage a library. This application has been developed on the JEE platform, it can manage the physical contents of a library. It also enables users with limited access to use some features. The application offers the possibility to automatically store books recorded by the calculation of the position of the book in the library. The fact of developing such application shows itself useful in management, sometimes tedious, of a large personal library. Keyword : Library, Java, JEE, n-tiers, Singleton, Factory, MVC, itext, Apache POI, FileUpload, Bootstrap