gestion du budget familial, liste de marché en fonction...

34
Gestion du budget familial, liste de marché en fonction des recettes 2008 ___________________________________________________________________________ KOLLE KOUO MOUDIKI Jean Hervé 1

Upload: others

Post on 04-Dec-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 1

Page 2: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

GESTION DU BUDGET FAMILIALLISTE DE MARCHE EN FONCTION DES

RECETTES

PROJET DE SPECIALITE

KOLLE KOUO MOUDIKI Jean Hervé

Etablissement: ISTDI

Département : CS2I

Filière : Développement logiciel

Mots-clé : Java, J2EE, MySQL, JBOSS, JPA, DAO, DVO, EJB, Eclipse

Date dépôt : 23 Juin 2008

Superviseur : M. Lorince TAWAMBA

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 2

Page 3: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

SOMMAIRE

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 3

Page 4: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

INTRODUCTION

Dans la vie, il est évidant que les problèmes que nous rencontrons sont proportionnels

à notre niveau de vie ; cependant la manière de les résoudre peut etre commune : la mise en

place d’un processus de résolution de problèmes. Ainsi, afin de résoudre le problème des

familles qui ne tiennent pas les deux bouts avec leur revenu (grand ou petit), nous leur

proposons une application de gestion du budget familial. La suite de ce document présente

premièrement le projet, puis le processus de réalisation de ce dernier.

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 4

Page 5: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

I. PRESENTATION DU PROJET

1. ROLE DE L’APPLICATION

« Si tu ne peux pas le mesurer tu ne peux pas le contrôler, si tu ne peux pas le

contrôler tu ne peux pas le gérer, si tu ne peux pas le gérer tu ne peux pas l’améliorer »,

Harrington. Notre application se doit d’aider les familles dans l’optimisation de leurs

dépenses quotidiennes par rapport à leur revenu mensuel.

2. FONCTIONNALITES CLES

Les fonctionnalités principales sont les suivantes :

- Création des utilisateurs

- Identification des utilisateurs

- Définition du budget mensuel

- Répartition du budget mensuel par catégorie de dépense

- Enregistrement des dépenses quotidiennes

- Composition de recette de cuisine

- Affichage d’une liste de marché en fonction des recettes de cuisine choisies

3. INNOVATION

Il existe sur le marché des applications de gestion semblables à la notre, cependant

nous offrons la possibilité d’obtenir la liste de marché en fonction des recettes de cuisine

sélectionnées, fonctionnalité qui agrandie la polyvalence de l’application car, elle peut aussi

bien fonctionner dans un restaurant, voire dans un hôtel

4. PUBLIC VISE

Le public visé par l’application de gestion du budget familial est premièrement

l’ensemble des familles Camerounaises, puis celles de notre chère planète

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 5

Page 6: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

5. CONTEXTE

Cette application est développée dans le cadre du projet de spécialité de la filière

« Développement logiciel » du CS2I Cameroun (ISTDI) et, pour le développeur, dans le cadre

de l’apprentissage et de la maîtrise du développement d’applications entreprises respectant le

standard J2EE(Java 2 Enterprise Edition)

6. OBJECTIFS

Deux objectifs sont à atteindre pour ce projet : le principal est la maîtrise pratique du

standard J2EE, et l’autre est de fournir une application pour les utilisateurs.

7. VERSION

Il s’agit de la première implémentation, aucune amélioration ou version n’a encore vue

le jour.

8. PLANNING

Le planning utilisé dans la réalisation du projet est le suivant

1 Définition des spécifications de l’application2 Conception du modèle de données 3 Mise en place de l’architecture logicielle4 Installation des serveurs : serveur de base de données et

serveur d’application5 Développement des composants métiers (EJB) 6 Déploiement et test7 Début de création des interfaces client8 Finalisation du rapport

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 6

Page 7: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

II. DEVELOPPEMENT

Cette section présente premièrement le standard J2EE utilisé dans notre projet, puis,

brièvement, les étapes de développement de l’application.

1. PRESENTATION DU STANDARD J2EE UTILISE : JAVA EE 5

Java 2 Enterprise Edition (J2EE) est une plateforme de développement et un ensemble

de spécifications pour le développement d’applications entreprise multi-tiers. Les versions de

J2EE sont depuis 1997 passées de 1.0 à J2EE 1.4 en 2003, et J EE 5 aujourd’hui, cependant

nous avons porté notre choix sur JEE5 car il permet la gestion facile de la persistance.

EJB3 (Enterprise Java Bean 3) fait parti de JEE5 ; né en Mai 2006, c’est une

spécification d’un cadre pour l’utilisation de composants métiers réutilisables par les serveurs

d’applications Java.

JPA (Java Persistance API) est la partie de la spécification EJB3 qui concerne la

persistance des composants dans une base de données relationnelle. JPA s’applique aussi sur

les applications Java qui s’exécutent en dehors des serveurs d’application.

a) DEFINITION D’UNE APPLICATION ENTREPRISE

Les entreprises présentent généralement les besoins suivants : le partage

d’informations, la gestion et le suivi de ses ressources, la planification, la gestion de sa

clientèle … Une application entreprise est l’ensemble des applications qui participent au

support des besoins ci-dessus.

b) COMPOSITION D’UNE APPLICATION ENTREPRISE

Une application entreprise est constituée des éléments suivants :

- Un client : dont le rôle principal est de présenter les données issues du serveur

- Un serveur d’application : qui contient EJB (les composants métiers) tout en les

gérant

- Les EJB : responsables de la logique applicative ; les EJB représentent le cœur du

serveur J2EE.

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 7

Page 8: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

- Une base de données : pour la persistance des données.

2. ANALYSE ET CONCEPTION

Tout au long de cette étape, nous nous sommes servis du langage de modélisation

UML (Unified Modeling Language) qui, à travers les cas d’utilisations jusqu’au diagramme

de classe, nous a permis de mettre en place les tables de notre base de données.

a) FONCTIONNALITES ATTENDUES

Le diagramme de cas d’utilisations suivant illustre les fonctionnalités attendues.

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 8

Page 9: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

b) ARCHITECTURE DE L’APPLICATION

Le schéma suivant présente l’architecture utilisée dans notre projet.

Le client est représenté par le navigateur web qui affichera des pages JSP (JavaServer

Pages) .

Les JSP sont des scripts insérés dans les pages html, et forment des parties du

document HTML générées lors des échanges avec le serveur.

Les session bean et entity bean sont deux types d’EJB. La session bean représente les

processus, plus précisément elle réalise une tâche au nom du client ; tandis que l’entity bean

représente les données de l’application. La précision CMP(Container Managed Persistence)

signifie que la persistance est géré par le conteneur du serveur d’application, plutôt que par le

bean lui-même(BMP : Bean Managed Persistence); l’avantage avec les CMP est la diminution

de la complexité des échanges qui existent avec la base de données.

La DAO (Data Access Object) représente un pattern pour la persistance des objets. Il

s’agit en fait d’encapsuler le code lié à la persistance des données dans les objets DAO dont

l’interface est indépendante du support de persistance. Ainsi, quand l’application a besoin

d’effectuer une opération liée à la persistance d’un objet, elle fait appel à un objet DAO à qui

elle passe l’information nécessaire pour effectuer l’opération. L’information est donc

transmise dans une DVO (Data Value Object) dans notre application.

Le DVO contient l’état d’un objet, il est construit sur le site distant et transmis

directement au client. Son intérêt est qu’il permet de transporter les objets distants pas

transportables sur le réseau ; son utilisation optimise les performances du serveur.

La base de données assure la pérennité des données.

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 9

Page 10: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

Pour conclure cette section, il est à noté que le fonctionnement des JSP nécessite un

conteneur web tandis que celui des EJB nécessite un conteneur d’EJB.

3. CHOIX DES OUTILS

Dans cette section nous présenterons les outils utilisés, leur installation et

configuration nécessaire, puis les motivations de nos choix. Il s’agit respectivement du

JDK(Java Développement Kit, Kit de Développement Java), l’EDI (Environnement de

Développement Intégré), du serveur d’application et du serveur de base de données.

a) JDK : JDK1.5.0_09

Le JDK est l’outil principal qui nous permet de développer des applications Java. La

version utilisée est 1.5.0_09, tandis que la dernière version porte le numéro 1.6.1 à la date à

laquelle nous éditons ces lignes. Ce choix est une contrainte à respecter pour utiliser le

serveur d’application que nous verrons plus bas.

Télécharger le JDK sur le site de SUN (http://www.sun.com) et l’installer en prenant

le son de configurer la variable d’environnement avec les valeurs suivantes :

Nom de la variable : JAVA_HOME

Valeur : répertoire de base du JDK, exemple : C :\Program Files\Java\Jdk1.5.0_09

b) EDI : ECLIPSE EUROPA (ECLIPSE 3.3)

Un IDE est un logiciel aidant à réaliser d’autres logiciels ; c’est aussi un ensemble

d’outils permettant de couvrir le cycle de vie du logiciel (analyse, conception, réalisation,

maintenance). Parmi les IDE on distingue :

IDE GRATUIT(G) /

PAYANT(P)

PERMET LE

DEVELOPPEMENT

AVEC J2EE

POUR PLUS

D’INFORMATIONS

Microsoft

Visual Studio

P NON http://www.microsoft.com

Eclipse G OUI http://www.eclipse.org

Borland P OUI http://www.borland.com/jbuilder

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 10

Page 11: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

JBuilderNetBeans (Sun) G OUI http://www.sun.com/forte ou

http://www.netbeans.orgSun One (Sun) P OUI http://www.sun.comOracle

JDevelopper

P OUI http://www.oracle.com

Bea Weblogic

WorkShop

P OUI http://www.bea.com

Windev (pcsoft) P NON www.pcsoft.fr

Notre choix à été porté sur Eclipse car il est gratuit, modulable (plug-ins disponibles

selon les fonctions recherchées par le développeur pour personnaliser son IDE), et possède

une très grande communauté d’utilisateurs toujours prêt à réagir à chaque problème posé.

L’exécutable est disponible à l’adresse http://www.eclipse.org/download/index.php

c) SERVEUR D’APPLICATION : JBOSS APPLICATION SERVER (JBOSS-

4.2.1.GA)

Le serveur d’application doit jouer le rôle de conteneur web et de conteneur d’EJB,

afin de respecter l’architecture choisie au départ. Parmi les serveurs d’applications on compte

SERVEUR

D’APPLICATION

OFFRE

COMMERCI

ALE(C) /

CONTENEU

R WEB

(CW) / EJB

POUR PLUS D’INFORMATIONS

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 11

Page 12: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

OPEN-

SOURCE(O)

(CE)

Sybase EAServer C - http://www.sybase.com/products/easerv

erBEA Weblogic AS C CE+CW http://www.bea.com haut de gammeIBM Websphere C CE+CW N° 1Sun Java System

AS

C CE+CW http://www.sun.com

Borland Enterprise

Server

C CE+CW -

Oracle9i AS C CE+CW http://www.oracle.comMacromedia jRun C - -SAP Web AS C CE+CW -Iona Orbix E2A C CE+CW -JBoss AS O CW+CE N° 1 en nombre de déploiements

http://www.jboss.org/download.jspObjectWeb JOnAS O CW+CE N°2, intégré à plusieurs distributions

Linux Entreprise.

http://www.objectweb.org Apache Geronimo O CE+CW http://www.apache.orgopenEjb O CE -ejBean O - -

Pour la suite, nous avons choisi JBOSS AS il est le numéro 1 parmi les serveur gratuit,

il est bien documenté, il implémente l’ensemble des spécification J2EE, il utilise moins de

mémoire et est actuellement l’un des rares serveurs open source à accepter le déploiement des

EJB3 nécessaire à la réalisation de notre application. La version utilisée est jboss-4.2.1.GA

(non de code jboss Trinity).

La version utilisée nécessite uniquement le JDK1.5.x pour fonctionner ; s’assurer

avant que ce dernier soit installé et configuré avec la variable d’environnement

JAVA_HOME qui pointe sur le répertoire de base du JDK. Puis, télécharger l’archive jboss-

4.2.1-GA .zip à l’adresse http://www.jboss.org/download.jsp et la dézipper dans un répertoire

au choix ; définir et renseigner les variables d’environnements suivantes :

Variable : JBOSS_HOME , valeur : répertoire de base de jboss (C:\jboss-4.2.1-GA)

Variable : CLASSPATH, valeur : %JAVA_HOME%\lib\tools.jar

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 12

Page 13: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

d) SERVEUR DE BASE DE DONNEES : MySQL(MySQL 5.0.51a-community)

Le serveur MySQL est utilisé ici en lieu et place d’autres serveurs car il est encore

libre (encore car MySQL à été rachetée par la société SUN, et nul ne sait quelle sera la suite),

stable, rapide et nous le maîtrisons mieux ; de plus il intervient beaucoup dans le

développement d’application entreprises avec jboss, dont les documentations sont accessibles.

Cependant, nous avons utilisés UML pour la conception et notre modèle de données

est un modèle objet. Pourquoi ne pas avoir choisie une base de données objet et comment

utiliser un modèle objet avec une base de données relationnelle?

d.1) RAISONS DU CHOIX D’UNE BASE DE DONNEES RELATIONNELLE

En effet, la légère complexité des bases de données objets ne nous aurait pas permis

d’arriver à un certain stade de réalisation avec le peu de temps qui nous était imparti ; de plus

notre objectif premier est de maîtriser le développement d’application avec le standard J2EE,

déjà complexe ; augmenter la complexité ne nous aurais en aucun cas permit d’atteindre notre

but. il

d.2) MOYEN DE REPRESENTATION DES OBJETS DANS UNE BASE DE

DONNEES RELATIONNELLE

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 13

Page 14: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

Il s’agit du mapping objet/relationnel (ORM – Object Relationnal Mapping) qui est

une technique permettant de faire le lien entre la représentation des données et sa

repésentation basée sur un schéma SQL. Ce mapping est réalisé par un outil de mapping

encore appelé fournisseur de persistance.

d.3) OUTILS DE MAPPING OBJET / RELATIONNEL

Pour débuter, rappelons que JPA (Java Persistance API) est la spécification standard

pour la persistance des objets Java (http://jcp.org/en/jsr/detail?id=220 pour pus de détails sur

JPA). La majorité des fournisseurs de persistance qui existent sur le marché implémentent ce

standard. C’est ainsi que l’on distingue :

- TopLink Essential (produit Oracle), qui est l’implémentation de référence de JPA

- Hibernate Entity Manager (http://www.hibernate.org)

- JDO (Java Data Object), une autre API qui offre des fonctionnalités semblables à

JPA

- Bea Kodo

Nous avons choisi hibernate comme fournisseur de persistance car la plupart de nos

recherches nous ont guidés vers ce fournisseur ; de plus les premiers tests cet outil étaient

satisfaisant. Hibernate s’occupe du transfert de classes dans la base de données (et des types

de données java dans les types de données SQL) et facilite au maximum les requêtes au

développeur.

4. PROGRAMMATION

La programmation s’est déroulée en trois étapes qui sont respectivement

- La création des composants EJB : projet BudfamJPA

- La création du client qui utilisera l’EJB : projet BudFamJSF

- La création de l’application entreprise : projet BudFamEAR

a) CREATION DES COMPOSANTS EJB

a.1) PRESENTATION ET STRUCTURE D’UN EJB

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 14

Page 15: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

L’EJB représente le cœur du serveur J2EE. Cependant on distingue plusieurs types de

bean : session bean, entity bean et message driven bean.

Le session bean est chargé d’exécuter une tâche pour le client, il est non persistante et

se présente sous deux formes qui sont stateless (bean sans état, un bean pour tous les clients)

et statefull (bean avec état, un bean par utilisateur).

L’entity bean représente les données pérennes de l’application ; c’est un composant

qui existe physiquement sur un support de stockage : il est persistant. Cette persistance peut

être gérée soit par le conteneur d’EJB (CMP- Container Managed Persistance), soit

directement par le développeur avec le bean (BMP – Bean Managed Persistance, plus lourd à

gérer)

Le message driven bean est responsable de la communication par message.

Parmi les types ci-dessus, notre application utilisera les types entity et session, chacun

implémenté sous forme de classe Java.

Pour ce qui est de la structure, un EJB compte trois grandes parties :

- Le bean : qui fournit l’implémentation de la logique métier (business logic)

- Les interfaces Home et Remote : les clients utilisent l’interface Home pour trouver

ou créer une instance de l’EJB tandis que l’interface Remote reflète les méthodes

que l’on souhaite rendre disponible au monde extérieur

- Le descripteur de déploiement : qui est un fichier d’information (fichier xml)

- Toutes ces parties sont empaquetées dans un fichier JAR (Java Archive)

Pour la suite, nous définirons uniquement l’interface Remote ; l’interface Home sera obtenue

par un simple casting lors de l’invocation de méthode ou d’une instanciation.

Ayant maîtrisé la structure de l’EJB, passons donc à sa construction.

a.2) ENTITY BEAN

Nous représentons premièrement le diagramme de classe, puis dans les tableaux

suivants les entity bean utilisés, leurs attributs et méthodes respectives en dehors des

accesseurs getters et setters;

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 15

Page 16: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

• Alerte : Alerte générée en cas de dépassement du budget alloué à une catégorie de

dépense.

ATTRIBUTSlong idalerte Clé primaire, identifiant de l’alerteString annee AnnéeString mois MoisDouble mtdefini Montant défini pour la catégorieDouble ecart Ecart constatéString libcat Libellé de la catégorieUtilisateur iduser Utilisateur concerné par l’alerte

METHODESvoid addAlerte(Alerte alerte) Ajoute une alerteAlerte findAlerteById(long id) Retrouver une alerte à partir de son idCollection<Alerte>

getAllAlerteOfUser(long iduser)Récupérer toutes les alertes d’un utilisateur

Collection<Alerte>

getAlerteOfUserByMois(long iduser,

String annee, String mois)

Récupérer pour un mois donné, les alertes

d'un utilisateur

void delAlerte(long id); Supprimer une alerte

• Budgetmensuel : Budget mensuel défini par un utilisateur

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 16

Page 17: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

ATTRIBUTSlong idbudget Clé primaire, identifiant du budget mensuelDouble solde Solde String mois Mois String annee AnnéeDouble mtalloue Montant allouéUtilisateur iduser Utilisateur concerné

METHODESString

addBudgetMensuel(Budgetmensuel

budMens)

Définir le budget mensuel

String delBudgetMensuel(long id) Supprimer le bugdet mensuel d'un utilisateurString

updBudgetMensuel(Budgetmensuel budM)Modifier le budge mensuel d'un utilisateur

Budgetmensuel

findBudgetmensuelById(long id)Récupérer le budget mensuel à partir de son

idCollection<Budgetmensuel>

getAllBudgetOfUser(long iduser)Récupérer la liste contenant tous les budgets

définis par un utilisateurCollection<Budgetmensuel>

getBudgetOfUserByAnnee(long iduser,

String annee)

Récupérer la liste contenant les budgets

définis par unutilisateur au cours d'une année

Collection<Budgetmensuel>

getBudgetOfUserByMois(long iduser,

String annee, String mois)

Récupérer la liste contenant les budgets

définis par unutilisateur au cours du mois

d'une année

• Comporecette : Composer une recette de cuisine

ATTRIBUTSComporecettePK pk Clé primaire concaténée, identifiant de la

composition d’une recette : classe construite

à partDouble pu Prix unitaire de l’aliment au marchéDouble qte Quantité de l’aliment dans la recetteRecette idrecette Recette entrant dans la compositionAliment idaliment Aliment entrant dans la recette

METHODESString

addAlimentToRecette(Comporecette cp)Ajouter un aliment dans une recette

void delAlimentToRecette(long

idAliment, long idRecette)Supprimer un aliment dans une recette

void

updAlimentToRecette(Comporecette cp)Modifier les attributs (pu, qté) d'un aliment

dans la composition d'une recetteCollection<Recette>

getRecetteWhereThisAlimentIs(Aliment

aliment)

Lister les recettes qui contiennent cet aliment

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 17

Page 18: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

Comporecette

findComporecetteByPK(ComporecettePK

pk)

Récupérer une ligne de la table comporecette

à partir de son pk

Les attributs de la classe ComporecettePK sont les suivants :

long idrecette2 Identifiant de la recettelong idaliment2 Identifiant de l’aliment

• Recette : Recette de cuisine

ATTRIBUTSlong idrecette Clé primaire, identifiant de la recetteString descrct Description de la recetteString nomrecette Nom de la recetteUtilisateur iduser Utilisateur concerné par la recette

METHODESString addRecette(Recette recette) Ajouter une recettevoid delRecette(long id) Supprimer une recetteString updRecette(Recette recette) Modifier une recetteRecette findRecetteById(long id) Récupérer une recette à partir de son idCollection<Recette>

getAllRecetteOfUser(long iduser)Récupérer les recettes définies par un

utilisateurCollection<Aliment>

getAlimentOfThisRecette(Recette

recette)

Récupérer les aliments qui composent une

recette

• Aliment : Aliment pour les recettes de cuisine

ATTRIBUTSlong idaliment Clé primaire, identifiant de l’alimentString nomaliment Nom de l’alimentString unite Unité de commercialisationlong iduser Identifiant de l’utilisateur qui a enregistré

l’alimentMETHODES

void addAliment(Aliment aliment) Ajouter un alimentString delAliment(long id) Supprimer un alimentAliment findAlimentById(long id) Retrouver un aliment à partir de son IDAliment updAliment(Aliment aliment) Modifier un alimentCollection <Aliment>

getAllAlimentOfUser(long iduser)Renvoyer tous les aliments d'un untilisateur

Collection <Aliment>

getAllAlimentBD()Renvoyer tous les aliments de la base de

données

• Utilisateur : Utilisateur de l’application

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 18

Page 19: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

ATTRIBUTSlong iduser Clé primaire, identifiant de l’utilisateurString nomfamille Nom de familleString nonutil Nom utilisateur pour la connexion à

l’applicationString mot2pass Mot de passeString repsec Réponse secrète pour la récupération du

mot de passe en cas de perteString quesec Question secrète pour la récupération du

mot de passe en cas de perteString grp Groupe d’appartenance de l’utilisateur :

user, admin , passifString tel1 Téléphone1String tel2 Téléphone2String email E-mail

METHODESString addUtilisateur(Utilisateur

utilisateur)Créer un utilisateur

String updUtilisateur(Utilisateur

utilisateur)

Modifier un utilisateur

Utilisateur findUtilisateurById(long

id)Récupérer un utilisateur à partir de son id

Utilisateur connexionUtilisateur(String

nomUtil, String mot2pass)Connexion à l’application

Collection<Aliment>

ListeDeMarche(Collection<Recette>

mesRe7)

Renvoyer la liste de marché en fonction

des recettes choisies

Collection<Recette>

proposerRe7(Collection<Aliment>

mesAliments)

Proposer une/des recettes en fonction des

aliments choisi

Utilisateur recupPwd(String nomUtil,

String quest, String rep)Récupérer le mot de passe en cas de perte

• Logconnexion : Journal de connexion des utilisateurs

ATTRIBUTSlong idlog Clé primaire, identifiant du log de connexionTimestamp datehcnx Date et heure du jourUtilisateur userlogin Utilisateur conncerné

METHODESvoid addLogConnexion(Logconnexion

logcnx)Enregistrer une connexion dans le journal

Logconnexion

findLogconnexionById(long id)Récupérer un log de connexion à partir de

son idCollection<Logconnexion>

getAllLogConnexionOfUser(long Récupérer tous les logs de connexion d'un

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 19

Page 20: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

iduser) utilisateurvoid delLogConnexion(long iduser) Supprimer tous les log d'un utilisateur

• Catdepense : Catégorie de dépense

ATTRIBUTSint idcat Clé primaire, identifiant de la catégorieString libcat Libellé de la catégorieString descat Description de la catégorie

METHODESString addCatDepense(Catdepense

catdepense)Enregistrer une catégorie de dépense

String delCatDepense(int id) Supprimer une catégorie de dépenseString updCatDepense(Catdepense

catdepense)Modifier une catégorie de dépense

Catdepense findCatdepenseById(int

id)Récupérer une catégorie de dépense à partir

de son idCollection<Catdepense>

getAllCatDepense()Récupérer toutes les catégories de dépense

• Depense : Dépenses quotidiennes des utilisateurs

ATTRIBUTSlong iddepense Clé primaire, identifiant de la dépenseDate lejour Jour de la dépenseString moisdep MoisDouble mtdep MontantString motifdep Justificatifs de la dépenseString anneedep Année Catdepense idcat Catégorie relative à la dépenseUtilisateur iduser Utilisateur concerné par la dépense

METHODESString addDepense(Depense depense) Enregistrer une dépensevoid delDepense(long id) Supprimer la dépense d’un utilisateurDepense findDepenseById(long id) Retrouver une dépense à partir de son idvoid updDepense(Depense depense) Modifier une dépenseCollection<Depense>

getAllDepenseOfUser(long iduser)Récupérer toutes les dépenses d'un utilisateur

Collection<Depense>

getAllDepenseOfUserByAnnee(long

iduser, String annee)

Récupérer les dépenses annuelles d'un

utilisateur

Collection<Depense>

getAllDepenseOfUserByMois(long

iduser, String annee, String mois)

Récupérer les dépenses mensuelles d'un

utilisateur

• Distbudget : Allouer le budget mensuel par catégorie de dépense

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 20

Page 21: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

ATTRIBUTSDistbudgetPK pk Clé primaire concaténée, classe construite à

part, identifiant de la distribution double solde Solde pour la catégorie concernée double mtallouecat Montant alloué à la catégorie concernéeCatdepense idcat Catégorie pour laquelle le budget est allouéUtilisateur iduser Utilisateur responsable de l’allocation

METHODESDistbudget

findDistbudgetByPK(DistbudgetPK pk)Récupérer le budget alloué à une catégorie à

partir de sa clé primaireString

addBudgetToThisCategorie(Distbudget

db)

Allouer le budget à une catégorie

String

delBudgetOfThisCategorie(Distbudget

db)

Supprimer le budget alloué à une catégorie

String

updBudgetOfThisCategorie(Distbudget

db)

Modifier le budget alloué a une catégorie

Collection<Distbudget>

getBudgetOfThisCategorie(long

iduser, int idCategorie)

Récupérer pour un utilisateur tous les budgets

définis dans une catégorie

Collection<Distbudget>

getBudgetByCategorieByAnnee(long

iduser, String annee)

Récupérer le budget par année pour toutes les

catégories

Collection<Distbudget>

getBudgetByCategorieOfThisMois(long

iduser, String annee, String mois)

Récupérer le budget du mois pour toutes les

catégories

Les attributs de la classe DistbudgetPK sont les suivants :

int idcat2 Identifiant de la catégorielong iduser2 Identifiant de l’utilisateurString annee AnnéeString mois Mois

Les relations qui existent entre ces beans sont illustrées sur la figure suivante :

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 21

Page 22: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

Ces relations sont gérées au niveau des classes java par les annotations définies par

JPA et qui se trouvent dans le package javax.persistence. Ce sont :

@OneToMany : relation de un à plusieurs ; un utilisateur enregistre plusieurs

dépenses. Cette annotation se trouvera dans la classe Utilisateur et au dessus de la variable qui

référence la collection des dépenses de l’utilisateur.

@ManyToOne : plusieurs dépenses dont chacune appartient à un utilisateur précis ;

cette annotation se trouve dans la classe Dépense et au dessus de la variable qui fait référence

à l’Utilisateur responsable de la dépense

@ManyToMany : relation de plusieurs à plusieurs

@OneToOne ; relation bijective

Chaque annotation possède des attributs, qui ont pour rôle de spécifier le

comportement des classes lors des requêtes vers ka base de données.

a.3) SESSION BEAN

En effet, les méthodes que présentent les entity bean ci-dessus ne sont ni déclarées, ni

implantées dans les beans correspondant. Chaque entity bean donne lieu à une interface qui

déclare ses méthodes ; cette interface est Remote c'est-à-dire implémente javax.ejb.Remote.

Pour la nomenclature, le nom de l’interface porte celui de la classe suffixé de DAO ; exemple

AlerteDAO est l’interface définissant les méthodes de la classe Alerte. Ainsi, toutes les

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 22

Page 23: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

méthodes sont implantées dans la stateless session bean que nous utilisons : UserDAOBean.

Le schéma suvant résume tout ce que nous venons de dire :

Les beans étant créer, il faut configurer le descripteur de déploiement.

a.4) CONFIGURATION DU DESCRIPTEUR DE DEPLOIEMENT

Il s’agit du fichier persistance.xml dont le chemin d’accès est présenté à la figure ci-

dessous. Rappelons ici que notre founisseur de persistance est Hibernate.

Le fichier persistance.xml présenté par la suite renseigne sur les éléments suivants :

- Le nom de l’unité de persistance : BudFamJPA ;

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 23

Page 24: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

- La source de données : java:/BudFamDS ; ce nom doit être le même que celui de la

source de données dans le serveur jboss que l’on configurera par la suite (fichier

mysql-ds.xml)

- Le fournisseur de persistance : Hibernate , configuré dans la balises properties, la

première propriété spécifie la base de données (MySQL) et le moteur de stockage

(InnoDB) que nous utilisons ; la deuxième spécifie l’action à réaliser sur la base de

données : il s’agit de la mise à jour de celle-ci (update).

Maintenant que nous avons créé le cœur (EJB), il faut faire un premier déploiement

afin de le tester et s’assurer qu’il répond aux besoins exprimés et qu’il est exempt de bugs.

a.5) DEPLOIEMENT DE L’EJB

Pour déployer notre composant, il suffit de configurer les fichiers mysql-ds.xml et

standardjbosscmp-jdbc.xml du serveur d’application, ensuite installer le pilote du serveur de

base de donnée et enfin déployer notre composant

a.5.1) CONFIGURATION DES FICHIERS DU SERVEUR JBOSS

• LA SOURCE DE DONNEES : %JBOSS_HOME%\server\default\deploy\mysql-

ds.xml

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 24

Page 25: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

Les informations à entrer dans ce fichier sont :

- Le nom JNDI, idem que celui de la source de données dans le descripteur de

déploiement

- L’url de connexion à la base de données

- Le nom d’utilisateur et le mot de passe de la base de données

• LE CONTENEUR : %JBOSS_HOME%\server\default\conf\standardjboss-

cmp.xml

Nous configurons le conteneur, car la persistance est gérée par ce dernier (CMP)

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 25

Page 26: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

Il suffit de renseigner les deux lignes ci-dessus : le nom de la source de données et la base de

données à mapper.

• LE PILOTE DE LA BASE DE DONNEES : mysql-connector-java-5.0.7-bin

Ce fichier est à introduire dans le répertoire %JBOSS_HOME%\server\default\lib

a.5.2) DEPLOIEMENT DE L’EJB : BudFamJPA.jar

Il suffit de copier cette archive dans le répertoire %JBOSS_HOME%\server\default\deploy de

jboss. Eclipse le fait à notre place en faisant un click droit sur l’instance du serveur utilisé et

en choisissant Add and Remove Project

a.6) TEST SUR L’EJB

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 26

Page 27: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

L’EJB doit être testé après son déploiement avant de se lancer dans la création d’un

client. Il s’agit ici de tester chacune des fonctions implantées afin de nous assurer qu’elles

répondent non seulement aux besoins exprimés, mais aussi qu’elles ne présentent pas de bug.

Pour ce, nous avons crées un client qui fonctionne en ligne de commande :

UserDAOTestBean. Grâce à ce dernier, nous avons corrigé, amélioré et mis en place les

fonctions de l’application.

Cependant afin d’utiliser l’EJB avec un client, il faut:

- Créer un contexte de persistance avec le conteneur : c’est la méthode

getInitialContext() qui est propre à chaque serveur d’application ; chez jboss sa

définition est la suivante :

- Connecter le conteneur aux beans

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 27

Page 28: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

- Utiliser les méthodes en passant par les DAO ; l’ajout d’un aliment se fera de la

manière suivante : daoAliment.addAliment(alim) ;

Les tests étant validés nous pouvons passer à la création du client

b) CREATION DU CLIENT POUR L’EJB : PAGES JSP

Les JSP, ou Java Server Pages, ont pour but de simplifier la création et la gestion des

pages web dynamiques. Ils permettent un mélange du code HTML et du code Java dans le

même document. Le code Java est entouré de balises spéciales afin que le conteneur de JSP

puisse les utiliser.

Cependant il existe un cadre pour le développement graphique des JSP ; il s’agit de

JSF, Java Server Faces. JSF nécessite la présence des fichiers suivants pour être utilisé sous

avec le serveur jboss: jstl.jar, jsf-impl.jar, jsf-api.jar, jboss-faces.jar.

Par la suite, il faut crée une dépendance entre les pages JSP (BudFamJSF) et le bean

(BudFamJPA). La figure suivante nous le montre

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 28

Page 29: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

A cette date, toutes les interfaces n’ont pas encore étés crées, seul deux interfaces sont

disponibles. Il s’agit de l’ajout d’un nouvel aliment et de la liste des aliments d’un utilisateur.

Interface d’enregistrement d’un aliment

Interface de présentation de la liste des aliments

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 29

Page 30: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

c) CREATION DE L’APPLICATION ENTREPRISE

Le rôle de l’application entreprise est de réunir l’EJB (BudFamJPA) et le client

(Application web, BudFamJSF) dans le même package : BudFamEAR. L’architecture de

notre projet est donc la suivante :

5. MISE EN SERVICE

Mettre en service l’application consiste à déployer le fichier BudFamEAR.ear issu du

projet BudFamEAR dans notre serveur d’application et de préciser l’url avec laquelle les

utilisateurs pourront accéder à l’application. Le déploiement ici se fait de la même manière

que celui de l’EJB ; pour l’instant, l’url est :

http://localhost:8080/BudFamJSF/faces/AccueilBudgetFamilial.jsp

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 30

Page 31: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

6. APPLICATIONS ET TECHNOLOGIES UTILISEES

Cette section présente l’ensemble des application et standards qui nous ont servis tout

au long du projet.

APPLICATION/STANDARDFONCTION/ROLE REFERENCEJBoss AS Serveur d’application, http://www.jboss.org/download.jspEclipse Europa (Eclipse 3.3) IDE http://www.eclipse.orgZMWS 1.2.7 (Zazou Mini

Web Server)

Pack d’auto

installation contenant

MySQL,

PhpMyAdmin, et

Apache

http://www.zmws.org

MySQL 5.0.51a-community

(via ZMWS), avec InnoDB

pour moteur de stockage

Serveur de base de

données

Dia 0.95 Dessin de diagrammes

et structure

http://www.gnome.org/projects/dia/

Paint Dessin Microsoft windowsOpéra 9.26 Navigateur web www.opera.com SciTE Editeur de texte http://www.scintilla.org JPA : Java Persistence API Standard pour la

persistance des objets

java

http://jcp.org/en/jsr/detail?id=220

EJB3 : Enterprise Java Bean 3 Composant métier J EE 5DAO : Data Access Object Patron de conception

pour la persistance des

données

http://deptinfo.unice.fr/

DVO : Data Value Object Etat d’un objet ; assure

le transport sur le

réseau des objets non

sérialisable

Cedric W. Jonhson,

[email protected]

Foxit Reader Lecture de fichiers pdf http://www.foxitsoftware.comJSF: Java Server Faces Cadre pour la création

des interfaces

graphique des pages

JSP

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 31

Page 32: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

JSP : Java Server Pages Créer des pages web

dynamiques

Penser en Java, Bruce Eckel

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 32

Page 33: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

CONCLUSION

En bref, la gestion du budget familial proprement dite à été effectuée à travers les

différentes fonctions ; la grosse difficulté a été l’application du standard J2EE à notre logiciel.

C’est un standard assez complexe mais, dès que mis en place, il facilite au maximum la

maintenance et l’évolution de l’application. Pour cette évolution, notre perspective est de

développer des web services qui sont des composants inter langage. Le tableau suivant

présente l’évaluation des objectifs en fin de projet.

PRIORITE OBJECTIFDEBUT DU PROJET FIN DU PROGET

1 Maîtrise pratique du standard J2EE Réalisé à 98% 2 Fournir une application pour les utilisateurs Réalisé à 64%

((ejb+client1+client2)/3)Création du cœur de l’application :

composant EJB

Réalisé à 87%

Création d’un client pour l’EJB (en ligne de

commande, pour les tests : client1)

Réalisé à 100%

Création d’un client pour l’EJB (Interface

graphique : client2)

Réalisé à 5%

- Objectif général Réalisé à 81%

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 33

Page 34: Gestion du budget familial, liste de marché en fonction ...d1n7iqsz6ob2ad.cloudfront.net/document/pdf/53273aeb80d12.pdfUne application entreprise est constituée des éléments suivants

Gestion du budget familial, liste de marché en fonction des recettes 2008

BIBLIOGRAPHIE ET URLOGRAPHIE

• Penser en java, Bruce Eckel

• Hibernate, http://www.hibernate.org/hib_docs/entitymanager/reference/en/html/

• Eclipse, Campus Press, ISBN: 2-7440-2119-1

• JBOSS, http://www.jboss.org

• The server side http://www.theserverside.com

• MySQL tutorial, Sams Publishing, ISBN: 0-672-32584-5

• JBoss: A Developer's Notebook, O’Reilly ISBN: 0-596-10007-8

• Eclipse, http://www.eclipse.org

___________________________________________________________________________KOLLE KOUO MOUDIKI Jean Hervé 34