410 likes | 677 Views
OpenXava Réalisé par : Ghandri Houssem Snoussi Ahmed Souissi Salma Torjmen Salma Yacoubi Sinda Saidi saif eddin. PLAN. Introduction Composant métier Vue Liste des données Mapping objet/relationnel Contrôleur Application Personnalisation Exemple . Introduction.
E N D
OpenXava Réalisé par : Ghandri Houssem Snoussi Ahmed Souissi Salma Torjmen Salma YacoubiSinda Saidi saifeddin
PLAN Introduction Composant métier Vue Liste des données Mapping objet/relationnel Contrôleur Application Personnalisation Exemple
Introduction • Définition : • OpenXava est un ensemble d'outils et de composants pour développer des applications JavaEE/J2EE rapidement et facilement. • Le but d‘ OpenXava est de réaliser facilement les fonctionnalités les plus courantes dans les applications métier tout en gardant une certaine flexibilité afin de permettre de développer sans restrictions des fonctionnalités avancées.
Introduction • Contrôleur : • Le composant métier ne définit pas les actions qu'un utilisateur peut effectuer dans l'application, c'est-à-dire les fonctionnalités. Ceci est défini par les contrôleurs spécifiés dans le fichierxava/controllers.xml du projet. En outre, OpenXava fournit un ensemble de contrôleurs dans le fichier OpenXava/ xava/default-controllers.xml.
Introduction • Composant métier : • La structure des données • Les validateurs , les calculs et en général la logique associée avec le composant métier • Les vues possibles, c'est-à-dire, la configuration de toutes les interfaces utilisateur possibles pour ce composant précis • Les présentations des listes de données utilisées pour la navigation des instances de composants, la recherche et les rapports • La mapping objet-relationnel, c'est-à-dire la cartographie qui lie les objets Java au tables des bases de données. Ceci inclut des informations sur les tables des bases de données et les conversions entre les données de la base de données.
Introduction • Application : • Une application OpenXava est un ensemble de modules. Un module lie un composant métier avec un ou plusieurs contrôleurs. Chaque module de l'application est ce que l'utilisateur final utilise et est généralement configuré comme un portlet d'un portail.
Structure du projet • [racine]A la racine de la structure se trouve le fichier build.xml contenant les tâches Ant. • src [dossier source]Le dossier source contenant le code Java • xava : Les fichiers de configuration XML de l'application. Les principaux fichiers sont application.xml et controllers.xml. • i18n : Les fichiers ressources avec les libellés et les messages dans plusieurs langues • properties[dossier source] : Fichiers de propriétés pour la configuration de l'application • data: Dossier utile pour conserver les scripts de création des tables sur la base de donnée, si nécessaire • web: Contenu de l'application web. En général des JSP, les librairies nécessaires et les classes Java. La majorité du contenu est générée automatiquement, mais il est possible d'y placer des pages JSP spécifiques ou d'autres ressource web particulières.
MODELE • La couche modèle dans une application orientée objet contient la logique métier, c'est-à-dire la structure des données et tous les calculs, les validations et processus associés aux données.OpenXava est un Framework (cadre de travail) orienté modèle, dans lequel celui-ci est le plus important et tout le reste en dépend. La façon de définir un modèle dans OpenXava est d'utiliser des classes Java pures. OpenXava génère une application complète à partir de la définition de votre modèle • L'unité de base pour créer une application OpenXava est le composant métier. Les composants métier sont définis par une classe Java appelée Entity.
MODELE • Syntaxe pour une entité
Une propriété représente un état d'un objet qui peut être lu et parfois mis à jour Une référence vous permet d'accéder à une entité depuis une autre entité.
Il est possible de définir une collection de références à des entités Les méthodes sont définies dans une entité OpenXava comme dans une classe Java classique.
Les requêtes sont des méthodes Java statiques qui vous permettent de chercher un ou plusieurs objets qui répondent à des critères
Méthodes de rappel OX (à partir de la V4.0.1) En utilisant @PreCreate vous pouvez définir une logique qui sera exécutée avant la persistance de l'objet
VUE • OpenXava génère une interface utilisateur par défaut à partir du modèle. Dans beaucoup de cas simples, ceci est suffisant, mais parfois, il est nécessaire de modéliser avec précision le format de l'interface utilisateur ou des vues.
Liste des données • Les liste de données sont affichées sous forme de tableaux. Si vous créez un module conventionnel OpenXava, l'utilisateur peut gérer les données du composant avec une liste telle que celle-ci
Liste des données • La liste permet à l'utilisateur defiltrer par n'importe quelle colonne et n'importe quelle combinaison de colonnes • trier par n'importe quelle colonne sur un simple click • afficher les données paginées et ainsi travailler efficacement avec plusieurs millions d'enregistrements • personnaliser la liste : ajouter, enlever des colonnes ou encore changer leur ordre (avec le petit crayon situé dans le coin en haut à gauche). Ces personnalisations sont mémorisées pour chaque utilisateur • exécuter des actions génériques de traitement des données de la liste : générer des rapports PDF, exporter vers Excel ou supprimer des objets sélectionnés.
Mapping objet/relationnel • Les outils objet-relationnel vous permettent de travailler avec des objets plutôt qu'avec des tables et des colonnes et génèrent automatiquement le code SQL pour lire et mettre à jour la base de données. De cette manière, vous n'avez pas besoin d'un accès direct à la base de données SQL. Bien sûr, vous devez définir précisément la manière dont vos classes correspondent aux tables et ce travail est effectué à l'aide des annotations JPA
Mapping objet/relationnel • Quelques exemples : • Mapping d'entité : L'annotation @Table spécifie la table principale pour l'entité annotée
Mapping objet/relationnel • Mapping de propriété L'annotation @Column est utilisée pour spécifier la colonne d'une propriété persistante ou un champ
Mapping objet/relationnel • Mapping de référence • L'annotation @JoinColumn est utilisée pour spécifier une colonne représentant une référence. Exemple :
Contrôleur • Les contrôleurs sont utilisés pour définir des actions (boutons, liens, images) sur lesquels l'utilisateur peut cliquer. Les contrôleurs sont définis dans le fichier controllers.xml qui se trouve dans le dossier xava de votre projet.Les actions ne sont pas définies dans les composants, car il existe beaucoup d'actions génériques qui peuvent être utilisées avec n'importe quel composant. Dans le dossier OpenXava/xava, vous trouverez un fichier default-controllers.xml qui contient un groupe de contrôleurs génériques qui peuvent être utilisés dans votre application.
Application • La définition d'une application OpenXava est contenue dans le fichier application.xml qui se trouve dans le dossier xava de votre projet. La syntaxe du fichier est comme suit :
Application name (obligatoire) : Le nom de l'application label (optionnel) : Utilisez plutôt les fichiers i18n Optionnel :Les contrôleur pour les modules par défaut (généré automatiquement pour chaque composant) module (plusieurs, optionnel) : Chaque module exécutable par l'utilisateur final
Application • Voici comment déclarer un module
(obligatoire) : Le nom du module unique Dossier dans lequel réside le module Nom court affiché à l'utilisateur Description longue affichée à l'utilisateur
(plusieurs, optionnel) : Définition d'une variable et de sa valeur, accessible par les actions (un, optionnel) : Nom du composant utilisé dans ce module (un, optionnel) : Nom de la vue qui doit être utilisée dans l'édition de détail. S'il est absent, la vue par défaut est utilisée
(un, optionnel) : Page JSP utilisée comme vue : L'affichage utilisé en mode liste. S'il n'est pas spécifié, celui par défaut est utilisé Les contrôleurs avec les actions utilisées initialement
Comportement lors du passage de l'affichage des liste à l'affichage de détail et vice-versa. De même, il est possible de définir un module avec uniquement un affichage de liste ou de détail Déclaration d'un module qui ne contient que de la documentation et aucune logique.
Personnalisation • L'interface utilisateur générée par OpenXava est bonne pour la plupart des cas, mais parfois il est nécessaire de personnaliser une partie de l'interface (en créant vos propres éditeurs) ou créer complètement une interface utilisateur "maison" (à l'aide de vues JSP personnalisées).
Personnalisation • Pour définir un rendu de propriétés, OpenXava utilise des éditeurs.Un éditeur indique l'apparence d'une propriété. Il est constitué d'une définition XML ainsi qu'un fragment JSP. Pour affiner le comportement des éditeurs d'OpenXava ou pour ajouter des éditeurs personnalisés, vous devez créer dans le dossier xava de votre projet un fichier appelé editors.xml. Ce fichier ressemble à ceci :
Création D’un OpenXava • Tout d'abord, lancez Eclipse et choisissez le workspace (espace de travail) qui est livré avec la distribution OpenXava.En utilisant l'assistant approprié d'Eclipse, créez un nouveau projet Java (New Java Project) nommé Management. Maintenant que vous avez un nouveau projet Java vide dans le workspace. • Ouvrez le projet OpenXavaTemplate et lancez CreateNewProject.xml en utilisant Ant. • Vous pouvez le faire en faisant un clic droit sur le fichier CreateNewProject.xml et dans le menu, choisir Run as... > Ant Build. • Lorsque le script Ant vous demandera le nom du projet, entrez Management dans la boîte de dialogue. • Pour finir, sélectionnez votre projet Management et pressez sur F5 afin de rafraîchir le contenu. • Vous avez à présent un nouveau projet prêt pour y travailler. Toutefois, avant de continuer, il s'agit de configurer le système de base de données.
Exemple • import javax.persistence.*;import org.openxava.annotations.*;@Entitypublic class Teacher { @Id @Column(length=5) @Required private String id; @Column(length=40) @Required private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}