HARDY Laura BTS SIO Stage 2ème année Dates : du 04/02/2013 au 08/03/2013 Lieu : Mairie d Alès (Cellule Web) Place de l Hôtel de ville 30100 Alès Tuteur d entreprise : M. LEVREAU Jérôme - jerome.levreau@ville-ales.fr - 04 66 56 43 40 Tuteur pédagogique : M. LAGHLAM Chouaib chouaib.laghlam@laposte.net 06 11 77 38 89 Bilan personnel : J ai eu la chance de pouvoir effectuer mes stages de 1 ère et 2 ème année au même endroit : la cellule Web de la mairie d Alès. Les trois personnes qui la composent réalisent et administrent les sites web dépendant de la ville d Alès et de la communauté de communes du Grand Alès. Ils réalisent également des applications métiers pour répondre aux différentes demandes des services internes à la mairie (RH, Communication, etc). Durant mon stage de 1 ère année (été 2012), j ai développé une application pour un groupe de travail interne à la mairie, qui a pour objet d étude l ensemble des risques dans le bassin Alésien (industriels, chimiques, électriques ). Il s agissait de créer une application interne permettant la présentation et la gestion des risques industriels et naturels sur le bassin Alésien (Cf captures d écran jointes). Durant mon stage de 2 ème année (février 2013), j ai eu la chance de travailler sur la même application, tout en abordant un certain nombre de compétences professionnelles différentes. Activités effectuées : I. Identification et résolution de petits bugs dans l application (5 jours) Cf exemples p.2-6 II. Introduction aux tests unitaires avec J-Unit et DB-Unit (2 jours) Cf démarche p.7 III. Rencontre des clients : présentation de l application et accompagnement dans la prise en main (1/2 journée) Cf déroulement p.8 IV. Modifications et améliorations de l application à la demande du client (8 jours) Cf exemples p.9-14 V. Ajout de commentaires pour générer la Javadoc (1 jour) Cf exemples p.15 VI. Rédaction d une documentation technique (2 jours) Cf p.16 VII. Rédaction d une documentation d utilisation (5 jours) Cf p.17 VIII. Autres problèmes rencontrés en dehors des missions données (1 jour et demi) Cf p.18-19 1
I. Identification et résolution de petits bugs dans l application BUG N 1 : Quand on est sur la page qui permet de modifier toutes les informations relatives à un lieu, plus précisément quand on ajoute des informations associées au risque sélectionné, les retours à la ligne ne sont pas pris en compte dans le récapitulatif à imprimer. 2
Résolution bug n 1 : 3
BUG N 2 : La suppression d un lieu ne fonctionne pas Résolution bug n 2 : 4
BUG N 3 : Dans le pop-up présentant un lieu, l icône «imprimer» n est pas alignée avec le nom. Résolution bug n 3 : 5
II. Introduction aux tests unitaires avec J-Unit et DB-Unit J ai créé une «application test» afin de pouvoir tester les différentes possibilités de tester une application avec J- Unit. Ensuite j ai regardé comment je pouvais tester mon application. Ayant constaté que le plus intéressant pour mon application était de tester mes interactions avec ma base de données (ajout, suppression ), je me suis penchée sur DB-UNIT. Quelques sources consultées : http://www-igm.univ-mlv.fr/~dr/xpose2003/junit_tour/ http://gfx.developpez.com/tutoriel/java/junit/ http://www.siteduzero.com/informatique/tutoriels/les-tests-unitaires-en-java http://www.dbunit.org/howto.html 6
III. Rencontre des clients et accompagnement dans la prise en main Tâches effectuées : - Présentation de l application et de son fonctionnement - Accompagnement des utilisateurs dans la prise en main Satisfaction des clients : - Les clients avaient au départ formulé très peu d exigences : ils souhaitaient pouvoir, à partir de l application, présenter et gérer les lieux à risques industriels et naturels sur le bassin Alésien, n avaient pas forcément d idées sur la façon dont cela pouvait s agencer, etc. Ainsi, nous avions pris un certain nombre d initiatives, et les clients sont très satisfaits de celles-ci (présentation des lieux via une Carte Google Maps plutôt qu une simple liste, notion de «préjudices possibles» associés aux risques, création d une logothèque pour associer des pictogrammes aux risques et préventions, etc). - L application est claire et simple d utilisation - L application est fonctionnelle Modifications à apporter : - Petites améliorations souhaitables (listes par ordre alphabétique, etc) - Ajout d un module : Mise en place d une authentification offrant des droits différents selon les personnes 7
IV. Modifications et améliorations de l application à la demande du client AMELIORATION N 1 : Sur la page d accueil (carte des lieux), lorsqu on passe la souris sur un marqueur, son id apparaît : il faudrait que ce soit plutôt son nom. Solution n 1 : Modification dans MapBean.java (remplacement de l.getid().tostring() par l.getnom().tostring()) 8
AMELIORATION N 2 : Les listes déroulantes ne sont pas classées par ordre alphabétique Solution n 2 : Ajout de code dans Risques-ejb => Source Packages => org.risques.entity => RisquesEntity @NamedQueries({ @NamedQuery(name = "risques.findall", query = "SELECT n FROM RisquesEntity n ORDER BY n.nom ASC"), @NamedQuery(name = "risques.findallfast", query = "SELECT NEW org.risques.pojo.risquepojo(n.id,n.nom) FROM RisquesEntity n ORDER BY n.nom ASC") Idem pour les autres entités 9
AMELIORATION N 3 : Offrir des accès différents après authentification => JAAS Quelques sources consultées : http://www.developpez.net/forums/d275671/java/serveurs-conteneurs-java-ee/jboss/form-baseauthentification-utilisant-loginmodules-jboss/ http://docs.jboss.com/jbossas/jboss4guide/r5/html/ch8.chapter.html#ch8.dabaseserverloginmodule.sect Solution n 3 1. Création des tables : PRINCIPLES : principal_id (varchar64), password (varchar64) ROLES : principal_id (varchar64), user_role (varchar64) 2. Données rentrées pour tests : Dans la table PRINCIPLES => user1, 8FePHnF0saQcTqjG4X96ijulySo= («pass 1» encodé en SHA-1) user2, i+uhjqb95fcnfio2udwju1hpv50 («pass2» encodé en SHA-1) Dans la table ROLES => user1, consultation user1, modification user2, consultation PS : Encodage SHA-1 plutôt que MD5 car plus sécurisé 3. login-config.xml 10
4. jboss-web.xml 5. web.xml onglet «security» : 11
12
6. Création : login.xhtml 7. Création bad-login.xhtml 13
8. Vérification authentification : OK 9. Vérification erreur authentification : OK Il me restait à préciser ce qui était accessible ou non pour chaque rôle, mais les clients ne le savent pas eux-mêmes à ce jour. Ils y réfléchissent et en feront part à mon tuteur d ici quelques semaines. 14
V. Ajout de commentaires pour générer la Javadoc Quelques sources consultées : http://www.siteduzero.com/informatique/tutoriels/presentation-de-la-javadoc http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html 15
Documentation jointe dans l archive. VI. Rédaction d une documentation technique 16
Documentation jointe dans l archive. VII. Rédaction d une documentation d utilisation 17
VIII. Autres problèmes rencontrés en dehors des missions données PROBLEME N 1 : Pas de localhost/wamp (icône orange) Erreur : «fichier MSVCR100 manquant» Port 80 testé (APACHE => Test du port => Port non utilisé) Solution trouvée sur ce forum => http://forum.wampserver.com/read.php?1,84932 Re: Plus fonctionnel + erreur MSVCR100.dll Envoyé par: stevenmartin99 (---.b-ras1.srl.dublin.eircom.net) Date: 03 June 2012 à 11:38 Windows 32 : Verifiez bien que vous avez installé le Visual C++ 2010 SP1 Redistributable Package x86 : VC10 SP1 vcredist_x86.exe http://www.microsoft.com/download/en/details.aspx?id=8328 pour les architectures 32 bits. Windows 64 : Verifiez bien que vous avez installé le Visual C++ 2010 SP1 Redistributable Package x64 : VC10 SP1 vcredist_x64.exe http://www.microsoft.com/download/en/details.aspx?id=13523 pour les architectures 64 bits. Apache ne fonctionne pas sans ces composants ------- Steven Martin stevenmartin99@gmail.com stevenmartin99@hotmail.com PampServer.com - [pampserver.com] Installation de Visual C++ 2012 SP1 pour 32 bits et 64 bits car : Re: Plus fonctionnel + erreur MSVCR100.dll Envoyé par: Otomatic (Modérateur) Date: 08 October 2012 à 12:12 Bonjour, Si vous avez installé une version 64 bits, c'est que vous avez un Windows 64 bits, DONC, IL FAUT INSTALLER LES DEUX VERSIONS 32 ET 64 BITS, comme stipulé au point 20 des vérifications à effectuer. ------------------------------------------------------------------------------------------------------------ WampServer 2.2 : Apache 2.2.23/2.4.3 - PHP 5.3.21/5.4.11 - MySQL 5.6.10 - PhPMyAdmin 3.5.6 - MysqlDumper 1.24.4 (W7 Pro 64bits) - «Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi» Solution problème n 1 : Désinstallation de WAMP + Installaton de VISUAL C++ pour Windows 32bits et 64 bits + rénstallation de WAMP. Tout fonctionnait. 18
PROBLEME n 2 : J étais sur la mise en place d une amélioration : passer directement en édition après l ajout d un lieu. J ai donc dû modifier mon code et effectuer plusieurs tests après avoir ajouté de nouveaux lieux. Suite à cela (le lendemain) impossible de lancer l application web. Affichage suivant : 10:15:52,871 ERROR [[Faces Servlet]] "Servlet.service()" pour la servlet Faces Servlet a généré une exception java.lang.nullpointerexception: Erreur dargument : le paramètre text est null. Solution problème n 2 : J ai passé 1 journée à résoudre ce pb. Et finalement j ai trouvé qu il venait de mes tests de la veille : en ajoutant de nouveaux lieux pour faire des tests, il y a un lieu pour lequel j ai oublié de mettre un nom et donc le champ vide gênait. Après avoir supprimé le lieu en question via phpmyadmin, j ai de nouveaux eu accès à l application. Cette erreur m a permis de réaliser que ce souci aurait pu arriver aux clients par la suite, donc c était un mal pour un bien. Cela ne devrait pas être possible de pouvoir ajouter un lieu sans que le nom soit saisi, donc j ai aussitôt ajouté cette contrainte : 19