Vous êtes sur la page 1sur 93

Cration d'un outil de Reporting avanc

Travail de fin d'tudes ralis par Philippe Lodomez en vue de l'obtention du grade de bachelier en Informatique et Systmes option Rseaux et Tlcommunications

Anne scolaire 2006-2007

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 1

Remerciements :
Je tiens remercier la socit Manex pour m'avoir accueilli et offert un environnement de travail irrprochable. Je remercie aussi Vincent Keunen qui m'a parrain dans la socit. Ainsi que David Wery qui a suivi mon travail de bout en bout. Merci aussi Monsieur Christophe Charlet, mon superviseur pour sa disponibilit et ses nombreux conseils. Je remercie, enfin, les personnes de mon entourage qui ont relu mon travail.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 2

TABLE DES MATIRES


1. Premire Partie : Introduction et Prsentation....................... 8
1.1 Introduction ................................................................................................................ 9 1.2 Prsentation de l'entreprise Manex .......................................................................... 10
1.2.1 Introduction ....................................................................................................................10 1.2.2 Le personnel ....................................................................................................................10 1.2.3 Produits ...........................................................................................................................10 1.2.4 Domaines ........................................................................................................................11 1.2.5 Contact ............................................................................................................................11

1.3 Cahier des charges du Stage....................................................................................... 12 1.4 Les Outils de Dveloppement.................................................................................... 13


1.4.1 Intellij IDEA ......................................................................................................................13 1.4.2 Spring ..............................................................................................................................13 1.4.3 OpenOffice ......................................................................................................................14 1.4.4 SubVersion .....................................................................................................................14 1.4.5 Eclipse .............................................................................................................................. 4 1 1.4.6 Oxygen XML editor ..........................................................................................................15 1.4.7 JBOSS ..............................................................................................................................15 1.4.8 PostgreSQL.......................................................................................................................16

1.5 Introduction au concept Open Source .................................................................. 17

2. Deuxime Partie : Notions Thoriques .................................18


2.1 Java............................................................................................................................. 19
2.1.1 Prsentation gnrale......................................................................................................19 2.1.2 La Portabilit de Java.......................................................................................................20 2.1.3 Orientation Objet.............................................................................................................20 2.1.4 Les Javabeans...................................................................................................................21

2.2 XML............................................................................................................................ 22
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 3

2.2.1 Prsentation de XML........................................................................................................22 2.2.2 Exemple............................................................................................................................23 2.2.3 Traiter un XML.................................................................................................................. 4 2


2.2.3.1 SAX....................................................................................................................................... 24 2.2.3.2 DOM.................................................................................................................................... 24

2.3 L'API Reflection.......................................................................................................... 25


2.3.1 Prsentation gnrale .....................................................................................................25 2.3.2 Explication et fonctionnement........................................................................................25 2.3.3 Exemples..........................................................................................................................26 2.3.4 Conclusion........................................................................................................................27

2.4 Spring Framework.................................................................................................... 28


2.4.1 Prsentation gnrale .....................................................................................................28 2.4.2 Fonctionnement de Spring ..............................................................................................30
2.4.2.1 BeanFactory......................................................................................................................... 30 2.4.2.2 Exemple d'utilisation .......................................................................................................... 30

2.4.3 Spring Web MVC..............................................................................................................30


2.4.3.1 Que veut dire MVC?............................................................................................................ 30 2.4.3.2 Modle, Vue et Contrleur ................................................................................................. 31

3. Troisime Partie : Etude et Analyse des outils de Reporting.32


3.1 Introduction............................................................................................................... 33 3.2 Prsentation de iText................................................................................................. 34
3.2.1 Introduction ....................................................................................................................34 3.2.2 Installation de la librairie ................................................................................................34 3.2.3 Cration d'un PDF ...........................................................................................................34 3.2.4 La Mise en Forme ............................................................................................................35 3.2.5 Les Interactivits .............................................................................................................36 3.2.6 Template .........................................................................................................................36 3.2.7 Gnrer des documents rtf et html ................................................................................37 3.2.8 Conclusion........................................................................................................................37

3.3. Prsentation de JasperReports................................................................................. 39


3.3.1 Introduction.....................................................................................................................39 3.3.2 Prsentation de iReport ..................................................................................................40 3.3.3 Les diffrentes tapes de cration du rapport ...............................................................40 3.3.4 Design XML....................................................................................................................... 1 4
3.3.4.1 Forme Gnrale .................................................................................................................. 41 3.3.4.2 Sources de donnes ............................................................................................................ 41 3.3.4.3 Variable ............................................................................................................................... 42
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 4

3.3.4.4 Paramtre ........................................................................................................................... 3.3.4.5 Elment .............................................................................................................................. 3.3.4.7 Groupes .............................................................................................................................. 3.3.4.8 Outils de cration du design ...............................................................................................

42 42 43 43

3.3.5 API et Export....................................................................................................................44 3.3.6 Conclusion........................................................................................................................45

3.4 Prsentation de JOOReports...................................................................................... 47


3.4.1 Introduction .................................................................................................................... 7 4 3.4.2 Installation ....................................................................................................................... 8 4 3.4.3 Utilisation de FreeMarker ...............................................................................................48
3.4.3.1 Introduction ........................................................................................................................ 3.4.3.2 Rappel modle MVC ........................................................................................................... 3.4.3.3 Fonctionnement + schma.................................................................................................. 3.4.3.4 Atout de FreeMarker ......................................................................................................... 48 48 48 49

3.4.4 OpenOffice.......................................................................................................................49 3.4.5 Le plug in Add-in ODF .................................................................................................49 3.4.6 Utilisation de JOOReports................................................................................................50 3.4.7 Possibilits des templates ...............................................................................................50
3.4.7.1 Introduction ........................................................................................................................ 50 3.4.7.2 Rappel sur Template ........................................................................................................... 50 3.4.7.3 Diffrentes insertions de variables et champs..................................................................... 51

3.4.8 Conversion PDF et DOC....................................................................................................52 3.4.9 Conclusion .......................................................................................................................52

3.5 Prsentation de BIRT................................................................................................. 53


3.5.1 Introduction ....................................................................................................................53 3.5.2 Utilisation gnrale .........................................................................................................53 3.5.3 Installation ....................................................................................................................... 4 5 3.5.4 Cration d'un rapport .....................................................................................................54 3.5.5 Dfinition des jeux de donnes .......................................................................................55 3.5.6 Conception ( design ) d'un rapport .................................................................................55 3.5.7 Conclusion........................................................................................................................55

3.6. Comparatif des diffrents outils analyss................................................................. 57


3.6.1 Introduction ....................................................................................................................57 3.6.2 Tableau comparatif des quatre outils .............................................................................58 3.6.3 Choix et Raison ................................................................................................................59 3.6.4 Conclusion .......................................................................................................................59

4. Quatrime Partie : Dveloppement de l'application ............ 60


4.1 L'application JAFAR (client et serveur) .................................................................... 61
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 5

4.1.1 Prsentation et Historique...............................................................................................61 4.1.2 Jafar ; Les Objectifs ..........................................................................................................62 4.1.4 L'indpendance des Audits..............................................................................................63 4.1.5 Le client ...........................................................................................................................63 4.1.6 Le serveur ........................................................................................................................63 4.1.7 Les tables importantes.....................................................................................................64
4.1.7.1 La Table Auditables ............................................................................................................. 64 4.1.7.2 La Table ACS (Auditable Components)................................................................................ 65 4.1.7.3 La Table Encounters............................................................................................................. 66 4.1.7.4 Schma simplifi de la base de donnes serveur ................................................................ 66

4.1.8 Les captures d'cran........................................................................................................67

4.2 Prsentation de l'outil de Reporting de Jafar (client)................................................. 70


4.2.1 Objectifs...........................................................................................................................70 4.2.2 Les Contraintes................................................................................................................. 0 7 4.2.3 L'Indpendance ...............................................................................................................71 4.2.4 Les Classes principales....................................................................................................72 4.2.5 Explications .....................................................................................................................74
4.2.5.1 Cration d'un panel Reporting............................................................................................. 74 4.2.5.2 Cration d'un jDialog .......................................................................................................... 74 4.2.5.3 Les tapes............................................................................................................................ 74

4.2.6 Exemples de contenu d'un template...............................................................................75


4.2.6.1 Champs simples................................................................................................................... 75 4.2.6.2 Les Listes ............................................................................................................................. 75 4.2.6.3 Les Tableaux ....................................................................................................................... 76

4.2.6 Rsultat + captures d'cran.............................................................................................76

4.3 Reporting Serveur Jafar.............................................................................................. 79


4.3.1 Objectifs...........................................................................................................................79 4.3.2 Les Contraintes................................................................................................................. 9 7 4.3.3 Utilisation de jFreeChart..................................................................................................79 4.3.3 Utilisation de Spring MVC................................................................................................80 4.3.5 Les Classes principales.....................................................................................................81
4.3.5.1 Les Contrleurs.................................................................................................................... 81 4.3.5.2 Les Classes Mtiers et DAO.................................................................................................. 82 4.3.5.3 Les Vues et JSP..................................................................................................................... 82 4.3.5.4 Exemple + code.................................................................................................................... 82

4.3.5 Captures d'cran..............................................................................................................85

5. Cinquime Partie : Conclusion...............................................88


5.1 Conclusion gnrale................................................................................................... 89

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 6

6. Sixime Partie : Annexes........................................................90


6.1 Bibliographie et Rfrences....................................................................................... 91
6.1.1 Livres................................................................................................................................91 6.1.2 Sites Internet....................................................................................................................91

6.2 Glossaire..................................................................................................................... 92 6.3 Abstract...................................................................................................................... 93

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 7

1. Premire Partie : Introduction et Prsentation

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 8

1.1 Introduction
Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une diffrence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. Dave Berry

1.1.1 Introduction Gnrale


Etude, Analyse et Cration d'un outil de Reporting avanc ... Quel beau titre pour un TFE.
L'tude tout d'abord, il s'agirait, selon un dictionnaire en ligne, d'une application d'esprit pour apprendre ou approfondir les connaissances. 1. L'analyse ensuite, toujours d'aprs ce mme dictionnaire, ce serait un examen mthodique permettant de distinguer les diffrentes parties d'un problme et de dfinir leurs rapports . Et pour finir, la cration qui est : l'action de crer , donc de faire de rien quelque chose. Voil donc trois dfinitions intressantes qui elles seules pourraient constituer un TFE (dans un autre domaine que l'informatique videmment). Mais la chose qui nous intresse est bien le mot reporting . Le Reporting est la prsentation priodique de rapports sur les activits et rsultats d'une organisation, d'une unit de travail ou du responsable d'une fonction, destine en informer ceux chargs de les superviser en interne ou en externe, ou tout simplement concerns par ces activits ou rsultats. Le terme dsigne galement de plus en plus une technique informatique de prparation de ces rapports, consistant extraire des donnes pour les prsenter dans un rapport humainement lisible (affichable ou imprimable) 2. Ces notions d'tudes et d'analyses, j'y ai t confront ds mon arrive chez Manex o j'ai d, en plus de certains nouveaux logiciels, dcortiquer et analyser les diffrents outils de reporting ma disposition. Cette recherche m'a permis par la suite de raliser au mieux (je l'espre) la suite du projet dont vous allez pouvoir prendre connaissance. Bonne lecture !

1 Source : http://dictionnaire.mediadico.com/ 2 Source : http://fr.wikipedia.org/wiki/Accueil


Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 9

1.2 Prsentation de l'entreprise Manex


Sommaire : 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 Introduction Le personnel Produit Domaines Contact

1.2.1 Introduction

Depuis 1986, Manex, petite socit informatique implante Boncelles (Lige - Belgique), propose des services de consultance et dveloppement pour la mise en uvre de solutions logicielles et rseaux.

1.2.2 Le personnel
La socit Manex est dirige par Vincent Keunen. Elle emploie trois informaticiens temps plein et une secrtaire. La socit s'offre aussi parfois les services de quelques indpendants.

1.2.3 Produits
IBAT (Inter Business Automated Transport System) : systme de transport de documents automatis et scuris (cryptographie, PKI3, gestion des formats) via Internet. Applications dans tout secteur. JAFAR (Java Advanced Facilities for Audit and Reporting) : systme daudit et de reporting. Applications dans le mdical, la prvention, lenvironnement, laudit, le lgal, la labellisation, le
3 Une PKI (Public Key Infrastructure) est un ensemble de composants physiques ( par exemple : ordinateur), de procdures humaines et de logiciels en vue de grer le cycle de vie des certificats numriques ou lectroniques.
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 10

check-up technique, les relevs sur terrain, etc. Jafar en est sa troisime version. Site web du produit : www.jafar.biz

1.2.4 Domaines
Leurs domaines de prdilection sont: systmes internet sites web transactionnels, applications web , connexions bases de donnes, systmes de messagerie, changes B2B4, systmes de scurit cryptographie, infrastructures cls publiques, certificats et signatures lectroniques, systmes mobiles TabletPC, Palm, PocketPC, iPaq, Psion, J2ME, GSM, SMS,

1.2.5 Contact
Rue Wagner, 93 & 127 BE-4100 Boncelles, Belgique Tel. : +32 (0) 4 338 03 68 Fax. : +32 (0) 4 338 06 06 Mail : info@manex.be Site Web : http://www.manex.be

4 B2B : business to business


Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 11

1.3 Cahier des charges du Stage


Etude, analyse et ralisation dun outil de reporting avanc Description du projet : Lobjectif de ce travail est de raliser un outil de reporting avanc comprenant :

Lutilisation dun outil open source ; La lecture de donnes provenant dun modle de donnes existant; Cration dune interface web pour la cration et la consultation des rapports ; Cration dune interface lourde (en swing) pour la cration et la consultation des rapports ; Ce travail se droulera en 5 phases :

Etudier les packages open source de gnration de rapports JasperReport et similaires ; Etudier les packages open source de cration de modles (genre iReport) ; Etudier le format open document (agr Oasis/ISO et propos initialement par OpenOffice.org) ; Etudier les adaptations raliser pour les intgrer notre outil Jafar ; Raliser une intgration profonde (les concepts de jafar lis au mtier d'audit doivent tre directement accessibles dans l'outil de gnration de rapports) au niveau client et serveur ; Plate-forme de travail et outils utiliser :

La plate-forme de travail sera principalement Microsoft Windows XP. Les outils utiliser seront principalement : IntelliJ Idea, subversion, JasperReport, iText, Atlassian Jira, Spring Framework, JOOreports et Hibernate. Manex fournira ltudiant les diffrentes machines (de tests et de production) pour le dveloppement du projet.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 12

1.4 Les Outils de Dveloppement


Sommaire : 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 Intellij IDEA Spring Open Office Subversion Eclipse Oxygen XML editor JBOSS PostgreSQL

1.4.1 Intellij IDEA

C'est un EDI (Environnement de dveloppement intgr) trs puissant pour Java. Son seul dfaut est d'tre payant (499$ par licence), mais ce dfaut est largement compens par ses normes possibilits. Les principales nouvelles fonctionnalits de la version 6.0 sont un diteur de Gui trs puissant qui supporte beaucoup de layouts (dont le FormLayout), le support des EJB 3.0, un module pour faciliter la gestion en groupe et le calcul de la couverture du code par les tests.
Site officiel : http://www.jetbrains.com

1.4.2 Spring

Spring est considr comme un conteneur dit "lger", c'est--dire une infrastructure similaire un serveur d'application J2EE. Il prend en charge la cration d'objets et leur mise en relation par l'intermdiaire d'un fichier de configuration qui dcrit les objets fabriquer et les relations de dpendance entre ces objets. Pour faire simple, les classes A et B seront en relation grce un fichier XML5.
Site officiel : http://www.springframework.org

5 XML : langage informatique de balisage gnrique (Extensible Markup Language)


Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 13

1.4.3 OpenOffice

OpenOffice.org (parfois abrg en OOo) dsigne la fois un logiciel libre de bureautique, une communaut de dveloppeurs et le site Internet hbergeant l'ensemble du projet. Le but nonc est de crer, en tant que communaut, la suite bureautique internationale leader tournant sur les principales plates-formes et fournissant l'accs aux fonctionnalits et aux donnes via des composants et API (Interface de Programmation d'Application) ouverts et un format de donnes XML. En d'autres termes : concurrencer le leader du march : Microsoft Word.
Site officiel : http://fr.openoffice.org/

1.4.4 SubVersion

Subversion, souvent abrg en SVN, est un gestionnaire de version qui se veut le successeur de CVS. Un gestionnaire de version permet, comme son nom lindique, de grer les diffrentes versions dun projet. Il est principalement utilis pour maintenir le code source ou la documentation dun logiciel, mais on pourrait, en thorie, lemployer dans bien dautres domaines, comme par exemple, la conception dun site web, ou la rdaction dun rapport. Un gestionnaire de version est donc un outil quasiment indispensable pour mener bien un projet par plusieurs personnes. Site officiel : http://subversion.tigris.org

1.4.5 Eclipse

Eclipse IDE est un autre IDE, il est extensible, universel et polyvalent, permettant potentiellement de crer des projets de dveloppement mettant en uvre n'importe quel langage de programmation. Eclipse IDE est crit en Java ( l'aide de la bibliothque graphique SWT d'IBM). La spcificit d'Eclipse IDE vient du fait de son architecture totalement dveloppe autour de la notion de plugin (en conformit avec la norme OGSi) : toutes les fonctionnalits de cet atelier
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 14

logiciel sont dveloppes en tant que plugin. Plusieurs logiciels commerciaux sont bass sur ce logiciel libre, comme par exemple Websphere Studio Application Developer d'IBM. Site officiel : http://www.eclipse.org/

1.4.6 Oxygen XML editor

OXygen est un diteur simple utiliser et lgant qui supporte les dernires technologies et standards XML. Ses fonctions d'aide l'dition, de dbogage XSLT 6 et la possibilit de produire des documents HTML, PDF ou PostScript directement l'ont rendu populaire la fois dans les entreprises et dans le milieu universitaire. Il s'agit d'un programme Java, qui est par consquent portable sur n'importe quel ordinateur pouvant faire tourner une machine Java virtuelle. Il est galement disponible sous la forme d'un plug-in pour Eclipse. Site Officiel : http://www.oxygenxml.com

1.4.7 JBOSS

JBoss Application Server est le serveur d'applications J2EE Libre le plus populaire (le plus tlcharg). Il est entirement crit en Java et publi sous licence LGPL. Parce que le logiciel est crit en Java, JBoss Application Server peut tre utilis sur tout systme d'exploitation fournissant une machine virtuelle Java (JVM). Toutefois, il faut bien diffrencier JBoss, le projet Open Source soutenu par environ 100 dveloppeurs et JBoss Group, une entreprise qui offre des services de grande qualit autour du projet Jboss. Site Officiel : http://www.jboss.org

6 XSLT : langage de transformation d'XML


Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 15

1.4.8 PostgreSQL

PostgreSQL est un systme de gestion de base de donnes relationnelle et objet (SGBDRO). C'est un outil libre disponible selon les termes d'une licence de type BSD. Ce systme est concurrent d'autres systmes de gestion de base de donnes, qu'ils soient libres (comme MySQL et Firebird), ou propritaires (comme Oracle, Microsoft SQL Server, etc.). PostgreSQL peut stocker plus de types de donnes que les types traditionnels (entier, caractres, etc.). L'utilisateur peut crer des types, des fonctions, utiliser l'hritage de type etc.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 16

1.5 Introduction au concept Open Source


Pour bien comprendre la suite, il vous faut savoir et comprendre ce qu'est Open Source.

La dsignation Open Source s'applique aux logiciels (ou applications) dont la licence respecte des critres tablis par l'Open Source Initiative (OSI). En voici les critres fondamentaux :

la libre redistribution un code source disponible les travaux drivs possibles.

Malgr la traduction littrale possible en code source ouvert , le fait de disposer des sources d'un logiciel ne suffit pas dire qu'il est Open Source. Toutefois, de nombreuses personnes, notamment dans le monde francophone, se contentent de la disponibilit des sources pour appeler un logiciel Open Source. C'est Christine Peterson qui fut la premire instaurer l'utilisation du terme Open Source . Elle travaillait alors pour le Foresight Institute. Elle voulait surtout faire la diffrence avec le terme anglais Free Software (plus dans le sens de libert et gratuit) et rappeler ainsi aux utilisateurs qu'un logiciel a un cot. Il s'agissait galement de choisir un vocabulaire correspondant mieux au monde des affaires, le terme Free (gratuit) de Free Software risquant gnralement d'inquiter les entreprises. Les dsignations Free Software et Open Source sont en ralit deux dsignations concurrentes pour un mme type de licence de logiciel. En utilisant la dsignation Free Software, on tient mettre en avant la finalit philosophique et politique de la licence, tandis que la dsignation Open Source met l'accent sur la mthode de dveloppement et de diffusion du logiciel. L'histoire et les polmiques souleves se trouvent dans l'article de l'OSI. D'un point de vue conomique, le label Open Source contribue la cration d'une nouvelle forme de march et d'conomie. Il s'agit de fournir une approche plus pragmatique des avantages du logiciel libre, en mettant de ct les connotations politiques et philosophiques, afin de n'en conserver que les avantages sur le plan de l'ingnierie. En d'autres termes : travailler ensemble, pour mieux avancer. Pour moi, l'initiative Open source est remarquable et doit tre souligne plus d'un titre.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 17

2. Deuxime Partie : Notions Thoriques

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 18

2.1 Java
Sommaire : 2.1.1 2.1.2 2.1.3 2.1.4 Prsentation gnrale la portabilit Orientation Objet Les Javabeans

2.1.1 Prsentation gnrale


Le logo Java, pour indiquer l'utilisateur qu'il peut aller chercher un caf pendant le chargement..

Java est un langage de programmation trs en vogue, notamment grce aux applets que l'on retrouve sur le Internet. Mais Java est loin de se limiter cela, et le but de ce chapitre est de prsenter trs brivement les particularits de ce langage. Vous comprendrez ensuite l'importance du mot Objet en Java, ou encore pourquoi ce langage est portable. Vous comprendrez aussi ce que sont les JavaBeans. Les dbuts de Java remontent 1991. Il est n d'un petit groupe d'employs de Sun Microsystem. Leur premire mission tait de crer un appareil capable de contrler plusieurs quipements lectroniques. A cette fin, ils ont cr un langage appel la base Oak. Le nom Oak, malheureusement trop proche d'une autre marque, fut rebaptis en 1995 Java . On est donc pass du chne (Oak) la tasse de caf. La premire version du kit de dveloppement Java fut disponible en 1996 et utilisable gratuitement. L'environnement Java est divis en plusieurs plateformes qui se diffrencient principalement par les composants qu'elles contiennent et qui sont chaqu'une oriente vers un certain secteur d'activit.

J2SE : destin aux applications pour poste de travail, elle contient entre autre la partie interface graphique du monde java. J2EE : destin pour les applications serveur (entreprise). J2ME : destin la programmation des mobiles, tels que les Gsm et les pda.
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 19

JavaCard : destin la programmation des cartes puces.

2.1.2 La Portabilit de Java


Un des intrts de Java est qu'une fois compil, le fichier excutable pourra l'tre sur n'importe quelle machine, qu'elle soit de type (Windows, Unix, Mac OS X, etc.). Cette portabilit est due la JVM (machine virtuelle Java). En effet, lors d'une compilation d'un programme Java, on n'obtient pas un excutable, mais du bytecode qui est donc li la JVM et non l'OS7. Celui-ci n'est pas li un OS, mais la JVM. Elle va alors interprter ce bytecode java, pour ensuite excuter le programme. En rsum, un programme Java est portable, car il existe une JVM adapte chaque OS.

2.1.3 Orientation Objet


La premire caractristique de Java est qu'il est orient objet. L'orient objet est une mthode de programmation qui permet de regrouper dans une entit logique ( une classe ) un ensemble de donnes ( des proprits ) et des fonctions ( des mthodes ) qui traiteront ces donnes. L'intrt de ce type de programmation est de rendre un code rutilisable. En effet, si pour une application, vous avez d dvelopper une classe qui gre des utilisateurs, et que plus tard, vous devez faire une seconde application qui utilise les mmes utilisateurs, vous n'aurez pas rcrire cette partie, car il suffira de l'intgrer directement dans votre nouvelle application. De plus, une proprit de la programmation oriente objet est l'hritage. On peut donc faire une hirarchie de classe. Autrement dit, si pour la nouvelle application, votre classe utilisateur ne suffit plus, car de nouvelles proprits apparaissent, au lieu de tout reprogrammer, il suffira de crer une nouvelle classes, qui hritera de la premire, et de crer dans cette classe fille les nouvelles proprits et nouvelles mthodes. Une autre particularit de la programmation oriente objet est l'encapsulation, qui divise la manire de voir un objet en deux :
7 OS : Operating System : le sytme d'exploitation
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 20

L'interface : les mthodes qu'il fournit, de manire gnrale ; L'implmentation : comment sont dveloppes les mthodes d'un point de vue technique.

L'intrt est qu'un dveloppeur qui utilise un objet d'un autre dveloppeur n'a pas besoin de savoir comment il est fait, mais uniquement les services qu'il fournit. Imaginons un objet, utilis pour l'authentification; il possde une mthode qui prend en paramtres un nom d'utilisateur et un mot de passe. Cette mthode vrifie l'existence d'un couple utilisateur / mot de passe correct. Pour le dveloppeur qui utilise cet objet, il importe peu que cette vrification soit faite via un fichier, une base de donnes ou par un autre moyen; pour lui, seul le rsultat compte.

2.1.4 Les Javabeans


Un JavaBean est dfini par Sun Microsystems comme un composant logiciel rutilisable, qui peut tre manipul visuellement par un utilitaire. Mais pratiquement, un JavaBean est une classe, qui possde quelques caractristiques :

Srialisable : elle doit tre srialisable (permet de sauver l'tat d'un objet avec l'utilisation de flux). Constructeur par dfaut : elle doit possder un constructeur par dfaut, c'est--dire un constructeur sans argument. Proprit : elle possde au moins une proprit.

Rem : Une proprit est une caractristique d'un objet, une information qui peut tre soit rcupre, soit spcifie, soit les deux.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 21

2.2 XML
Sommaire : 2.2.1 Prsentation gnrale 2.2.2 Exemple 2.2.3 Traiter un XML
2.2.3.1 SAX 2.2.3.2 DOM

2.2.1 Prsentation de XML


XML pour eXtensible Markup Language, est un langage informatique de balisage gnrique. Le World Wide Web Consortium (W3C) recommande XML pour exprimer des langages de balisages spcifiques (exemples : XHTML, SVG, XSLT). Son objectif initial est de faciliter l'change automatis de contenus entre systmes d'informations htrognes (interoprabilit), notamment sur Internet. XML est un sous-ensemble de SGML dont il retient plusieurs principes comme :

la structure d'un document XML est dfinissable et validable par un schma, un document XML est entirement transformable dans un autre document XML.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 22

2.2.2 Exemple
Le format XML est un standard pour le transport de donnes de tout type, sous forme d'un fichier texte. Cependant, il possde quelques rgles.
<?xml version=" 1 . 0 " encoding="ISO88591"?> <livre version="1" > <auteur> <nom>Lodomez</nom> <prenom>Philippe</prenom> </ auteur> <titre>Ouvrage n1</ titre> <! commentaire ... > <sommaire /> <chapitre titre="Chapitre 1"> <paragraphe>Dbut du ... </ paragraphe> <paragraphe>La suite est ici.. </ paragraphe> </ chapitre> <chapitre titre="Chapitre 2"> <paragraphe>Voil le second chapitre ... </paragraphe> </chapitre> </ livre >

Ce fichier simple nous montre que : il doit y avoir une et une seule balise racine ( ici <livre> ) ; une balise ouverte doit tre ferme soit via une balise fermante ( <livre> ... </livre>, <chapitre> ... </chapitre> ) ; soit directement ( <sommaire /> ) ; une balise peut contenir soit : du texte ou des donnes ( exemple : <prenom> ) ; d'autres balises ( exemple : <chapitre> ) ; soit rien du tout ( <sommaire />" ) ; une balise peut avoir des attributs ( <chapitre titre="Chapitre 1"> ) ; il peut y avoir des commentaires dans le fichier XML, compris entre <! et > ; une balise ouverte doit tre ferme au mme niveau ( par exemple <balise1><balise2></balise1></balise2> est incorrect ).

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 23

2.2.3 Traiter un XML


Deux grandes techniques sont disponibles pour lire et rcuprer des informations d'un fichier XML.

2.2.3.1 SAX
La premire technique est SAX (Simple Api for XML). Celle-ci se base sur un systme producteur/consommateur. Sans entrer dans les dtails, il y a un processus qui lit le fichier XML et ds qu'il a lu entirement une balise, il produit un vnement, par exemple : "'ouverture balise"', "'fermeture balise"', etc. C'est au consommateur de grer les diffrents vnements, afin d'effectuer les traitements ncessaires. L'avantage de cette technique est qu'elle est trs rapide et qu'elle ne consomme pas normment de mmoire. Par contre, elle ne permet pas de rcuprer ni de modifier les informations par la suite, ni mme de crer un fichier XML.

2.2.3.2 DOM
L'autre technique est DOM (Document Object Model). DOM, lui, va lire le document XML et le stocker en mmoire sous la forme d'un arbre. Ds que le traitement est fini, il est tout fait possible de voyager dans les noeuds de l'arbre, de les modifier ou de les supprimer. L'avantage est que, ds la fin du traitement, tout le document est facilement accessible en lecture et en criture, mais l'inconvnient est que cette mthode est beaucoup plus lourde en mmoire et en temps.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 24

2.3 L'API Reflection


Sommaire : 2.3.1 2.3.2 2.3.3 2.3.4 Prsentation gnrale Explication et fonctionnement Exemples Conclusion

2.3.1 Prsentation gnrale


Je vais vous parler de la reflection au sens large vu l'normit et les nombreuses possibilits de cette API. Pour tre complet, un TFE sera ncessaire. La reflection peut avant tout tre utile pour l'introspection, c'est--dire la dcouverte des caractristiques d'une classe (classe mre, champs, mthodes, ...). D'autre part, elle permet d'instancier des classes de manire dynamique, par exemple en agissant sur ses champs ou en appelant ses mthodes. La reflection est galement potentiellement intressante pour l'criture d'un gnrateur de code gnrique pour un ensemble de classes. Cette API sert galement dans la gnration du code de cration d'une table en base de donnes pour la persistance de la classe cible. Enfin, cette API est trs utile pour tout outil devant faire abstraction des spcificits d'une application en proposant un service gnrique pour n'importe quelle classe. On peut par exemple penser un outil de log.

2.3.2 Explication et fonctionnement


Intressons-nous tout d'abord au package java.lang.reflect dans lequel nous allons trouver les lments indispensables pour utiliser l'introspection. Mais commenons par voquer la classe java.lang.Class qui est la classe centrale sur laquelle repose la rflexivit, dont les instances de la classe Class peuvent tre des classes ou des interfaces. Cette classe est indispensable pour pouvoir manipuler des mtas donnes8. Exemple bien connu : Class.forName(NomdeClasse); Venons-en notre paquetage java.lang.reflect. Nous avons vu qu'il tait possible de rcuprer des mta donnes sur les champs partir d'une classe en appelant par exemple la mthode getField.
8 Donne servant dfinir ou dcrire une autre donne quel que soit son support
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 25

Partant d'un tel objet, nous pouvons consulter les informations l'aide de mthodes de classe :

String getName() Class getType() int getModifier() ..)

//nom du champ //type du champ //entier reprsentant la visibilit du champ (priv, public,

Le package contient donc une srie de classes qui offrent chacune une possibilit d'agir sur une classe vise dynamiquement. En voici les principales : La classe Modifier La classe Method La classe Contructor etc.

2.3.3 Exemples
Pour vous permettre de comprendre ce mcanisme un peu abstrait, voici quelques exemples : Exemple 1 : public String getNom(Object o){ Class c = o.getClass(); return c.getName(); } Exemple 2 : Class c = Class.forName("maClasse"); Class[] p1 = new Class[]{Integer.class, Integer.class); Class[] p2 = new Class[]{Integer.TYPE, Integer.TYPE); Method m1 = c.getMethod("somme",p1); Method m2 = c.getMethod("somme",p2); m1 correspond ici la mthode somme(Integer, Integer) alors que m2 correspond somme(int, int). Exemple 3 : void changeValeur(Object o, String nomChamp, Object val) throws Exception{ Field f = o.getClass().getField(nomChamp); f.set(o,val); }

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 26

2.3.4 Conclusion
La reflection permet donc de gnrer du code qui n'existe pas au dpart de l'application. Ce code sera cr dynamiquement par le programme. Cela rend une approche assez abstraite de l'excution et de l'volution de l'application. Mais les possibilits offertes par l'API sont normes. Peu d'entre elles ont t exploites pour l'laboration de mon application

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 27

2.4 Spring Framework


Sommaire : 2.4.1 Prsentation gnrale 2.4.2 Fonctionnement gnral
2.4.2.1 Bean Factory 2.4.2.2 Exemple

2.4.3 Spring Web MVC


2.4.3.1 Que veut dire MVC ? 2.4.3.2 Les contrleurs, modles et vues

2.4.1 Prsentation gnrale


Le principal avantage de Spring est l'IoC. IoC est l'acronyme de Inversion of Control, l'inversion du contrle en franais, ou encore l'injection de dpendances. Derrire ces termes se cache le fait que si un objet a besoin d'un autre objet, il ne va pas l'instancier lui-mme, mais il va lui tre fourni par un conteneur. Imaginons un objet A qui ncessite un autre objet B fournissant un accs une base de donnes. Sans l'injection de dpendances, on aurait le choix : soit de crer un objet B par new ObjetB(), et de paramtrer ensuite celui-ci afin d'effectuer la connexion ; soit d'utiliser une mthode Factory pour rcuprer une instance unique ( qu'on appellera Singleton ), dj paramtre, et d'utiliser la connexion existante, ce qui permet de ne pas devoir re-paramtrer chaque utilisation. Cela fonctionnera, mais si des modifications futures sont ncessaires, il faudra modifier le code plusieurs endroits, ce qui peut tre une perte de temps consquente dans de gros projets. C'est ici o Spring est intressant avec son principe d'injection de dpendances ! Lorsqu'on programme avec Spring, il est courant de diviser l'objet B en deux parties. une interface : qui dfinira les mthodes publiques ; une implmentation : une classe qui implmentera ces mthodes.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 28

Exemple :

L'intrt ici est que notre objet A contiendra une variable prive du type de l'interface, qui ne sera pas initialise, mais qui pourra tre dfinie via un accesseur. public class ClasseA { // rfrence vers l'objet via son interface private InterfaceB service B; // Accesseur utilis par Spring pour injecter la rfrence public void setServiceB(InterfaceB reference ) { this.serviceB = reference; } // Code utilisant les mthodes de l'interfaceB..... } Dans le code de l'objet A, une interface sera utilise pour l'accs la base de donnes. Le reste de la magie se situe dans le fichier de configuration de Spring qui, dans la dfinition de l'objet B, contiendra une proprit qui correspond l'accesseur dfini pour l'interface de B. Donc, durant l'excution, ds qu'on rcuprera un objet A via Spring, ce dernier va lui fournir directement un Objet B. L'intrt rside dans le fait que l'objet A n'est pas directement li un autre objet. Premirement, parce qu'il utilise une interface, autrement dit des services, sans avoir de contexte de type de base de donnes, de fichiers, ou autres. Et deuximement, parce qu'il n'instancie pas lui-mme un objet qui implmente cette interface, mais celui-ci lui est fourni, et donc l'objet A est totalement indpendant du type de l'objet B. Donc si plus tard, on ne dsire plus utiliser de base de donnes, mais un autre moyen qui fournit les mmes services, il suffira par exemple de crer une nouvelle classe B2, qui implmentera toujours la mme interface que B. Ensuite, on devra modifier le fichier de configuration de Spring pour qu'il ne fournisse plus un objet B, mais un objet B2 lors de la cration d'un objet A.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 29

2.4.2 Fonctionnement de Spring


Le fonctionnement de Spring est bas sur un fichier de configuration XML, dans lequel sont dfinies toutes les classes, ainsi que leurs dpendances.

2.4.2.1 BeanFactory
Le Bean Factory reprsente en fait le conteneur permettant l'inversion de contrle ( Pattern Factory ). C'est lui qui permet la configuration et la liaison des objets par Injection de dpendances et assure aussi la gestion des objets. Typiquement, une classe qui implmente cette interface sera utilise : XmlBeanFactory, qui va utiliser un fichier Xml comme source de configuration. Pour cela, il va lire le fichier XML et utiliser l'introspection pour accder aux proprits des objets, et ainsi configurer les objets selon les informations lues dans le fichier de configuration XML.

2.4.2.2 Exemple d'utilisation

// Instantiation du Bean Factory qui utilisera le fichier // src/ressource/beans.xml comme configuration Ressource _res = new FileSystemRessource (src/ressources/beans.xml ); XmlBeanFactory factory = new XmlBeanFactory (_res) ; // Rcupration d 'un objet MonObjet test = (MonObjet ) factory.getBean (monObjet) ; // Utilisation normal de l'objet test test.methode1 ( ) ; test.methode2 ( ) ;

2.4.3 Spring Web MVC 2.4.3.1 Que veut dire MVC?


MVC est un modle de conception qui impose la sparation entre les donnes, les traitements et la prsentation. C'est pour cette raison que l'application est divise en trois composants
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 30

fondamentaux : le modle, la vue et le contrleur. Chacun de ces composants tient un rle bien dfini.

2.4.3.2 Modle, Vue et Contrleur


Modle Le modle reprsente le comportement de l'application : traitement des donnes, interactions avec les bases de donnes et intgration de celles-ci la vue.
Vue La vue correspond l'interface avec laquelle les utilisateurs interagissent. Elle n'effectue aucune requte sur les bases de donnes et autres, mais reoit des informations brutes des modles et s'occupe de la mise en page de ces informations. Au niveau Web, la vue est principalement conue en HTML, mais peut tre aussi bien en Flash. Contrleur Pour finir, le contrleur interprte les requtes de l'utilisateur et appelle le couple modle/vue afin de rpondre la requte. Ainsi, lorsque l'utilisateur clique sur un lien ou soumet un formulaire HTML, le contrleur ne produit rien et n'effectue aucun traitement. Il intercepte la requte et dtermine quels modles et quelles vues doivent tres utiliss.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 31

3. Troisime Partie : Etude et Analyse des outils de Reporting

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 32

3.1 Introduction
La premire partie de mon stage consiste faire l'tude et l'analyse de diffrents outil de reporting (JasperReport, JOOReports, iText et BIRT). Qui dit analyse profonde veut dire conclusion, enseignement, bon point , mauvais point, etc. Chaque outil a donc d tre dcortiqu pour, au final, tre retenu au pas. Je vais donc ici vous dcrire prcisment chaque package open source de gnration de rapports en reprenant chaque fois certains points prcis pour avoir une bonne base de comparaison. Le choix final de l'outil utiliser se fera en concertation avec le patron et un des dveloppeurs de chez Manex.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 33

3.2 Prsentation de iText


Sommaire :

3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8

Introduction Installation Cration de pdf Mise en forme Interactivit Template Cration de rtf et html Conclusion

3.2.1 Introduction

iText est une librairie gratuite Java protge par la licence Mozilla Public License qui permet de gnrer principalement des documents de type PDF. Elle a t crite par Bruno Lowagie et Paulo Soares. Cette librairie est trs riche en fonctionnalits.

3.2.2 Installation de la librairie


Tout d'abord, il vous faut tlcharger le jar l'adresse suivante : www.lowagie.com/iText/download.html Ensuite crer un nouveau projet dans votre logiciel de dveloppement (NetBean, Idea, Sun One Studio, etc.). Il suffit simplement d'insrer le jar (itext-1.4.jar) dans les proprits de ce projet. L'installation termine, vous pouvez vous servir de la librairie iText au sein de votre projet.

3.2.3 Cration d'un PDF


Deux classes au minimum sont ncessaires et obligatoires pour une premire cration de rapports au format pdf (en plus de la classe de flux de sortie videmment). a) La classe Document C'est une classe qui vous permet de crer comme son nom l'indique un document. Elle est compose de trois constructeurs:
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 34

Un gnrique qui ne prend pas de paramtres. Deux autres qui permettent de dfinir le format de sortie du document.

Exemple: //cration d'un document //par dfaut //portrait //paysage

Document d = new Document(); Document d = new Document(PageSize.A4); Document d = new Document(PageSize.A4.rotate());

b) La Classe PdfWriter PdfWriter permet d'crire le document physiquement sur le disque dur et ce de manire trs simple. Il suffit d'appeler la mthode static getInstance qui retourne une instance de PdfWriter et de lui passer en paramtre notre document ainsi q'un flux de sortie de type FileOutputStream.
Exemple:
try {

} catch (FileNotFoundException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); }

PdfWriter pw = PdfWriter.getInstance(d, new FileOutputStream("d:\test.pdf")); d.open(); d.add(new Paragraph("Mon Premier Document : ")); d.close(); pw.close();

3.2.4 La Mise en Forme


Celle-ci est videment trs importante pour obtenir un rapport clair et lisible. IText comprend une quantit de styles diffrents appliquer au rapport, mais il faut noter que tout doit tre fait en ligne de code, c'est videmment trs long et le rsultat est souvent peu valorisant. Voici une partie des diffrentes classes utiliser :

Chunk : elle reprsente la plus petite unit que l'on peut afficher sur un document. Phrase : elle permet de crer des phrases avec plusieurs fonctionnalits intressantes. On peut par exemple dfinir l'espacement entre plusieurs Phrases ou encore dfinir une Phrase avec
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 35

plusieurs polices... Paragraph : elle permet de grouper plusieurs phrases. List : elle permet de crer des listes numrotes (numriques ou alphabtiques). Une List est compose de ListItem. Table : iText donne la possibilit de crer des tableaux via la classe PdfPTable. Ils ont la mme forme que les tableaux en HTML et fonctionnent de la mme manire. Ils sont composs de colonnes et de lignes. Image : elle permet d'insrer une image dans votre compte rendu et d'en modifier la taille si cela s'avre utile.

3.2.5 Les Interactivits

Les Ancres

Local Goto : Il permet de spcifier des points de destination au sein de votre document, tels que les signets sous Ms Word ou en HTML. Anchor : cette classe permet de crer des liens l'intrieur de votre document comme Local Goto, mais donne aussi la possibilit d'en crer vers l'extrieur (vers un site Web par exemple).

Les Actions

Vous pouvez donner une certaine interactivit votre pdf en lui spcifiant des actions. La classe qui se charge de les raliser est la classe PdfAction. Possibilits :

excuter du JavaScript. lancer un lociciel depuis votre pdf. etc.

3.2.6 Template
Le but de ma recherche tait de trouver comment gnrer l'aide de l'outil de reporting le plus facilement possible des templates, sorte de modles trous qui serait compltes par la suite. IText ne m'a pas propos ce que je cherchais. Cette librairie permet bien l'utilisation de templates, mais elles sont fort limites et fort complexes pour le peu qu'elles apportent. En gros, elles permettent de faire des templates de design statique. Il faut pour cela utiliser la mthode createTemplate(float, float) de la classe PdfContentByte.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 36

3.2.7 Gnrer des documents rtf et html


iText permet galement de crer des documents au format RTF (Word) et HTML. Le Html a servi aux deux crateurs pour faire du debuggage, car la syntaxe PDF est complexe et il leur a t difficile de voir exactement quoi ressemblait le rsultat sur un pdf lorsque celui-ci tait erron ou illisible. Ils ont donc laiss cette classe pour les utilisateurs qui auraient besoin de gnrer des documents Html. Crer un document de type RTF ou Html se fait de la mme manire que pour un document PDF. a) Le format RTF : La grande diffrence vient du fait que l'on n'utilise plus l : >> pdfWriter (...) mais : >> RtfWriter2(...) Attention : Toutes les possibilits offertes pour PDF ne sont pas applicables un doc RTF, comme par exemple la prise en charge des images. Seuls les formats suivants sont supports : JPG, BMP, PNG WMF. Le cryptage n'est pas possible non plus. b) Le Format Html : Pour gnrer des documents Html, c'est la mme procdure que pour le RTF. La seule diffrence est qu'il faut passer par la Classe HtmlWriter. Le HTML permet aussi d'utiliser des feuilles de style (css).

3.2.8 Conclusion
Les avantages de iText sont nombreux :

Cration assez facile de pdf par quelques lignes de code. Librairie indpendante de la plateforme, car crite en Java et gratuite. Compilation du rapport trs rapide. Simplicit d'installation. Grande quantit de petites fonctionnalits pour rendre le pdf attractif . Nombreux exemples disponibles sur le site officiel. Boutons, signatures digitales et autres fonctions avances de pdf. etc.

Mais, des inconvnients sont aussi noter:


iText, pour moi, est limit la cration des PDF basiques ... sinon beaucoup (trop) de lignes de code. La cration de tableau est laborieuse. Le design est assez lourd mettre en place (peu de rsultats valorisants).
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 37

Les templates type iText ne convenaient pas au but recherch dans mon travail, car pas de variables, fusion. Etc.

Pour finir, les cas d'utilisation idaux de iText seraient par exemple:

De petits documents / peu de contenu Pdf avanc (avec bouton, etc.) Pas d'dition Etc.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 38

3.3. Prsentation de JasperReports


Sommaire :

3.3.1 3.3.2 3.3.3 3.3.4

Introduction Prsentation de iReport Etapes de cration du rapport Design XML


3.3.4.1 3.3.4.2 3.3.4.3 3.3.4.4 3.3.4.5 3.3.4.6 3.3.4.7 3.3.4.8 Forme gnrale Source de donnes Variable Paramtre Elment Zone du rapport Groupe Outil de cration

3.3.5 API et export 3.3.6 Conclusion

3.3.1 Introduction
Jasper Reports est une librairie Opensource crite en Java. Les rapports de donnes de sources diverses vont pouvoir tre gnr grce cette librairie. Le but est de crer une template (ou modle de mise en forme ) de ces donnes pour produire un ou plusieurs des formats suivants:

sortie vers une imprimante fichier PDF fichier HTML fichier XLS fichier CSV fichier XML

La force de Jasper Reports rside dans l'utilisation de design qui permet de dfinir le rendu visuel des donnes de manire gnrique. Ainsi le design est compil une fois pour toutes et est utilis chaque fois qu'on le dsire pour le remplir avec les donnes. Il est donc rutilisable. Les applications sont nombreuses, pouvant aller de rapports intgrs dans des applications Java, un outil indpendant de gnration de rapports ou encore une intgration du contenu Web J2EE avec une gnration de contenu la demande pour avoir une visualisation toujours jour de
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 39

ses donnes.

3.3.2 Prsentation de iReport

Pour la cration du design, j'ai utilis iReport. Une brve introduction son sujet me semble utile. C'est un outil de conception WYSIWYG (What You See Is What You Get) exclusivement rserv la cration de fichiers de description pour JasperReports. Il permet donc de produire de manire assez intuitive des fichiers .jrxml (fichiers xml spcifique jasperReports) exploitables par JasperReports pour gnrer des rapports au sein d'une application Java. Le format de rapport gnr dpend ensuite de JasperReports et du code utilis(html, pdf, csv..). C'est une application Java pure qui ncessite l'installation d'une JVM (Java Virtual Machin) pour s'excuter. Site officiel : http://www.jasperforge.org/sf/projects/ireport

3.3.3 Les diffrentes tapes de cration du rapport

Pour crer un rapport, il faut effectuer les tapes suivantes : 1. Crer un fichier XML de description du modle, cela veut dire : dfinir la ou les sources de donnes, dfinir plus spcifiquement les donnes utiliser, effectuer des calculs sur ces donnes, placer graphiquement l'emplacement des rsultats et crer la prsentation graphique du rapport. 2. Compiler le design afin d'obtenir un fichier .jasper. La compilation du rapport permet dj de vrifier la syntaxe utilise et d'assurer que le rapport soit utilisable. Cette tape permet
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 40

galement de compiler les expressions Java utilises dans le design. Le rsultat est un fichier contenant tous les objets dcrits sous forme srialise. Le but de cette tape est d'avoir un fichier de description du design prt l'emploi, prt recevoir les donnes traiter. 3. Remplir le design compil avec les donnes, afin d'obtenir un rapport complet. Cette tape cre un fichier intermdiaire contenant les donnes rfrences dans le design et rcupres partir des sources de donnes spcifies. Ce fichier permet de collecter toutes les donnes une seule fois et de crer tous les types de sorties offerts par JasperReports. 4. Crer, partir du rapport complet, un exemplaire dans chacun des formats de sorties voulus.

3.3.4 Design XML 3.3.4.1 Forme Gnrale


Elle se prsente donc sous forme xml.
Exemple :
<?xml version="1.0"?> <!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"> <jasperReport name="monRapport" ... > ... </jasperReport>

3.3.4.2 Sources de donnes


Il faut commencer par dfinir la Query String qui dfinit la requte permettant de rcuprer les donnes. <queryString><![CDATA[select * from Avocats ...]]></queryString> Il faut bien entendu dfinir la requte SELECT qui cherche chacun des champs dont vous avez besoin. Ensuite il faut dclarer chacun de ces champs pour pouvoir les utiliser et indiquer son type correspondant en Java.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 41

Par exemple pour la table suivante:


Champ Type de Donne Length -----------------------------------------------------------------------Avocat_ID int 4 nom varchar 20 ....

On dclarera les champs comme suit:


<field name="Avocat_ID" class="java.lang.Integer"/> <field name="nom" class="java.lang.String"/> ...

Pour utiliser ces champs dans le rapport, la syntaxe est la suivante: $F{nom du champ}

3.3.4.3 Variable
Il est possible, dans le corps du design, de dclarer des variables afin d'effectuer des calculs et de les afficher. L'appel de la variable dans le modle se fait tout naturellement de la faon suivante :
$V{VariableName}

3.3.4.4 Paramtre
L'utilisation de paramtres est une autre fonctionnalit intressante. Elle permet de personnaliser son rapport, sans avoir recompiler le design. Les paramtres sont dclars de la mme manire que les champs:
<parameter name="ReportTitle" class="java.lang.String"/>

L'appel de paramtres est assez identique aux autres appels : $P{nom du paramtre}
Tous les attributs dclars doivent tre utiliss dans des expressions. Ces expressions permettent galement de raliser des oprations entre plusieurs variables. Les expressions reprsentent la valeur que prend un lment.

3.3.4.5 Elment
Les lments reprsentent des zones du rapport avec des contraintes particulires correspondant aux diffrents types d'lments. Tous les lments doivent avoir comme caractristiques les coordonnes et la taille de la zone. On peut galement utiliser des expressions Java dans le contenu des Expressions. Par exemple, pour afficher la date du jour on peut utiliser:
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 42

<textFieldExpression class="java.util.Date"><![CDATA[new Date()]]></textFieldExpression>

3.3.4.6 Zones du Rapport


Une page d'un rapport contient plusieurs zones prdfinies. Chacune de ces zones a une fonction particulire. Voici le dcoupage du rapport:

title : apparat uniquement sur la premire page pageHeader : en-tte de chaque page columnHeader : contient les titres des colonnes detail : contient le contenu des colonnes, c'est--dire chacun des enregistrements des champs utiliss columnFooter : bas de colonne, apparat aprs le dtail, pour afficher par exemple, des cumuls pageFooter : bas de page, se trouve sur chaque page summary : informations concernant les donnes affiches dans le dtail, comme par exemple, un graphique synthtisant les donnes.

Attention : Cette dcoupe en zones n'a pas que des avantages. En effet, celle-ci rend impossible la cration d'une zone de texte statique de grande taille (sur plusieurs pages). Ce problme est assez contraignant pour l'objectif tabli par Manex.

3.3.4.7 Groupes
Dans un design, ils permettent de faire des regroupements de donnes qui rpondent une caractristique commune et permettent d'afficher un en-tte et une fin de groupe. Un groupe est dclar en dehors des zones.

3.3.4.8 Outils de cration du design


Le format XML utilis est facile comprendre, mais l'criture de son fichier de design reste trs fastidieuse. Fort heureusement, il existe plusieurs outils graphiques permettant de raliser le design du rapport. Ces outils facilitent grandement la disposition des composants et leur dimensionnement.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 43

IReport (voir aussi point 4.2) :

Parmi les outils disponibles, j'ai utilis iReport qui est dvelopp en Java et qui est gratuit. C'est un outil standalone (une application part entire) qui permet d'utiliser les fonctionnalits de JasperReports avec galement un outil pour crer les graphiques (voir galement point 4.2).

JasperAssistant :

JasperAssistant est un plug-in pour Eclipse. Je ne l'ai pas test, mais il comporte le mme genre de fonctionnalits que iReport. Site officiel : http://www.jasperassistant.com

Autres outils :

Il existe de nombreux autres outils, depuis les simples visualisateurs de design jusqu'au gnrateur graphique. Certains d'entre eux sont rpertoris sur le site de JasperReports : http://jasperreports.sourceforge.net

3.3.5 API et Export


Une fois le design ralis, les tapes suivantes sont faites par des appels Java aux mthodes de la librairie de JasperReports. La premire tape consiste charger le design et le compiler. Nous utilisons alors le package net.sf.jasperreports.engine. //Chargement et compilation du rapport JasperDesign jasperDesign = JRXmlLoader.load("Mondesign.jrxml"); JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); Une fois le rapport compil, nous pouvons passer nos paramtres et le remplir via une connexion notre base de donnes. Pour passer les paramtres, il faut construire une HashMap contenant
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 44

les couples nom du paramtre - valeur. // Excution du rapport JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, MyHashMap, ObjConnection); Nous obtenons alors un objet JasperPrint qui contient tout le rapport. C'est partir de cet objet que nous pouvons faire les exports dont nous avons besoin. Le package net.sf.jasperreports.engine.JasperExportManager contient les diffrents formats disponibles.
Exemple :
// Cration du rapport au format PDF JasperExportManager.exportReportToPdfFile(jasperPrint, "fichier.pdf"); // Cration du rapport au format HTML JasperExportManager.exportReportToHtmlFile(jasperPrint, "fichier.html"); // Cration du rapport au format XML JasperExportManager.exportReportToHtmlFile(jasperPrint, "fichier.xml", false);

N.B. : Tout ceci peut tre ralis par iReport et pas forcment par code Java dans un IDE.

3.3.6 Conclusion
La librairie Jasper Reports possde de nombreux atouts :

La librairie est indpendante de toute plateforme car le langage utilis est Java. Elle utilise des librairies Java. Les connections aux sources de donnes sont vastes et facilement ralisables. Les designs crs sont facilement rutilisables par la compilation en plusieurs temps. Le passage de variable ces templates (.jasper) rutilisables est assez facile. La librairie est open source et trs active.

On peut tout de mme noter quelques inconvnients : La dpendance avec d'autres librairies oblige la sortie d'une nouvelle version de Jasper Reports pour profiter des volutions des autres librairies L'utilisation de iReport (ou autre) est presque obligatoire pour crer le fichier xml de design, vu la complexit de la chose (sinon on se trouve dans le mme situation qu'avec iText). Le design est limit... On ne peut pas, par exemple, crer un texte statique de plusieurs pages mme avec l'utilisation de sous rapport.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 45

A cela, on peut ajouter les avantages et inconvnients de iText, vu que Jasper se sert de iText pour la gnration dans les diffrents formats de sortie. Cas d'usages idaux d'utilisation de JasperReports : Pour les pdf Les rapports tabulaires Lors de sources de donnes diverses Utilisation de sous-rapports communs Fusion de donnes.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 46

3.4 Prsentation de JOOReports


Sommaire : 3.4.1 Introduction 3.4.2 Installation 3.4.3 Utilisation de FreeMarker
3.4.3.1 3.4.3.2 3.4.3.3 3.4.3.4 Introduction Rappel du modle MVC Fonctionnement + schma Atout de FreeMarker

3.4.4 3.4.5 3.4.6 3.4.7

OpenOffice Le plugin Add-in ODF Utilisation de JOOReports Possibilits des templates


3.4.7.1 Introduction 3.4.7.2 Rappel sur les templates 3.4.7.3 Diffrentes insertions de variables et champs

3.4.8 Conversion PDF et DOC 3.4.9 Conclusion

3.4.1 Introduction

Tout comme les deux outils prcdents, JOOReports est une librairie Open source Java qui permet la gnration de rapports dans diffrents formats (odt, pdf, rtf, html). JOOReports supporte OpenOffice.org 2.0 ainsi que le format OpenDocument. La libraire a adopt FreeMarker comme moteur interne de templates. On peut dire que JOO a atteint une certaine stabilit. JOOReports a besoin de :

Un Java Runtime Environment (version 1.4 ou suprieur) OpenOffice.org 2.0 Texte pour composer les templates et autres modles Pour l'utiliser comme application Web, un container de Servlet comme Apache Tomcat

Si on dsire gnrer un rapport dans un autre format que OpenDocument Text (ODT), une connexion une instance OpenOffice.org 2.0 (socket/port) est obligatoire.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 47

3.4.2 Installation
La librairie JOOReports s'utilise de la mme manire que les deux prcdentes (iText et JasperReports) : il faut la tlcharger (jooreports-2.x.zip ou jooreports-2.x.tar.gz) sur le site http://www.jooreports.sourceforge.net. On insre par la suite le jar dans le projet dsign. Par contre, pour cet outil de reporting, il tait ncessaire d'installer OpenOffice (voir point 2.4). Autre contrainte, la socit Manex veut en fait proposer ses clients la possibilit de modifier leurs rapports, aprs cration, dans le format MS Word (un pdf n'tant pas modifiable); j'ai d trouver un plugin ralisant la conversion ODT (format d'un fichier OpenOffice) vers RTF (format MS Word) (explication au point 5.5).

3.4.3 Utilisation de FreeMarker 3.4.3.1 Introduction


FreeMarker est un moteur de template; un outil gnrique servant produire des sorties de textes bases sur un template (modle de base complter ). C'est un package Java, une librairie de classes pour dveloppeur. Ce n'est pas une application part entire, mais quelque chose que les programmeurs utilisent dans leurs applications. FreeMarker a t conu pour permettre une gnration facile de pages Web html, en particulier pour des applications servlet bases sur le modle MVC.

3.4.3.2 Rappel modle MVC


MVC est un modle de conception qui impose la sparation entre les donnes, les traitements et la prsentation. C'est pour cette raison que l'application utilisant MVC est divise en trois composants fondamentaux : le modle, la vue et le contrleur. Pour plus d'information, voir le point : 2.4.3

3.4.3.3 Fonctionnement + schma


FreeMarker est donc bas sur le concept que les designers et les programmers sont des personnes diffrentes lors du dveloppement. Les designers ont la charge de crer les pages HTML (ou autres), les images ou tout autre lment visuel, tandis que les programmers ont leur charge la prparation des donnes qui seront affiches plus tard. De faon plus prcise, les designers vont
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 48

fabriquer les templates tandis que les developpers vont crer le programme java structurant l'ensemble des donnes. Ce concept implique donc que lors d'une transformation, deux lments sources sont ncessaires :

Le fichier modle est un fichier .ftl dfinissant les rgles d'affichage. Les objets java sont les donnes afficher qui sont encapsules dans ces objets.

Lors de cette transformation, le template va recevoir les donnes afficher, ensuite va excuter son code d'impression.

3.4.3.4 Atout de FreeMarker


Les grands atouts de FreeMarker sont son implmentation, qui a t totalement ralise dans le langage java, et sa structure qui permet une sparation du traitement des donnes et de leur reprsentation. Autre atout, FreeMarker est certifi ISO (OpenSource), il est donc compltement libre.

3.4.4 OpenOffice
Comme dj prcis dans la partie installation, j'ai d m'quiper de l'outil OpenOffice (tlchargement totalement gratuit) pour y crer le template de base pour notre application. Il s'agit en fait de faire un document comprenant des variables qui seront remplies par la suite. La syntaxe basique de ces variables est la suivante : ${name} Cette technique est trs facile et permet de raliser des rapports de qualit sans les diffrentes contraintes rencontres avec les deux premiers outils de reporting dj tests (iText et JasperReports).

3.4.5 Le plug in Add-in ODF


Il reste cependant un problme. Le format OpenDocument Text (ODT) est incompatible avec le format utilis par MicroSoft Word. Cependant, la socit Manex dsire offrir ses clients la possibilit de modifier leurs rapports avec MS Word. Il m'a donc fallu utiliser un tout nouveau plugin appel Add-in ODF . Il permet d'ouvrir et d'enregistrer un fichier Open Office avec Word
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 49

et est compatible avec les versions XP, 2003 et 2007 de Microsoft Word. Il faut installer galement l'Office Compatibility Pack tlchargeable sur le site de Microsoft.

3.4.6 Utilisation de JOOReports


Un exemple simple de l'utilisation de cette librairie dans votre code source Java peut tre :
// rcupre le fichier ODT cr au pralable DocumentTemplate template = new ZippedDocumentTemplate(new File("XX.odt")); Map data = new HashMap(); data.put("nom", "Lodomez"); // on remplace la variable ${nom} par 'Lodomez' // creation du rapport modifi. template.createDocument(data, new FileOutputStream("myReport.odt"));

Cet exemple utilise une simple HashMap pour insrer les variables. On peut utiliser des objets Java plus complexes ou utiliser de l'XML. Pour utiliser JOOReports dans une application Web, il faut tlcharger le jooreports-2.x.war (qui est une archive d'application web) et le dployer dans votre container de servlet prfr.

3.4.7 Possibilits des templates 3.4.7.1 Introduction


Comme dj prcis, les JOOReports templates sont des fichiers OpenDocument ODT. Un tel fichier est en fait un ensemble de fichiers XML (un Zip).

3.4.7.2 Rappel sur Template


Les templates sont en fait crites dans un langage appel FTL (pour FreeMarker Template Language). C'est un langage assez simple. Une template (= programme FTL) est un mixte de ces diffrentes sections :

Text : le texte principal de la page, il ne varie pas. Interpolation : ces sections seront remplaces en sortie par des valeurs calcules. Les Interpolations sont dlimites par ${ et } ou par #{ et }. FTL tags : sont similaires au tag HTML, mais sont des instructions pour le FreeMarker et ne seront pas imprimes en sortie. Comments : les commentaires, ils sont dlimits par <#-- et -->.
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 50

FreeMarker supporte une syntaxe d'alternatives, o les crochets( [ et ]) sont utiliss la place de < et > . Par exemple :

appel de directives prdfinies : [#list maladies as malad]...[/#list] appel de directives dfinies par l'utilisateur : [@myMacro /] commentaire : [#-- the comment --]

[#ftl] <p>Liste des maladies du patient: <table border=1> <tr><th>Nom<th>Price [#list maladies as malad] <tr> <td> [#if malad.size = "large"]<b>[/#if] Nom : ${malad.name} [#if malad.size = "large"]</b>[/#if] <td>Grave : ${malad.gravit} [/#list]

</table>

3.4.7.3 Diffrentes insertions de variables et champs


Un champ qui sera remplac avec la valeur d'une variable peut tre spcifi en utilisant la notification standard : Bonjour ${name} ! Ici 'name' sera remplac par la valeur passe lors de l'excution. Pour insrer une instruction plus avance, une condition par exemple, on utilisera des directives de FreeMarker : [#assign totalPrice = unitPrice * quantity]

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 51

3.4.8 Conversion PDF et DOC


Si vous souhaitez gnrer un rapport dans le format PDF ou DOC une conversion du rapport ODT dans le format voulu sera ncessaire. Premirement, il vous faut crer une connexion OpenOffice.org, effectuer la conversion puis fermer la connexion. Exemple :
documentTemplate = new ZippedDocumentTemplate(c:/template.odt ); documentTemplate.createDocument(map, fichierTemporaireODT); Runtime.getRuntime().exec("c:\Program Files\OpenOffice.org 2.1\program\soffice.exe" -accept="socket,port=8100;urp;"); openOfficeConnection = new SocketOpenOfficeConnection(); openOfficeConnection.connect(); converter = new OpenOfficeDocumentConverter(openOfficeConnection); documentTemplate.createDocument(map, FichierTMPodt); pdfFile = new File(FILENAME); converter.convert(FichierTMPodt, pdfFile); openOfficeConnection.disconnect();

3.4.9 Conclusion
Je peux dire que la librairie JOOReports m'a sduit de par sa facilit de prise en main. Elle convient, pour moi, parfaitement au travail demand. Les avantages de JOOReports :

Comme les deux librairies prcdentes, JOOReports est crite en Java et est OpenSource La gnration de templates est parfaite et trs intuitive. L'utilisation de FreeMarker qui est un moteur de templates trs puissant est galement un point relever. L'apport de JOOscript permet d'amliorer et de personnaliser ses rapports. Il n'y a aucun problme quant au remplissage de tableaux et autres listes. Etc.

Le seul inconvnient noter est :

L'obligation d'utiliser un plugin de conversion OpenOffice / Word (et l'Office Compatibility pack ) pour les personnes n'utilisant pas ce logiciel libre et dsirant modifier leur rapport.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 52

3.5 Prsentation de BIRT


Sommaire : 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.5.7 Introduction Utilisation gnrale Installation Cration d'un rapport Dfinition des jeux de donnes Conception (design ) d'un rapport Conclusion

3.5.1 Introduction

BIRT (Business Intelligence and Reporting Tools) est un projet open source de la fondation Eclipse permettant de raliser des rapports sous deux canaux : HTML et PDF. Pour ce faire, BIRT utilise deux fichiers : 1. un fichier de donnes (xml quelconque) 2. un tat (ou template reprsentant la forme du rapport) au format rptdesign (propritaire BIRT). BIRT peut tre utilis de deux facons : sous Eclipse via un plugin permettant de dessiner des tats et de gnrer le rapport ou en runtime dans du code java. Cette dernire mthode ne permet que de lancer la gnration du rapport (le design aura du tre crit la dure ).

3.5.2 Utilisation gnrale

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 53

Son utilisation se rsume de la faon suivante :


chaque modle est dcrit dans un fichier (au format xml) ; le but est d'afficher des donnes. Pour chaque rapport, l'outillage de BIRT propose une vue de l'explorateur de donnes (permet la dfinition d'une ou plusieurs BD, xml, etc.) ; l'dition du rapport se fait en mode graphique (cf cration d'un GUI) ; une prvisualisation est disponible tout moment lors de la cration du rapport ; la mise en exploitation se fait en dployant le rapport sur un serveur d'application J2EE dans lequel le moteur d'excution BIRT a t install. Le format de gnration sera pdf ou HTML.

3.5.3 Installation
Le projet BIRT propose plusieurs types de tlchargement. Le principal dcoupage se fait entre la partie outil de conception (Report Designer) et la partie moteur d'excution (Report Engine).

Report Designer : permet d'ajouter l'outillage de BIRT une installation d'Eclipse existante. Une version autonome de BIRT est aussi propose : RCP Report Designer. Cette version de l'outillage de BIRT se prsente sous la forme d'une application Eclipse RCP. Elle contient la base d'Eclipse et tous les pr-requis de BIRT (c'est la version que j'ai utilis). Report Engine : permet d'installer le moteur de gnration de rapports dans un serveur d'applications J2EE (Tomcat, JBoss,...).

3.5.4 Cration d'un rapport


BIRT ne ncessite pas la cration d'un projet Eclipse d'un type particulier. Les fichiers peuvent se trouver dans un projet existant (projet Java, projet 'Simple', ...). Un type de projet nomm projet d'tat est tout de mme propos. La cration d'un nouveau rapport se fait en indiquant le nom et l'emplacement du fichier. Une fois cr, le rapport est disponible dans la zone d'dition. Le mode d'dition par dfaut permet de manipuler graphiquement le contenu du rapport.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 54

3.5.5 Dfinition des jeux de donnes


De la mme manire que JasperReports, chaque rapport de BIRT est associ un ou plusieurs jeux de donnes dont le but est de dfinir la structure des donnes manipulables dans le rapport et la faon dont BIRT doit les rcuprer. Avec BIRT 2.0, les jeux de donnes peuvent tre obtenus partir de quatre types de sources de donnes diffrentes :

une base de donnes relationnelles accessible par JDBC, un fichier XML, un fichier 'plat' (fichier texte, fichier .csv, ...), un script renvoyant les donnes (crit en Java ou JavaScript).

3.5.6 Conception ( design ) d'un rapport


Comme dj signal, BIRT propose un diteur graphique pour la cration de rapports. BIRT nous offre plusieurs types de composants graphiques (Label, Texte, Image, Grille, Table, etc.). L'utilisation de ceux-ci se rapproche fort de la conception d'un simple GUI java.

Chaque composant du rapport possde ses propres proprits qui sont ditables dans la vue nomme diteur de proprit. Les composants texte dynamique sont trs utiles, car ils peuvent tre associs des expressions de Javascript (dont BIRT propose un assistant de cration).

3.5.7 Conclusion
Un bref rappel des diffrentes caractristiques gnrales de BIRT est souligner. Le reporting de BIRT se base sur trois composants : 1. Outil graphique de cration de rapports bas sur Eclipse. 2. Moteur de gnration de rapports.
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 55

3. Interface de visualisation de rapport. La cration de rapport se fait en deux tapes : 1. Cration d'un ou plusieurs jeux de donnes (data set). 2. Manipulation des donnes (formatage, calcul, etc.) Reste souligner les avantages et inconvnients de cet outil de reporting ressemblant fort JasperReports (vu au point 4). Les avantages de BIRT : Freeware. Accs aux sources de donnes assez ais. Aucun impact sur les applications mtier. Transformation incrmentale possible. Possibilit d'insertion de liens hypertextes dans les rapports. Rapports multicubes synchroniss. Possibilit de fonctionner en stand alone. Les inconvnients de BIRT: BIRT ne supporte pas le format RTF L'utilisation d'Eclipse... L'diteur SQL ne possde pas d'aide. Il existe peu de fonctions applicables aux jeux de valeurs. Le gnrateur de formules manque d'aide. Affichage conditionnel via codes. La scurit de la BD n'est pas garantie. Pour ma part, les cas idaux d'utilisation sont : Des applications web Les rapports tabulaires du mme genre que JasperReports L' utilisation de sources de donnes diverses L' utilisation de sous-rapports communs

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 56

3.6. Comparatif des diffrents outils analyss


Sommaire : 3.6.1 3.6.2 3.6.3 3.6.4 Introduction Tableau rcapitulatif Choix et Raison Conclusion

3.6.1 Introduction
Voil, vous venez de dcouvrir les quatre outils de reporting que j'ai eu l'opportunit de dcouvrir et d'analyser. Maintenant, il faut bien faire un choix. Avant tout, un rappel des bons et mauvais points de chacun s'avre plus que ncessaire.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 57

3.6.2 Tableau comparatif des quatre outils


Itext Prise en main : Rapide mais des connaissances en java sont ncessaires. JasperReports JasperReport bnficie de IReport qui lui offre une approche assez intuitive et offre l'utilisateur quelques aides la cration. Pdf, Rtf, Doc, Html IReport apporte un plus, grce des layouts prdfinies, mais certains problmes apparaissent lors de l'insert de zones statiques de grande taille par exemple. JOOReports Rapide mais ncessite certaines installations (OpenOffice, plugin). BIRT Moyenne, ncessite une certaine connaissance du logiciel Eclipse. Mais ressemble fort au premier abord Jasper (+iReport). Html, Pdf Le plugin BIRT permet de crer le design sur Eclipse comme on le ferait pour faire un simple GUI. Pas de problmes pour les zones statiques.

Supporte le Pdf, Rtf, Doc, format Html Cration de Tout en ligne de design : code. Trs compliqu, beaucoup de ligne pour peu de rsultats.

Odt, Pdf (, Rtf, Html) Parfait, tout est fait en OpenOffice, ce qui rend le travail trs simple et permet de faire tout ce que l'on veut.

Utilisation Ne correspond Fonctionne bien avec Parfait, JOOReport Idem Jasper. de pas ce que l'on des accs aux sources possde en plus un templates : recherche. de donnes varis. moteur templates (FreeMarker) trs puissant. Autres Nombreux avantages : lments attractifs et fonctionnalits des pdf disponibles Utilisation : Petit rapport, peu de contenu Les JOOscripts (sorte de Javascript) permettent de personnaliser et d'amliorer le rapport. Rapports prcis et dtaills, etc. Eclipse permet le Javascript dans les templates ( la manire de JOOReports) Application Web, rapport tabulaire, etc. Pas de format RTF, odt

Rapport tabulaire, fusion de donnes, sources de donnes diverses.

Les mauvais points :

Le design, les tableaux, etc.

IReport (ou autre) est Utilisation d'un presque obligatoire. plugin de Design limit conversion odt-rtf

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 58

3.6.3 Choix et Raison


Le choix final s'est port sur l'outil de reporting JOOReports. Celui-ci nous a sduis par ses nombreux avantages et son gros potentiel.

3.6.4 Conclusion
L'analyse de ces outils n'a pas t une chose facile. En effet, les exigences de Manex en matire de template notamment ou encore de format de sortie ont fait que les diffrents outils devaient tre test de diverses manires. Donc on effectue l'analyse en fonction du rsultat dsir et non en tant rellement libre. Tant que les objectifs ne sont pas atteints, on doit poursuivre l'tude plus en profondeur. On ne peut pas se suffire d'un rsultat moyen. Et si un outil n'est pas capable de faire quelque chose, il faut le prouver. Au final, le choix s'est fait l'unanimit puisque je n'ai pas st trouver de dsavantages importants dans l'utilisation de JOOReports. Il est vrai que la puissance du moteur de template FreeMarker en aurait convaincu plus d'un. J'ai eu l'opportunit de pouvoir prendre mon temps pour chaque outil. Cette tude m'a apport un plus au niveau personnel sur le plan recherche et patience de travail.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 59

4. Quatrime Partie : Dveloppement de l'application

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 60

4.1 L'application JAFAR (client et serveur)


Sommaire : 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 Prsentation et historique Objectif Schma L'indpendance des Audits Le client Le serveur Les tables importantes
4.1.7.1 4.1.7.2 4.1.7.3 4.1.7.4 Table Auditables Table ACS Table Encounters Schma simplifi de la base de donnes serveur

4.1.8 Les captures d'cran

4.1.1 Prsentation et Historique


Le second objectif de mon TFE tait donc de complter une application (Jafar) en lui incluant la possibilit de faire du reporting. Mais, tout d'abord, une courte explication sur l'application Jafar est ncessaire. Jafar (Java Advanced Facilities for Audit and Reporting) est la rponse une demande de IDEWE (IDEWE est le plus important service externe pour la prvention et la protection du travail en Belgique ). En effet, avant l'arrive de Jafar, les observations des auditeurs taient inscrites sur papier et une numrisation de cette mthode s'avrait ncessaire. C'est alors que la socit Manex a dvelopp un produit appel JAWS ( Java Workstation ), adaptable divers appareils, capable de centraliser et de traiter les donnes collectes et de gnrer des rapports sur base de celles-ci. Afin de trouver de nouveaux dbouchs, Manex a dvelopp un nouveau logiciel, qui reprend les mmes fonctionnalits que Jaws, mais qui en largit le domaine d'activit. Ce nouveau logiciel est JAFAR. Site web du produit : http://www.jafar.biz

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 61

4.1.2 Jafar ; Les Objectifs


Les fonctionnalits principales sont :

faire des audits et recueillir des donnes en ce qui concerne un champ d'activit ; gnrer instantanment des rapports en fonction de ces audits ; synchroniser les donnes recueillies avec un serveur central.

4.1.3. Schma de Jafar


Illustration 1: Schma (simplifi) de Jafar

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 62

4.1.4 L'indpendance des Audits


Manex a dvelopp pour Jafar un langage : l'AuditML. Il est trs intuitif et ne ncessite pas de connaissances leves en informatique pour tre manipul. Jafar est donc dvelopp de manire tre gnrique; l'adaptation un domaine d'application passe par la dfinition de celui-ci par des fichiers XML (via le langage AuditML). Ces domaines d'application sont dfinis par plusieurs types de fichiers XML : les dictionnaires : dfinissent les rgles de mtiers du domaine (en AuditML) ; les GUI : dfinissent l'interface utilisateur (TextArea, ComboBox, etc.) ; les fichiers i18n : pour les langues

4.1.5 Le client
Ct client, l'utilisateur va pouvoir grce l'application : planier des rendez-vous pour un audit ; entrer des informations sur des socits ou des travailleurs ; voir son planning de rendez-vous ; encoder des rsultats. Ce client Jafar est dot d'une base de donnes interne (PostgreSQL ou autre).

4.1.6 Le serveur
Le serveur quant lui stocke lui aussi les donnes, mais en plus grande quantit, ce qui ncessite une base de donnes plus importante. Jafar peut utiliser une base de donnes Oracle RDB ou bien Postgres pour les donnes mtiers, mais il est volutif et peut tre adapt assez facilement n'importe quel systme de base de donnes. Pendant la synchronisation (par webservice) client/serveur, des fichiers XML contenant les informations d'audit sont rcuprs ct serveur, ainsi que des fichiers Log du client Jafar, tandis que des fichiers XML contenant les informations sur le planning, les socits et autres sont envoys au client. Les fichiers XML reus par le serveur sont analyss pour d'ventuelles mises jour dans la base de donnes.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 63

4.1.7 Les tables importantes


L'application Jafar est norme. Elle compte plus de trois mille classes. Sa gestion et sa comprhension sont donc plutt laborieuses. Toutefois, les quelques tables du shma de la base de donne suivantes sont noter :

4.1.7.1 La Table Auditables


Cette table reprsente les "'cibles"' d'un audit, en d'autres termes, une socit ou un travailleur. La diffrence entre ces deux types est stocke dans l'attribut mactype , qui vaudra 't0' dans le cas d'une socit et 't1' dans le cas d'un travailleur. De plus, pour un travailleur employ par une socit, l'attribut "'parentid"' sera une rfrence vers celle-ci. Exemple : ID
011-123 014-124

Created
23/09/1986 21/11/1998

Creator ID
0112255-02 0112255-02 t0 t1

Type
-

ParentID
011-123

Code source de l'interface Auditable :


public interface Auditable extends IdentifiedPersistentObject { /* t0 = COMPANY */ static final String TYPE_0 = "t0"; /* t1 = WORKER */ static final String TYPE_1 = "t1"; Date getLastSynchroDate(); String getType(); void setType(String type); Set getAcs(); Set getEncounters(); Auditable getParent(); /* Return true if the AC has been correctly added to the auditable, false otherwise */ boolean addAC(AC AC); void deleteAC(AC AC); AC getCurrentAC(MAC MAC); AC getLastAC(MAC MAC); AC getLastSynchronizedAC(MAC MAC); Iterator getAllAc(); //etc... }

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 64

4.1.7.2 La Table ACS (Auditable Components)


Cette table reprsente les lments que pourront contenir les informations qui caractrisent un audit sur une cible spcifique. Par exemple, si l'on fait un audit sur une socit, les informations ncessaires pour un audit pourraient tre : le nom du chef d'un dpartement ( un champ texte ) ; la prsence d'extincteurs ( un bouton slectionner ) ; l'tat des locaux ( une combobox : Bon / Moyen / Mauvais). Et ces "'champs"' sont reprsents dans la table ACS. Il faut cependant faire une distinction entre les ACS et les qualifiers : Les ACS sont des informations lies directement un auditable, au contraire des qualifiers qui font rfrence des sous-informations. Ces sous-informations sont lies donc un AC et non plus un auditable. Exemple : ID
2316-2125 2251-1256 string

Type
fastcode

MacType
previousEmploy -

ParentId

Valeur
Hello world IT-brain -

Auditable
001-46654

previousEmployer 1212-5454

Code source de l'interface AC :


public interface AC extends IdentifiedPersistentObject, ACType { // Return the auditable of this ACImpl Auditable getAuditable(); // Set the auditable of this ACImpl void setAuditable(Auditable auditable); // Return the id of the MACImpl if exists, null otherwise. String getMACId(); // Set the id of the MACImpl. void setMACId(String macId); // Return the value of the ACImpl. The value type depends of the ACImpl's type. Object getValue(); // etc... }

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 65

4.1.7.3 La Table Encounters


Cette table contient le planning des audits passs et venir des clients. Il invite un client faire un audit d'une socit ou d'un travailleur sur un certain nombre de critres.

4.1.7.4 Schma simplifi de la base de donnes serveur

Exemple d'utilisation :
// rcupration Audit

Auditable _auditable = BeanFactory.getProxyACService().getAuditable();

MAC _mac = BeanFactory.getMACService().getMAC(companyName); // rcupration du MAC voulu AC _ac = _auditable.getLastAC(_mac); String result = _ac.getStringValue(); // rcupration de la valeur le l'audit pour le MAC et AC donn

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 66

4.1.8 Les captures d'cran

Illustration 2: (Client Jafar) l'Authentification

Aprs la traditionnelle authentification, le client arrive sur le panel principal qui lui permet de visualiser un agenda reprenant les diffrents rendez-vous qu'il va avoir (ou a eu) avec ses patients. De cette page, il peut dcider d'accder aux diffrents modules disponibles (gestion des informations de l'entreprise, gestion des informations des clients, gestion des rendez-vous futurs et antrieurs.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 67

Quelques fentres de l'application : Illustration 3: (Client Jafar) Agenda

Illustration 4: (Client Jafar) Liste Entreprise


Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 68

Illustration 5: (Client Jafar) Informations rsumes d'une entreprise slectionne

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 69

4.2 Prsentation de l'outil de Reporting de Jafar (client)


Sommaire : 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 Objectifs Les contraintes L'indpendance Les classes principales Explications et principe Exemple de template 4.2.6.1 Les champs simples 4.2.6.2 Les listes 4.2.6.3 Les tableaux 4.2.7 Rsultat + captures d'cran

4.2.1 Objectifs
L'objectif est de pouvoir gnrer instantanment des rapports sur base des donnes que l'utilisateur peut grer grce Jafar. Un autre objectif est que cet outil doit tre compltement indpendant des donnes traites.

4.2.2 Les Contraintes


Parmi les contraintes qui ont t rencontres et m'ont t imposes, on peut citer :

Permettre aux utilisateurs de crer facilement leurs templates :

Les templates sont ralises grce au logiciel OpenOffice Writer. Ceux-ci doivent respecter une certaine syntaxe qui est impose l'utilisateur. Il reoit un manuel qui lui explique, par quelques exemples, les possibilits qui lui sont offertes (JOOscripte, tableau, liste, etc.).

Permettre le choix entre plusieurs formats pour le rapport :

L'application demande le choix de format voulu pour le rapport final. L'utilisateur aura le choix entre ODT (OpenOffice), PDF et DOC (Microsoft Word). Les deux derniers ncessitent une conversion grce l'OpenOfficeConverter.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 70

Permettre le visionnage du rsultat (suivant le format choisi) :

Lorsque la gnration est termine et qu'il n'y a pas d'erreur lors de celle-ci, un bouton de l'application permet l'utilisateur d'afficher le rsultat (son rapport). Pour cela, l'utilisation de viewers est ncessaire (pour le format PDF notamment ).

Grer les erreurs ventuelles et en assurer la comprhension par l'utilisateur :

Si une erreur se produit lors de la gnration du rapport, l'utilisateur en sera inform soit : si l'erreur vient du programme, par une boite de dialogue o il peut prendre connaissance du dtail de l'erreur ; si l'erreur vient de l'utilisateur (mauvais encodage de la template), par un message dans le rapport final lui indiquant le champ erron.

4.2.3 L'Indpendance
Comme dj dit prcdemment, le logiciel Jafar est propre chaque utilisateur/client qui dcide lui-mme du contenu des fichiers XML de dfinitions tout en respectant quand mme le AuditML. Ces XML dfinissent donc le contenu des AC et des GUIs dynamiques, mais galement des futurs templates qui servent de modles pour les rapports finaux. Il a donc fallu crer une sorte de langage pour les templates. Langage qui doit tre compris par l'application. L'utilisateur a donc une srie de fonctions complter selon la valeur qu'il veut recevoir. Toutes ces fonctions sont des mthodes de la classe AuditableReportMapper (voir point suivant). Exemple : Pour l'obtention de la dernire valeur synchronise pour une donne, par exemple, le nom de la socit (champ dfini dans l'XML), il devra complter son template par : ${ getLastSync(companyName) } Si par contre, le champ voulu est de type 'Date', le client pourra spcifier le format souhait. Celuici sera vrifi et corrig le cas chant. Ex : ${ getLastSync(dateVisiteX, DD, mm YYYY ) } Remarque : les paramtres ${ } sont obligatoires. Le moteur de template (freemarker) dtermine un champ complter/remplir par ceux-ci paramtres.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 71

4.2.4 Les Classes principales

JOOReportFacade et son interface ReportFacade : C'est cette classe (et plus prcisement la mthode generateReport()) qui gnre le rapport grce au paramtres passs (le nom et rpertoire du fichier ainsi que son type de format). En cas d'erreur, celle-ci est renvoye la classe appelante.

Extrait de la classe :
public class JOOReportFacade implements ReportFacade { ... public String generateReport(final String d, final int format) { ... try { DocumentTemplate documentTemplate = new ZippedDocumentTemplate(new FileInputStream(PATH_fichierTEMPLATE)); AuditReportMapFacade armf = BeanFactory.getAuditReportMapFacade(); armf.setAuditable(BeanFactory.getProxyACService().getAuditable()); switch(format){ // pour le format ODT case 1 : nomfichierODT = d; documentTemplate.createDocument(armf,new FileOutputStream(PATH_nomfichierODT)); break; case 2 : Runtime.getRuntime().exec("\"c:/Program Files/OpenOffice.org 2.1/program/soffice.exe\" -accept=\"socket,port=8100;urp;\""); // obligatoire pour la conversion OpenOfficeConnection openOfficeConnection = new SocketOpenOfficeConnection(); openOfficeConnection.connect(); // connexion a l'OpenOffice.org DocumentConverter converter = new OpenOfficeDocumentConverter(openOfficeConnection); documentTemplate.createDocument(armf ,new FileOutputStream(nomfichierODT)); ..... converter.convert(fichierODT, fichierPDF); // conversion en PDF openOfficeConnection.disconnect(); break; } ..... } catch(Exception e) { // on revoie l'erreur (pour l'afficher) _logger.trace("Exception, during report generation: "+e.getMessage()); return e.getMessage(); } ... }

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 72

AuditableReportMapper et son interface AuditReportMapFacade : c'est la classe qui est passe en paramtre lors de la conception du rapport (fonction createDocument(..)). C'est grce la reflection que la demande de l'utilisateur dans la template va accder aux mthodes de cette classe.

Interface AuditReportMapFacade :
public interface AuditReportMapFacade { Auditable getAuditable(); void setAuditable(final Auditable auditable); String getLast(String macId); // set l'Audit utiliser

// return la dernire valeur pour le MacID en paramtre

public String getLast(String mac_ID) { final AC ac; MAC mac; mac = BeanFactory.getMACService().getMAC(mac_ID); if(mac != null){ ac = _auditable.getLastAC(mac); if(ac != null){ return ac.getStringValue(); } else{ return "NO DATA"; } } else{ _logger.trace("Le mac_ID ["+mac_ID+"] pass en parametre est incorrecte"); return "BAD VALUE"; } }

Texte 1: Extrait de code de la classe AuditableReportMapper


String getLastSync(String macId); String getCurrent (String macId); String getLast(String macId, String format); String getLastSync(String macId, String format); String getCurrent (String macId, String format); String getStringAll(String macId); List getListAllLast(String macId); List getListAllCurrent(String macId); List getListAllSync(String macId); }

//etc.

EtapeReporting :

C'est le JDialog par lequel toute la partie Reporting est gre. Il contient de nombreux JPanels qui se suivent la manire suivant / prcdent. (voir captures d'cran).

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 73

4.2.5 Explications
Voici les diffrentes tapes du module de reporting de Jafar.

4.2.5.1 Cration d'un panel Reporting


J'ai tout d'abord cr un panel supplmentaire dans l'application Jafar grce auquel l'utilisateur a le choix entre :

accder au module de reporting (un jDialog) via un bouton ; prendre connaissance du manuel de cration de templates (le fichier PDF est directement ouvert l'cran grce un viewer PDF) dans la langue qu'il a slectionne parmi l'anglais, le nerlandais et le franais ;

4.2.5.2 Cration d'un jDialog


J'ai ensuite cr un jDialog (une petite fentre) qui offre chaque tape l'utilisateur grce des boutons suivant et prcdent . Le dveloppement de ce jDialog ne m'a pas pos de problme. Il est vrai que j'ai toujours apprci la cration d'interface. De plus, le logiciel Intellij IDEA permet de raliser de trs belles applications. L'utilisateur peut tout moment quitter cette fentre, grce un bouton Exit .

4.2.5.3 Les tapes


La premire tape sert de message de bienvenue l'utilisateur et l'invite suivre les suivantes via les boutons sa disposition. La seconde tape lui permet de choisir le format de son rapport entre : PDF (propritaire de Acrobat ) ; ODT (OpenOffice Writer) ; DOC (Microsoft Word) ; Ensuite, il va devoir dterminer o enregistrer le fichier. J'utilise pour cela un jFileChooser en lui passant en paramtres le nom et l'extention du fichier crer (sorte de filtre). Dernire tape, celle de la cration du rapport qui En cas de succes, ajoute un bouton au panel pour afficher directement le rsultat l'cran grce un viewer ; En cas d'erreur, une fentre supplmentaire apparat l'cran et permet l'utilisateur de prendre connaissance de l'erreur.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 74

4.2.5.4 La gestion d'erreurs


Il existe deux types d'erreurs :

Les erreurs dues au crateur du template (mauvais encodage : getValue(compayName ) au lieu de getValue( companyName ) par exemple.) Les erreurs dues au programme lui mme : par exemple, on veut gnrer un rapport dans un fichier qui est dj ouvert ! L'erreur sera alors affiche pendant l'excution du programme.

Les premires cites seront gres grce au programmequi informera l'utilisateur dans son rapport final que son template contient des erreurs. Par exemple : Nom entreprise : NO-DATA Nom entreprise : BAD-VALUE // signifie qu'il n'y pas de valeur dans la base de donnes pour // ce champ // signifie que l'argument pass est incorrect

Dans le cas de demande de champ de type DATE, l'utilisateur spcifie lui mme le format qu'il dsire. Si ce format est incorrect, il sera remplac par un format par dfaut ce qui vite quelques soucis.

4.2.6 Exemples de contenu d'un template 4.2.6.1 Champs simples


Date du jour : ${getCurrentDate("dd MM yyyy")} Nom de l'entreprise : ${getLast("companyName")} Liste des noms de l'entreprise (en chane de caractres) : ${getStringAll("companyName")}

4.2.6.2 Les Listes


Liste des noms de l'entreprise : [#list getListAllLast("companyName") as MaListe] // MaListe est une classe

${MaListe.item}

[/#list]

// on obtient une liste d'objets MaListe ( et on // rcupre la valeur du champ item

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 75

4.2.6.3 Les Tableaux


Liste des noms de l'entreprise :
Nom Socit

Contenu du JOOscript du tableau : @table:table-row [#list getListAllLast("companyName") as MaListe] @/table:table-row [/#list]

${MaListe.item}

4.2.6 Rsultat + captures d'cran


Etape par tape :

Illustration 6: le panel de dpart

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 76

Illustration 7: 1ere tape

Illustration 8: 2me tape : choix du format

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 77

Illustration 9: 3me tape : choix du repertoire

Illustration 10: 4me tape : la gnration

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 78

4.3 Reporting Serveur Jafar


Sommaire : 4.3.1 4.3.2 4.3.3 4.3.4 4.3.4 Objectifs Les contraintes Utilisation de jFreeChart Utilisation de Spring MVC Les classes principales
4.3.4.1 Les contrleurs 4.3.4.2 Les classes mtiers et DAO 4.3.4.3 Les vues et JSP 4.3.4.4 Exemple + code

4.3.5 Captures d'cran 4.3.6 Conclusion

4.3.1 Objectifs
Il est fort semblable celui du Reporting client de Jafar. la diffrence qu'ici les donnes gnrer en rapport proviennent de l'ensemble des utilisateurs. On effectuera donc le rapport d'un Auditable sur base de son ID. Autre objectif : pouvoir faire des rapports de statistiques (exemple : le pourcentage d'entreprises qui ont de l'iode dans leur btiment) avec l'apport de diagrammes pour un meilleur rendu visuel.

4.3.2 Les Contraintes


Elles sont assez semblables celles du client galement. Malgr tout, il s'agit maintenant d'une application WEB. Il faut donc s'adapter au browser du client. Le site propose l'ajout de fichiers templates (soit pour les rapports d'audit, soit pour ceux de statisques) qui seront stockes sur le serveur. L'utilisateur aura alors un choix de templates disponibles lors de son reporting. Autre contrainte, les champs remplir sont obligatoires. Une exception sera lance lors de la prsence de vide dans ceux-ci.

4.3.3 Utilisation de jFreeChart


Pour la gnration de rapports de statistiques, j'ai utilis l'API jFreeChart qui est support par JOOReport et son moteur de templates FreeMarker. L'API jFreeChart est une fonctionnalit qui permet de gnrer des graphiques. C'est une API totalement gratuite que vous pouvez mme inclure dans des applications commerciales.
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 79

Il s'agit simplement d'un jar tlcharger ( l'adresse suivante : http://www.jfree.org/jfreechart/ ). La gnration de graphique et autre courbe est trs simple et trs complte. On peut tout prciser. Seule contrainte de cette API, il faut beaucoup de ligne de code pour arriver un rsultat correct. Exemple : La classe qui permet la cration des graphiques est la classe ChartFactory. Cette classe est compose ensuite de plusieurs mthodes qui permettent de crer des graphiques dvolutions, des camemberts ou des histogrammes.

DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue((double)125, "Stat", "champs" ); // remplissage du dataset ... //... JFreeChart chart = ChartFactory.createBarChart(TITLE, Y_VAL, X_VAL, dataset, PlotOrientation.HORIZONTAL, false, false, false); CategoryPlot plot = chart.getCategoryPlot(); BarRenderer renderer = (BarRenderer)plot.getRenderer(); GradientPaint paint = new GradientPaint( 0.0f, 0.0f, Color.red, 0.0f, 0.0f, new Color(0,0,64) ); renderer.setSeriesPaint(0, paint); // fixe couleur BufferedImage image = chart.createBufferedImage(400,300); // fixe taille ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try{ ImageIO.write(image, PNG, outputStream); } catch(IOException e){ throw new RuntimeException("Should never happen :"+e.getMessage()); } return outputStream.toByteArray();

Illustration 11: Rsultat

4.3.3 Utilisation de Spring MVC


J'en ai dj parl dans la partie Notion Thorique (point 2.4), mais le site de gestion du serveur Jafar est donc ralis en Spring MVC. Toutes les JSP sont gres par un contrleur et un modle (commande). Cela permet de controler dans les JSP des objets de faon relativement simple. Je dois avouer que le temps d'adaptation est assez lev et que les premires manipulations sont plutt droutantes en comparaison avec les simples JSP/Servlet (dont les capacits sont nettement infrieures).

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 80

Par exemple : Le traitement d'une demande d'un utilisateur se droule selon les tapes suivantes : 1. le client fait une demande au contrleur (AuditableReportingController). Ce contrleur est une servlet qui voit passer toutes les demandes des clients ; 2. le contrleur traite cette demande. Pour ce faire, il peut avoir besoin de l'aide de la couche mtier (AuditableReportMapperStat), ce qu'on appelle le modle M dans la structure MVC; 3. le contrleur reoit une rponse de la couche mtier. La demande du client a t traite. Celle-ci peut appeler plusieurs rponses possibles. Un exemple classique est : une page d'erreurs si la demande n'a pu tre traite correctement une page de confirmation (getSuccessView()) ou autre (OdtReportingView);

4. le contrleur choisit la rponse (= vue) envoyer au client ; 5. la vue est envoye au client (return new ModelAndView(..)). C'est le V de MVC.

4.3.5 Les Classes principales


Les classes principales de Jafar ayant dja t prsentes prcdemment, un rapide survol des diffrents contrleurs et commandes utiliss est tout de mme ncessaire.

4.3.5.1 Les Contrleurs


Ils sont au nombre de trois (pour la partie Reporting !).

AuditableReportingController.java : gre ce qui concerne (la vue) le reporting des Auditables et utilise les classes mtiers et DAO (pour accder aux donnes) comme ReportingCommand, auditableReportMapper, AuditableEntry. StatisticsReportingController.java : idem que la classe prcdente, sauf que ce contrleur s'occupe du reporting des statistiques. TemplateAddController.java : s'occupe de l'ajout des nouveaux fichiers templates sur le serveur. Il utilise la classe mtier : TemplateAddCommand.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 81

4.3.5.2 Les Classes Mtiers et DAO


ReportingCommand.java : contient toutes les donnes accessibles via les vues relatives au reporting (aussi bien d'Audit que de Statistique) TemplateAddCommand.java : idem pour l'ajout de template AuditableReportMapper.java : reprsente l'objet qui permet le remplissage des templates d'Audit. AuditableReportMapperStat.java : idem pour les statistiques AuditableEntry.java : permet de rcuprer les donnes d'un Audit (par rapport un ID donn)

4.3.5.3 Les Vues et JSP


Les Vues : OdtReportingView.java (plus les versions PDF et DOC) : elle hrite de la classe astraite AbstractReportingView (qui hrite de AstractView). Elle renvoie directement dans le browser de l'utilisateur le rapport en cas de succs. Sinon, une page d'erreur (exception.jsp) est renvoye. OdtStatisticsView.java (idem) : mme chose pour les statistiques. Les JSP : auditable.jsp : contient le code HTML qui est gr dynamiquement par la servlet correspondante (AuditableReportingController.java) et qui sert la demande d'un rapport d'Audit ; statistics.jsp : idem pour les rapports de statistiques ; templateadd.jsp : idem pour l'ajout de nouveau template ; exception.jsp : affiche l'erreur qui vient de se produire ;

4.3.5.4 Exemple + code


Voici des extraits de code d'une JSP (auditable.jsp), de sa servlet (AuditableReportingController, de son modle et de la vue qui lui est renvoye en cas de succs. La JSP auditable.jsp:
... <form method="post" action="admin/reporting/auditable.form" > <fieldset> <legend>Format and Template, </legend> <p> <label>Template Choice : </Label> <spring:bind path="cmd.templateName"> <select name="${status.expression}" > <c:forEach items="${cmd.templates}" var="item"> <option value="${item}" >${item} </option> </c:forEach> </select> </spring:bind> </p><p> // formulaire (obligatoire)

// remplit une ComboBox de la liste des // templates (cmd.templates) disponibles

// l'option choisie sera rcupre dans // cmd.templateName

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 82

<label>Format Type : </label> <div> <spring:bind path="cmd.templateFormat"> <select name="${status.expression}"> <option value="ODT">Open Office</option> // choix du format du rapport <option value="PDF">Pdf</option> <option value="DOC">Microsoft Word</option> </select> </spring:bind> </div> </p> </fieldset> <fieldset> <legend>Audit Selection, </legend> <p> <label>Audit ID : </label> <spring:bind path="cmd.id"> // rcupration de l'ID dans cmd.id <mx:userIdForm path="cmd.id" codeTips="l'ID de l'Audit"/> </spring:bind> </p> </fieldset> <center> // bouton d'envoi vers la servlet Click to : <input type="submit" value=" Generate the report "/> </center> </form>

La Servlet AuditableReportingController.java (elle hrite de la classe abstraite AbstractReportingController qui initialise la page, etc.):
public class AuditableReportingController extends AbstractReportingController { private static final String TEMPLATE_PATH = "auditable"; protected ModelAndView onSubmit(final Object object) throws Exception { final ReportingCommand reportingCommand; final AuditableEntry auditableEntry; final AuditableReportMapper auditableReportMapper; final Map<String, Object> map; reportingCommand = (ReportingCommand) object; // traite l'appui du bouton

map = new HashMap<String, Object>(); auditableEntry = getAuditableService().getbyId(reportingCommand.getId()); if (auditableEntry == null) { // teste si l'ID pass est OK ou non reportingCommand.setReportSuccess(true); reportingCommand.setMsgResult(MSG_RESULT_ERROR); return new ModelAndView(getSuccessView()); // return la page d'origine } else { auditableReportMapper = new AuditableReportMapper(auditableEntry); map.put(MAP_CONTENT, auditableReportMapper); // en fonction de la demande de format, on retourne le rsultat dans une // vue diffrente (ODT/PDF/DOC) if (FORMATS[0].equals(reportingCommand.getTemplateFormat())) { return new ModelAndView(new OdtReportingView(reportingCommand.getTemplateName(), getTemplatePath()), map);
Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem page : 83

// rcupre les donnes de la JSP (dans un objet //ReportingCommande)

} else if (FORMATS[1].equals(reportingCommand.getTemplateFormat())) { return new ModelAndView(new PdfReportingView(reportingCommand.getTemplateName(), getTemplatePath()), map); } else if (FORMATS[2].equals(reportingCommand.getTemplateFormat())) { return new ModelAndView(new DocReportingView(reportingCommand.getTemplateName(), getTemplatePath()), map); } else { throw new IllegalStateException("unknow format [" + reportingCommand.getTemplateFormat() + "]"); } } }

La classe ReportingCommande :
public class ReportingCommand { private String _templateDescription; private String _templateFormat; private String _templateName; private List<String> _templates; private Boolean _reportSuccess; private String _msgResult; private String _id; // les donnes ncessaires

// suivi des getters et setters de toutes ces variables

public String getTemplateDescription() { return _templateDescription; } public void setTemplateDescription(final String templateDescription) { _templateDescription = templateDescription; } public String getTemplateFormat() { return _templateFormat; } public void setTemplateFormat(final String templateFormat) { _templateFormat = templateFormat; } public String getTemplateName() { return _templateName; } public void setTemplateName(final String templateName) { _templateName = templateName; } ...etc.

La Vue OdtReportingView (qui hrite de la classe abstraite AbstractReportingView, mre des vues de chaque format ) :
public class OdtReportingView extends AbstractReportingView { private static final String FILENAME = "report.odt"; private static final String CONTENT_TYPE = "application/vnd.oasis.opendocument.text"; private static final String MAP_CONTENT = "auditableReportMapper"; private static final String EXT = ".odt"; private static final int OUTPUT_BYTE_ARRAY_INITIAL_SIZE = 4096; private final String CONTENT_DISP = "Content-Disposition";

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 84

public OdtReportingView(final String templateName, final File templatePath) { //constructeur super(templateName, templatePath); } // cration du rapport par jooreport protected void generateReport(final Map map, final OutputStream outputStream) throws Exception { final DocumentTemplate documentTemplate; documentTemplate = new ZippedDocumentTemplate(new FileInputStream(new File(getTemplatePath(), getTemplateName() + EXT))); documentTemplate.createDocument(map.get(MAP_CONTENT), outputStream); } protected final void renderMergedOutputModel(Map map, HttpServletRequest httpServletRequest, HttpServletResponse response) throws Exception { final ByteArrayOutputStream baos; final ServletOutputStream out; baos = new ByteArrayOutputStream(OUTPUT_BYTE_ARRAY_INITIAL_SIZE); generateReport(map,baos); response.setContentType(getContentType()); response.setHeader(CONTENT_DISP, "attachment; filename=\"" + getFilename() + "\""); response.setContentLength(baos.size()); out = response.getOutputStream(); // renvoie de la rponse (le rsultat / voir captures cran) baos.writeTo(out); out.flush(); }

4.3.5 Captures d'cran

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 85

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 86

4.3.6 Conclusion du reporting Jafar


En conclusion, je peux noter que l'outil JOOReports permis une grande facilit de reporting. Le choix tait donc le bon. Son moteur de template nous a apport une souplesse de travail et de possibilits. La gnration de rapports tait fort semblable cot client et ct serveur. Les donnes n'taient en outre pas vraiment les mmes, mais la faon d'y accder fort similaire. Au niveau du client, le plus difficile aura t de rentrer dans cette norme application. J'ai p alors sans cesse essayer d'amliorer mon module par soit du design retravaill soit l'ajout de fonctionnalits pour l'utilisateur (viewers, manuel, etc.) soit par un effort de code review etc. Pour la partie serveur, une recherche aura t tout de mme ncessaire afin que l'utilisateur puisse rceptionner son rapport dans la fentre du browser (utilisation de vues d'un certain type). Le plus difficile a t de comprendre Spring MVC. C'est une tout autre manire de programmer qui est assez droutante lors des premires utilisations. Malgr tout, il y a toujours des choses amliorer. Je pense notament un mcanisme plus large de reporting sur le serveur (la recherche par ID tant peut tre trop prcise).

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 87

5. Cinquime Partie : Conclusion

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 88

5.1 Conclusion gnrale

L'tude, l'analyse et ensuite le dveloppement de ces modules de reporting (ct client et serveur Jafar) furent un projet trs intressant et motivant, et ce, plusieurs titres. Tout d'abord, il s'agissait tout simplement pour moi du premier contact avec une socit. On est bien loin du rassortiment de rayon de supermarch comme travail d'tudiant. C'est toujours avec l'aide et sous le regard critique du dveloppeur me suivant (David Wery) que j'ai volu dans ce projet. Il me soutenait toujours quand, parfois, une semaine tait ncessaire pour dcouvrir ce qui allait apporter un petit plus l'application. Il m'a aussi appris le code review. Au niveau analyse, j'ai t surpris par le fait qu'un simple petit vice peut dmolir un produit. Malgr tout, le choix qui a t fait l'tait l'unanimit et pourtant ce produit (JooReports) ne partait absolument pas favori : les apparences sont parfois trompeuses ! Pour cette tude et cette analyse, j'ai eu l'opportunit de pouvoir prendre mon temps, de faire de nombreux tests et de bien me documenter. J'ai ainsi pu monter un dossier solide sur chaque produit. Cette manire de travailler est beaucoup plus professionnelle et trs enrichissante au niveau des connaissances personnelles. Il est vrai qu' l'cole, la succession des dossiers ne favorise pas toujours un travail complet et soign. On travaille aussi sous une autre pression. Non pas celle d'un professeur qui attend son programme, mais pour un client important dont dpend la socit pour survivre dans ce monde conomique instable. Pour la partie Jafar (client et serveur), le rsultat est l et je pense qu'il satisfait les intresss. La partie Java pure du client ne m'a pas pos trop de problmes. Je me suis par contre fait les dents sur Spring MVC. Mais cela ne peut que m'tre bnfique pour le futur comme d'ailleurs toutes les autres parties du T.F.E qui m'ont apport un beau bagage utiliser plus tard videmment ... Mais ceci est une autre tape et je suis prt la franchir !

Philippe Lodomez

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 89

6. Sixime Partie : Annexes

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 90

6.1 Bibliographie et Rfrences


6.1.1 Livres
IText in Action , creating and manipulation PDF BIRT, A field guide to reporting Java 1/2/3/4 syllabus inpres [ Bruno Lowagie ] [ Diana Peh ] [ Claude Vilvens]

6.1.2 Sites Internet


Reporting :
Pour JasperReport :
Site Officiel : Site du logiciel iReport pour la cration de design : Documentation : http://jasperreports.sourceforge.net/ http://ireport.sourceforge.net http://www.atolcd.com

Pour BIRT :
Site d'Eclipse : Documentation : http://www.eclipsetotale.com http://www.demay-fr.net/blog/index.php

Pour iText :
Site Officiel : Documentation : http://www.lowagie.com/iText/docs.html http://www.supinfo-projects.com/fr/2006/

Pour JOOReports :
Site Officiel JooReports : Site Officiel jFreeChart (gnrateur de graphique) : Site Officiel FreeMarker (moteur de template) : http://jooreports.sourceforge.net/ http://www.jfree.org/jfreechart/ http://freemarker.sourceforge.net/

Notion Thorique :
Spring MVC documentation : L'API rflection : divers (club d'entraide) : http://tahe.ftp-developpez.com/fichiers-archive/springmvc4.pdf http://ricky81.developpez.com/tutoriel/java/api/reflection/ http://www.developpez.com

Gnral :
Encyclopdie libre sur Internet : Dictionnaire en ligne : Information entreprise Manex : Information logitiel Jafar : http://fr.wikipedia.org/wiki/Accueil http://dictionnaire.mediadico.com/ http://www.manex.be http://www.jafar.biz
page : 91

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

6.2 Glossaire
API : interface de programmation, permet de dfinir la manire dont un composant informatique peut communiquer avec un autre. Code review : c'est une examination systmatique de son code source afin d'y trouver des erreurs, des mthodes plus rapides, etc. PKI : (Public Key Infrastructure) est un ensemble de composants physiques ( par exemple : ordinateur), de procdures humaines et de logiciels en vue de grer le cycle de vie des certificats numriques ou lectroniques. Template : est un terme anglais utilis en informatique pour dsigner un modle de conception de logiciel ou de prsentation des donnes. Un template est un moyen de sparer le fond (le contenu informationnel) de la forme (la manire dont il est prsent). Les Scripts : sont des langages de programmation crs pour raccourcir le processus traditionnel de dveloppement dition/compilation/dition des liens/excution. Le mot correspond un texte crit. Ils servent principalement lancer et coordonner l'excution de programmes. Le Serveur informatique : appel serveur lorsque le contexte s'y prte, est un ordinateur ou un programme informatique qui rend service aux ordinateurs et logiciels qui s'y connectent travers un rseau informatique, les clients. Ce service peut consister stocker des fichiers, transfrer le courrier lectronique, hberger un site Web, etc. GUI : (graphical user interface) est ce qui est affich en mode pixel au moniteur de l'ordinateur et sur lequel l'utilisateur peut agir avec diffrents priphriques d'entre (clavier, la souris, etc.). Plugin : terme anglais (qui signifie brancher), qui est employ pour dsigner un programme qui interagit avec un logiciel principal, appel programme hte, pour lui apporter de nouvelles fonctionnalits. Un PDF (Portable Document Format) est un format propritaire dvelopp par la socit Adobe Sytems au dbut des annes 90. Cependant PDF est un standard ouvert, ce qui veut dire que tout le monde peut crer des applications qui lisent et/ou crivent des documents pdf, sans payer de royalties Adobe Systems.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 92

6.3 Abstract
Mon stage dans la socit Manex ( o j'ai trouv une ambience de travail extraordinaire ) s'est droul en plusieurs phases. Le but premier tait de pouvoir gnrer des rapports complets et clairs des informations issues de base de donnes. Aprs l'tude et l'analyse de plusieurs outils de cration de rapports, j'ai constitu un dossier comprenant les avantages et inconvnients pour chaque produit. C'est un travail assez long qui ne consiste pas simplement lire la documentation de l'outil. Il faut tester, comparer, trouver les failles, etc. Cette tude a servi trouver le meilleur produit pour l'utiliser dans la suite de mon stage. J'ai ensuite cr un module de reporting pour une application existante (Jafar), ct client (application en java swing) et ct serveur (application Web/Spring/Jboss ). J'ai utilis l'outil de reporting JOOReports. Ces deux modules de gnration de rapports utilisent des templates comme modles. Ceux-ci sont des fichiers OpenOffice (.odt) qui comprennent du script (JOOscript) et des fonctions (spcifiques la demande de certaines valeurs). Un langage pour ces templates a t invent pour que l'application puisse interprter chaque demande de l'utilisateur. Pour finir, un travail de gestion d'erreurs tait indispensable. English version : My training period on the Manex company (where I have find a extraordinary work atmosphere) has take place into several stages. The first goal was to be able to generate complete and light reports of Data base informations. After the study and the analysis of several reporting tools, I constitued a file including the advantages and disadvantages for each poduct. It is a rather long work which don't not constist simply to read the product documentation. Some tests, comparisons and mistakes research should be made. This study was used to find the best tools to use it in the continuation of my training course. I then created a reporting module for an existing application (Jafar), side client (Java application) and side server (Web application). I used the reporting tool JOOReports. These two reporting modules use templates like models. Those are OpenOffice files which include scripts (JOOscript) and functions (which return values). A template language was invented so that the application can interpret each user requests. To finish, an error management work was essential.

Lodomez Philippe Groupe 23 27 Haute Ecole Rennequin Sualem

page : 93