r2547 - in trunk: . topia-persistence/src/it/ANOMALIE-1640 topia-persistence/src/site/rst/user topia-persistence-tck topia-service-history topia-service-security topia-soa topia-tutorial
Author: tchemit Date: 2012-05-28 12:44:08 +0200 (Mon, 28 May 2012) New Revision: 2547 Url: http://nuiton.org/repositories/revision/topia/2547 Log: use eugene-m-p fix some docs (usage of vm when required) Added: trunk/topia-persistence/src/site/rst/user/ModelGeneration.rst.vm trunk/topia-persistence/src/site/rst/user/howto.rst.vm trunk/topia-persistence/src/site/rst/user/start.rst.vm Removed: trunk/topia-persistence/src/site/rst/user/ModelGeneration.rst trunk/topia-persistence/src/site/rst/user/howto.rst trunk/topia-persistence/src/site/rst/user/start.rst Modified: trunk/pom.xml trunk/topia-persistence-tck/pom.xml trunk/topia-persistence/src/it/ANOMALIE-1640/pom.xml trunk/topia-service-history/pom.xml trunk/topia-service-security/pom.xml trunk/topia-soa/pom.xml trunk/topia-tutorial/pom.xml Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2012-05-28 09:24:04 UTC (rev 2546) +++ trunk/pom.xml 2012-05-28 10:44:08 UTC (rev 2547) @@ -381,7 +381,7 @@ <plugin> <groupId>org.nuiton.eugene</groupId> - <artifactId>maven-eugene-plugin</artifactId> + <artifactId>eugene-maven-plugin</artifactId> <version>${eugeneVersion}</version> <configuration> <inputs>zargo</inputs> Modified: trunk/topia-persistence/src/it/ANOMALIE-1640/pom.xml =================================================================== --- trunk/topia-persistence/src/it/ANOMALIE-1640/pom.xml 2012-05-28 09:24:04 UTC (rev 2546) +++ trunk/topia-persistence/src/it/ANOMALIE-1640/pom.xml 2012-05-28 10:44:08 UTC (rev 2547) @@ -109,7 +109,7 @@ <plugins> <plugin> <groupId>org.nuiton.eugene</groupId> - <artifactId>maven-eugene-plugin</artifactId> + <artifactId>eugene-maven-plugin</artifactId> <version>${eugeneVersion}</version> <configuration> <inputs>zargo</inputs> Deleted: trunk/topia-persistence/src/site/rst/user/ModelGeneration.rst =================================================================== --- trunk/topia-persistence/src/site/rst/user/ModelGeneration.rst 2012-05-28 09:24:04 UTC (rev 2546) +++ trunk/topia-persistence/src/site/rst/user/ModelGeneration.rst 2012-05-28 10:44:08 UTC (rev 2547) @@ -1,111 +0,0 @@ -.. - -.. * #%L -.. * ToPIA :: Persistence -.. * -.. * $Id$ -.. * $HeadURL$ -.. * %% -.. * Copyright (C) 2004 - 2010 CodeLutin -.. * %% -.. * This program is free software: you can redistribute it and/or modify -.. * it under the terms of the GNU Lesser General Public License as -.. * published by the Free Software Foundation, either version 3 of the -.. * License, or (at your option) any later version. -.. * -.. * This program is distributed in the hope that it will be useful, -.. * but WITHOUT ANY WARRANTY; without even the implied warranty of -.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -.. * GNU General Lesser Public License for more details. -.. * -.. * You should have received a copy of the GNU General Lesser Public -.. * License along with this program. If not, see -.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. -.. * #L% -.. - -Génération des modèles ----------------------- - - -Le module "topia-persistence" de topia est capable de -générer la persistence à partir d'un modèle UML. - -Nous allons détailler ici comme inclure la génération dans le -cycle de compilation maven. - - -Architecture maven ------------------- - -+---------------------------------+-----------------------------------------+ -| src/main/xmi/mymodel.zargo | exemple de modele UML avec argoUML | -+---------------------------------+-----------------------------------------+ -| src/main/xmi/mymodel.properties | fichier de propriétés attaché au modele | -+---------------------------------|-----------------------------------------+ - - -Configuration du pom.xml ------------------------- - -Pour générer les sources dans la phase "generate-sources" de maven, et utiliser -les sources générées, et faut configurer le pom. - -Plugin eugene -============= - -:: - -<plugin> - <groupId>org.nuiton.eugene</groupId> - <artifactId>maven-eugene-plugin</artifactId> - <!-- la version peut être plus récente --> - <version>1.0.0</version> - <executions> - <execution> - <id>Generator</id> - <phase>generate-sources</phase> - <configuration> - <srcDirUml>src/main/xmi</srcDirUml> - <srcXmiDest>target/generated-sources/xmi/</srcXmiDest> - <fullPackagePath>org.company.package</fullPackagePath> - <extractedPackages>org.company.package</extractedPackages> - <srcGenDest>target/generated-sources/objectmodel/</srcGenDest> - <includes>**/*.objectmodel</includes> - <templates>org.nuiton.topia.generator.TopiaMetaGenerator</templates> - <destDirGen>target/generated-sources/java</destDirGen> - <defaultPackage>org.company.package</defaultPackage> - </configuration> - <goals> - <goal>zargo2xmi</goal> - <goal>xmi2objectmodel</goal> - <goal>generate</goal> - </goals> - </execution> - </executions> - <dependencies> - <dependency> - <groupId>org.nuiton.topia</groupId> - <artifactId>topia-persistence</artifactId> - <!-- la version peut être plus récente --> - <version>2.2.0</version> - <scope>runtime</scope> - </dependency> - </dependencies> -</plugin> - -Pour plus d'information à propos d'eugene, merci de consulter le site : -http://maven-site.nuiton.org/eugene/ - -Dépendances du projet -===================== - -Il faut enfin ajouter "topia-persistence" en dépendance du projet : - -:: - -<dependency> - <groupId>org.nuiton.topia</groupId> - <artifactId>topia-persistence</artifactId> - <!-- la version peut être plus récente --> - <version>2.2.0</version> - <scope>compile</scope> -</dependency> Copied: trunk/topia-persistence/src/site/rst/user/ModelGeneration.rst.vm (from rev 2546, trunk/topia-persistence/src/site/rst/user/ModelGeneration.rst) =================================================================== --- trunk/topia-persistence/src/site/rst/user/ModelGeneration.rst.vm (rev 0) +++ trunk/topia-persistence/src/site/rst/user/ModelGeneration.rst.vm 2012-05-28 10:44:08 UTC (rev 2547) @@ -0,0 +1,109 @@ +.. - +.. * #%L +.. * ToPIA :: Persistence +.. * +.. * $Id$ +.. * $HeadURL$ +.. * %% +.. * Copyright (C) 2004 - 2010 CodeLutin +.. * %% +.. * This program is free software: you can redistribute it and/or modify +.. * it under the terms of the GNU Lesser General Public License as +.. * published by the Free Software Foundation, either version 3 of the +.. * License, or (at your option) any later version. +.. * +.. * This program is distributed in the hope that it will be useful, +.. * but WITHOUT ANY WARRANTY; without even the implied warranty of +.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.. * GNU General Lesser Public License for more details. +.. * +.. * You should have received a copy of the GNU General Lesser Public +.. * License along with this program. If not, see +.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. +.. * #L% +.. - +Génération des modèles +---------------------- + + +Le module "topia-persistence" de topia est capable de +générer la persistence à partir d'un modèle UML. + +Nous allons détailler ici comme inclure la génération dans le +cycle de compilation maven. + + +Architecture maven +------------------ + ++---------------------------------+-----------------------------------------+ +| src/main/xmi/mymodel.zargo | exemple de modele UML avec argoUML | ++---------------------------------+-----------------------------------------+ +| src/main/xmi/mymodel.properties | fichier de propriétés attaché au modele | ++---------------------------------|-----------------------------------------+ + + +Configuration du pom.xml +------------------------ + +Pour générer les sources dans la phase "generate-sources" de maven, et utiliser +les sources générées, et faut configurer le pom. + +Plugin eugene +============= + +:: + +<plugin> + <groupId>org.nuiton.eugene</groupId> + <artifactId>eugene-maven-plugin</artifactId> + <version>${eugenePluginVersion}</version> + <executions> + <execution> + <id>Generator</id> + <phase>generate-sources</phase> + <configuration> + <srcDirUml>src/main/xmi</srcDirUml> + <srcXmiDest>target/generated-sources/xmi/</srcXmiDest> + <fullPackagePath>org.company.package</fullPackagePath> + <extractedPackages>org.company.package</extractedPackages> + <srcGenDest>target/generated-sources/objectmodel/</srcGenDest> + <includes>**/*.objectmodel</includes> + <templates>org.nuiton.topia.generator.TopiaMetaGenerator</templates> + <destDirGen>target/generated-sources/java</destDirGen> + <defaultPackage>org.company.package</defaultPackage> + </configuration> + <goals> + <goal>zargo2xmi</goal> + <goal>xmi2objectmodel</goal> + <goal>generate</goal> + </goals> + </execution> + </executions> + <dependencies> + <dependency> + <groupId>org.nuiton.topia</groupId> + <artifactId>topia-persistence</artifactId> + <!-- la version peut être plus récente --> + <version>2.2.0</version> + <scope>runtime</scope> + </dependency> + </dependencies> +</plugin> + +Pour plus d'information à propos d'eugene, merci de consulter le site : +http://maven-site.nuiton.org/eugene/ + +Dépendances du projet +===================== + +Il faut enfin ajouter "topia-persistence" en dépendance du projet : + +:: + +<dependency> + <groupId>org.nuiton.topia</groupId> + <artifactId>topia-persistence</artifactId> + <version>${project.version}</version> + <scope>compile</scope> +</dependency> Property changes on: trunk/topia-persistence/src/site/rst/user/ModelGeneration.rst.vm ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Deleted: trunk/topia-persistence/src/site/rst/user/howto.rst =================================================================== --- trunk/topia-persistence/src/site/rst/user/howto.rst 2012-05-28 09:24:04 UTC (rev 2546) +++ trunk/topia-persistence/src/site/rst/user/howto.rst 2012-05-28 10:44:08 UTC (rev 2547) @@ -1,155 +0,0 @@ -.. - -.. * #%L -.. * ToPIA :: Persistence -.. * -.. * $Id$ -.. * $HeadURL$ -.. * %% -.. * Copyright (C) 2004 - 2011 CodeLutin, Chatellier Eric -.. * %% -.. * This program is free software: you can redistribute it and/or modify -.. * it under the terms of the GNU Lesser General Public License as -.. * published by the Free Software Foundation, either version 3 of the -.. * License, or (at your option) any later version. -.. * -.. * This program is distributed in the hope that it will be useful, -.. * but WITHOUT ANY WARRANTY; without even the implied warranty of -.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -.. * GNU General Lesser Public License for more details. -.. * -.. * You should have received a copy of the GNU General Lesser Public -.. * License along with this program. If not, see -.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. -.. * #L% -.. - -How to -====== - -Ce document a pour objectif de prendre en main le framework Topia. Le document -est constitué de 4 parties, la modélisation, la génération, la configuration et -l'utilisation. - -Modélisation ------------- - -La première étape constiste à réaliser le modèle UML soit avec Argouml -(http://argouml.tigris.org) soit avec Poséidon (http://www.gentleware.com). - -Le stérotype «entity» sur les classes permet de préciser que la classe est -persistée par Topia. D'autre stérotypes (extern, service, ...) sont disponibles -mais ne sont pas présentés. - -Le fichier de modélisation peut être complété par un fichier de configuration -nommé <nom fichier modélisation>.properties. Il contient des informations -techniques propres aux librairies utilisé par Topia. - -Exemple : - -:: - - # Précise comment est mappé un type - # model.tagvalue.<type java>=<type base de donnée> - model.tagvalue.java.lang.String=text - - # Précise le schema de la base de données par défaut - # model.tagvalue.dbSchema=<nom schéma> - model.tagvalue.dbSchema=test - - # Précise l'entête de l'ensemble des fichiers générés - # model.tagvalue.copyright=<valeur> - model.tagvalue.copyright=/* *##%\n Copyright (C) 2011 Code Lutin\n *##% */ - - # Force le chargement d'un attribut - # <nom paquetage>.<nom entité>.attribute.<nom attribut>.tagvalue.lazy=false - org.codelutin.Person.attribute.association.tagvalue.lazy=false - -Génération ----------- - -La génération des fichiers Topia se font par l'utilisation du plugin maven -Eugene_. Ce plugin est disponible sur le repository central. - -Configuration du plugin maven : - -:: - - <plugin> - <groupId>org.nuiton.eugene</groupId> - <artifactId>maven-eugene-plugin</artifactId> - <version>2.3.2</version> - <executions> - <execution> - <phase>process-sources</phase> - <!--Configuration of model generator--> - <configuration> - <inputs>zargo</inputs> - <fullPackagePath>org.nuiton.topiatest</fullPackagePath> - <defaultPackage>org.nuiton.topiatest</defaultPackage> - <extractedPackages>org.nuiton.topiatest</extractedPackages> - <templates> - org.nuiton.topia.generator.TopiaMetaTransformer - </templates> - </configuration> - <goals> - <goal>smart-generate</goal> - </goals> - </execution> - </executions> - <dependencies> - <dependency> - <groupId>org.nuiton.topia</groupId> - <artifactId>topia-persistence</artifactId> - <version>2.5.2</version> - <scope>compile</scope> - </dependency> - </dependencies> - </plugin> - -Le plugin utilise Eugene_ avec les templates de génération de Topia, le -fichier argouml ou poséidon doit se trouver dans le répertoire -``src/main/xmi``. Les fichiers sont générés dans le répertoire -``target/generated-sources/java``. Il faut préciser au plugin les paquetages -à traiter avec le ``defaultPackage`` et ``extractedPackages``. - -Ajout dans des dépendances de Topia pour la compilation des fichiers générés : - -:: - - <dependency> - <groupId>org.nuiton.topia</groupId> - <artifactId>topia-persistence</artifactId> - <version>2.5.2</version> - <scope>compile</scope> - </dependency> - -Pour une classe modélisée, nous retrouvons 6 fichiers : - * Une interface - * Une classe abstraite - * Une implantation - * Une configuration hibernate - * Un DAO abstrait - * Une implantation du DAO - -Une classe Helper est aussi générée, permettant l'accès à l'ensemble des DAO. - -Configuration -------------- - -Un fichier contenant les informations de connexion à la base de données et de -configuration de Topia doit être créé au niveau des ressources du projet. -Par convention, ce fichier est nommé ``TopiaContextImpl.properties``. - - -Utilisation ------------ - -Implantation des méthodes -~~~~~~~~~~~~~~~~~~~~~~~~~ - -Si des méthodes ont été définies dans le modèle de données, il faut créer -l'implantation correspondante. Le paquetage doit porter le même nom que celui de -la génération. - - - -.. _Eugene: http://maven-site.nuiton.org/eugene/ Copied: trunk/topia-persistence/src/site/rst/user/howto.rst.vm (from rev 2546, trunk/topia-persistence/src/site/rst/user/howto.rst) =================================================================== --- trunk/topia-persistence/src/site/rst/user/howto.rst.vm (rev 0) +++ trunk/topia-persistence/src/site/rst/user/howto.rst.vm 2012-05-28 10:44:08 UTC (rev 2547) @@ -0,0 +1,155 @@ +.. - +.. * #%L +.. * ToPIA :: Persistence +.. * +.. * $Id$ +.. * $HeadURL$ +.. * %% +.. * Copyright (C) 2004 - 2011 CodeLutin, Chatellier Eric +.. * %% +.. * This program is free software: you can redistribute it and/or modify +.. * it under the terms of the GNU Lesser General Public License as +.. * published by the Free Software Foundation, either version 3 of the +.. * License, or (at your option) any later version. +.. * +.. * This program is distributed in the hope that it will be useful, +.. * but WITHOUT ANY WARRANTY; without even the implied warranty of +.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.. * GNU General Lesser Public License for more details. +.. * +.. * You should have received a copy of the GNU General Lesser Public +.. * License along with this program. If not, see +.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. +.. * #L% +.. - +How to +====== + +Ce document a pour objectif de prendre en main le framework Topia. Le document +est constitué de 4 parties, la modélisation, la génération, la configuration et +l'utilisation. + +Modélisation +------------ + +La première étape constiste à réaliser le modèle UML soit avec Argouml +(http://argouml.tigris.org) soit avec Poséidon (http://www.gentleware.com). + +Le stérotype «entity» sur les classes permet de préciser que la classe est +persistée par Topia. D'autre stérotypes (extern, service, ...) sont disponibles +mais ne sont pas présentés. + +Le fichier de modélisation peut être complété par un fichier de configuration +nommé <nom fichier modélisation>.properties. Il contient des informations +techniques propres aux librairies utilisé par Topia. + +Exemple : + +:: + + # Précise comment est mappé un type + # model.tagvalue.<type java>=<type base de donnée> + model.tagvalue.java.lang.String=text + + # Précise le schema de la base de données par défaut + # model.tagvalue.dbSchema=<nom schéma> + model.tagvalue.dbSchema=test + + # Précise l'entête de l'ensemble des fichiers générés + # model.tagvalue.copyright=<valeur> + model.tagvalue.copyright=/* *##%\n Copyright (C) 2011 Code Lutin\n *##% */ + + # Force le chargement d'un attribut + # <nom paquetage>.<nom entité>.attribute.<nom attribut>.tagvalue.lazy=false + org.codelutin.Person.attribute.association.tagvalue.lazy=false + +Génération +---------- + +La génération des fichiers Topia se font par l'utilisation du plugin maven +Eugene_. Ce plugin est disponible sur le repository central. + +Configuration du plugin maven : + +:: + + <plugin> + <groupId>org.nuiton.eugene</groupId> + <artifactId>eugene-maven-plugin</artifactId> + <version>${eugenePluginVersion}</version> + <executions> + <execution> + <phase>process-sources</phase> + <!--Configuration of model generator--> + <configuration> + <inputs>zargo</inputs> + <fullPackagePath>org.nuiton.topiatest</fullPackagePath> + <defaultPackage>org.nuiton.topiatest</defaultPackage> + <extractedPackages>org.nuiton.topiatest</extractedPackages> + <templates> + org.nuiton.topia.generator.TopiaMetaTransformer + </templates> + </configuration> + <goals> + <goal>smart-generate</goal> + </goals> + </execution> + </executions> + <dependencies> + <dependency> + <groupId>org.nuiton.topia</groupId> + <artifactId>topia-persistence</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + </dependency> + </dependencies> + </plugin> + +Le plugin utilise Eugene_ avec les templates de génération de Topia, le +fichier argouml ou poséidon doit se trouver dans le répertoire +``src/main/xmi``. Les fichiers sont générés dans le répertoire +``target/generated-sources/java``. Il faut préciser au plugin les paquetages +à traiter avec le ``defaultPackage`` et ``extractedPackages``. + +Ajout dans des dépendances de Topia pour la compilation des fichiers générés : + +:: + + <dependency> + <groupId>org.nuiton.topia</groupId> + <artifactId>topia-persistence</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + </dependency> + +Pour une classe modélisée, nous retrouvons 6 fichiers : + * Une interface + * Une classe abstraite + * Une implantation + * Une configuration hibernate + * Un DAO abstrait + * Une implantation du DAO + +Une classe Helper est aussi générée, permettant l'accès à l'ensemble des DAO. + +Configuration +------------- + +Un fichier contenant les informations de connexion à la base de données et de +configuration de Topia doit être créé au niveau des ressources du projet. +Par convention, ce fichier est nommé ``TopiaContextImpl.properties``. + + +Utilisation +----------- + +Implantation des méthodes +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Si des méthodes ont été définies dans le modèle de données, il faut créer +l'implantation correspondante. Le paquetage doit porter le même nom que celui de +la génération. + + + +.. _Eugene: http://maven-site.nuiton.org/eugene/ Property changes on: trunk/topia-persistence/src/site/rst/user/howto.rst.vm ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Deleted: trunk/topia-persistence/src/site/rst/user/start.rst =================================================================== --- trunk/topia-persistence/src/site/rst/user/start.rst 2012-05-28 09:24:04 UTC (rev 2546) +++ trunk/topia-persistence/src/site/rst/user/start.rst 2012-05-28 10:44:08 UTC (rev 2547) @@ -1,246 +0,0 @@ -.. - -.. * #%L -.. * ToPIA :: Persistence -.. * -.. * $Id$ -.. * $HeadURL$ -.. * %% -.. * Copyright (C) 2004 - 2011 CodeLutin -.. * %% -.. * This program is free software: you can redistribute it and/or modify -.. * it under the terms of the GNU Lesser General Public License as -.. * published by the Free Software Foundation, either version 3 of the -.. * License, or (at your option) any later version. -.. * -.. * This program is distributed in the hope that it will be useful, -.. * but WITHOUT ANY WARRANTY; without even the implied warranty of -.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -.. * GNU General Lesser Public License for more details. -.. * -.. * You should have received a copy of the GNU General Lesser Public -.. * License along with this program. If not, see -.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. -.. * #L% -.. - -================================ -Démarrer un projet ToPIA - Maven -================================ - -Comment démarrer un projet à partir de rien. - -Créer le projet -=============== - -Pour commencer, il faut créer un projet maven en respectant les conventions -habituelles. Partons d'un projet maven vide : - -:: - - mvn archetype:generate -DgroupId=com.masociete -DartifactId=monapplication -DarchetypeArtifactId=maven-archetype-archetype - -Ajoutez un dossier ``src/main/xmi``, c'est ici que nous allons placer le modèle. - -:: - - topia-tutorial - ├── pom.xml - └── src - ├── main - │ ├── java - │ │ └── org - │ │ └── nuiton - │ │ └── topia - │ │ └── tutorial - │ │ └── library - │ ├── resources - │ │ ├── library-config.properties - │ │ └── log4j.properties - │ └── xmi - │ ├── library.properties - │ └── library.zargo - └── test - ├── java - └── resources - -Dans le pom, on ajoute ToPIA en dépendance, et on configure la génération : - -:: - - <properties> - <topiaVersion>2.5.4</topiaVersion> - <eugeneVersion>2.3.3</eugeneVersion> - </properties> - - <dependencies> - <dependency> - <groupId>org.nuiton.topia</groupId> - <artifactId>topia-persistence</artifactId> - <version>${topiaVersion}</version> - </dependency> - </dependencies> - - - <plugins> - - <!-- ... --> - - <plugin> - <groupId>org.nuiton.eugene</groupId> - <artifactId>maven-eugene-plugin</artifactId> - <version>${eugeneVersion}</version> - <configuration> - <inputs>zargo</inputs> - <resolver>org.nuiton.util.FasterCachedResourceResolver</resolver> - </configuration> - <executions> - <execution> - <id>generate-entities</id> - <phase>generate-sources</phase> - <configuration> - <!-- Corresponding to extracted package from zargo file --> - <fullPackagePath>org.nuiton.topia.tutorial.library</fullPackagePath> - <!-- DefaultPackage used for DAOHelper generation --> - <defaultPackage>org.nuiton.topia.tutorial.library.model</defaultPackage> - <templates> - org.nuiton.topia.generator.TopiaMetaTransformer - </templates> - </configuration> - <goals> - <goal>smart-generate</goal> - </goals> - </execution> - </executions> - </plugin> - - </plugins> - - -Créer le modèle -=============== - -Utiliser ArgoUML pour décrire le modèle ---------------------------------------- - -Avec ArgoUML, créez un nouveau modèle et enregistrez-le dans ``xmi``. Nous -allons créer un modèle simplifié pour une application de gestion de -bibliothèque. - -Nous avons modélisé les entités ``Book`` et ``Author`` avec les champs -appropriés. Faites attention à bien placer les entités dans le bon package, sinon -elles ne seront pas générées. Pour que ToPIA sache que ces classes décrivent -des entités qui ont vocation à être sauvées en base, il faut leur ajouter le -stéréotype ``entity``. - -N'oubliez pas de donner un nom et une version au modèle. - -Les données associées aux éléments du modèle --------------------------------------------- - -Le modeleur n'est pas suffisant pour décrire toute les subtilités du modèle. -Le modèle se voulant indépendant de la plate-forme cible, on ne peut y inclure -directement des notions spécifiques à ToPIA. C'est pourquoi nous allons pouvoir -ajouter ces informations spécifiques via le fichier ``library-config.properties``. - - -C'est prêt ! -============ - -Il suffit de construire l'application avec maven. - -:: - - mvn compile - - -La compilation va provoquer la phase de génération. Si on examine le contenu -de notre dossier target : - -:: - - topia-tutorial - ├── pom.xml - ├── src - │ ├── main - │ │ ├── java - │ │ │ └── org - │ │ │ └── nuiton - │ │ │ └── topia - │ │ │ └── tutorial - │ │ │ └── library - │ │ ├── resources - │ │ │ ├── library-config.properties - │ │ │ └── log4j.properties - │ │ └── xmi - │ │ ├── library.properties - │ │ └── library.zargo - │ └── test - │ ├── java - │ └── resources - └── target - ├── classes - │ ├── library-config.properties - │ ├── log4j.properties - │ └── org - │ └── nuiton - │ └── topia - │ └── tutorial - │ └── library - │ ├── LibraryConfig.class - │ └── model - │ ├── AuthorAbstract.class - │ ├── Author.class - │ ├── AuthorDAOAbstract.class - │ . - │ . - │ . - └── generated-sources - ├── annotations - ├── java - │ └── org - │ └── nuiton - │ └── topia - │ └── tutorial - │ └── library - │ └── model - │ ├── AuthorAbstract.java - │ ├── AuthorDAOAbstract.java - │ ├── AuthorDAOImpl.java - │ ├── AuthorDAO.java - │ ├── AuthorImpl.hbm.xml - │ ├── Author.java - │ ├── BookAbstract.java - │ ├── BookDAOAbstract.java - │ ├── BookDAOImpl.java - │ ├── BookDAO.java - │ ├── BookImpl.hbm.xml - │ ├── BookImpl.java - │ ├── Book.java - │ └── LibraryDAOHelper.java - ├── models - │ ├── library.objectmodel - │ └── library.properties - └── xmi - ├── library.properties - └── library.xmi - - - -On peut voir que ToPIA a généré ``LibraryDAOHelper`` qui va nous permettre de -récupérer les différents DAO et, pour chaque entité de notre modèle : - * Une interface - * Une classe abstraite, qui implémente déjà tout le contrat - * Une implantation (vide, seulement les constructeurs) - * Un DAO abstrait - * Une implantation du DAO - * Un fichier de mapping hibernate (*.hbm.xml) - -Comme il s'agit d'une phase de compilation, maven va ajouter tout le code généré aux -classpath le code généré sera compilé et lié en même temps que le reste de votre application. -Tous les fichiers .class se retrouveront dans target/classes, dans la suite du processus, on -ne distingue plus le code généré du code utilisateur. - -Par la suite, si vous changez le modèle, tout sera re-généré. À chaque ``clean`` -via maven, tout ce qui a été généré est effacé. Vous pouvez donc re-généré autant -de fois que nécessaire. Attention, Maven ne détecte pas le changement du modèle -si le fichier .zargo a été modifié : il faut donc faire un clean à chaque fois -afin de forcer le re-génération du modèle dans sa dernière version. Copied: trunk/topia-persistence/src/site/rst/user/start.rst.vm (from rev 2546, trunk/topia-persistence/src/site/rst/user/start.rst) =================================================================== --- trunk/topia-persistence/src/site/rst/user/start.rst.vm (rev 0) +++ trunk/topia-persistence/src/site/rst/user/start.rst.vm 2012-05-28 10:44:08 UTC (rev 2547) @@ -0,0 +1,246 @@ +.. - +.. * #%L +.. * ToPIA :: Persistence +.. * +.. * $Id$ +.. * $HeadURL$ +.. * %% +.. * Copyright (C) 2004 - 2011 CodeLutin +.. * %% +.. * This program is free software: you can redistribute it and/or modify +.. * it under the terms of the GNU Lesser General Public License as +.. * published by the Free Software Foundation, either version 3 of the +.. * License, or (at your option) any later version. +.. * +.. * This program is distributed in the hope that it will be useful, +.. * but WITHOUT ANY WARRANTY; without even the implied warranty of +.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.. * GNU General Lesser Public License for more details. +.. * +.. * You should have received a copy of the GNU General Lesser Public +.. * License along with this program. If not, see +.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. +.. * #L% +.. - +================================ +Démarrer un projet ToPIA - Maven +================================ + +Comment démarrer un projet à partir de rien. + +Créer le projet +=============== + +Pour commencer, il faut créer un projet maven en respectant les conventions +habituelles. Partons d'un projet maven vide : + +:: + + mvn archetype:generate -DgroupId=com.masociete -DartifactId=monapplication -DarchetypeArtifactId=maven-archetype-archetype + +Ajoutez un dossier ``src/main/xmi``, c'est ici que nous allons placer le modèle. + +:: + + topia-tutorial + ├── pom.xml + └── src + ├── main + │ ├── java + │ │ └── org + │ │ └── nuiton + │ │ └── topia + │ │ └── tutorial + │ │ └── library + │ ├── resources + │ │ ├── library-config.properties + │ │ └── log4j.properties + │ └── xmi + │ ├── library.properties + │ └── library.zargo + └── test + ├── java + └── resources + +Dans le pom, on ajoute ToPIA en dépendance, et on configure la génération : + +:: + + <properties> + <topiaVersion>${project.version}</topiaVersion> + <eugeneVersion>${eugenePluginVersion}</eugeneVersion> + </properties> + + <dependencies> + <dependency> + <groupId>org.nuiton.topia</groupId> + <artifactId>topia-persistence</artifactId> + <version>${topiaVersion}</version> + </dependency> + </dependencies> + + + <plugins> + + <!-- ... --> + + <plugin> + <groupId>org.nuiton.eugene</groupId> + <artifactId>eugene-maven-plugin</artifactId> + <version>${eugeneVersion}</version> + <configuration> + <inputs>zargo</inputs> + <resolver>org.nuiton.util.FasterCachedResourceResolver</resolver> + </configuration> + <executions> + <execution> + <id>generate-entities</id> + <phase>generate-sources</phase> + <configuration> + <!-- Corresponding to extracted package from zargo file --> + <fullPackagePath>org.nuiton.topia.tutorial.library</fullPackagePath> + <!-- DefaultPackage used for DAOHelper generation --> + <defaultPackage>org.nuiton.topia.tutorial.library.model</defaultPackage> + <templates> + org.nuiton.topia.generator.TopiaMetaTransformer + </templates> + </configuration> + <goals> + <goal>smart-generate</goal> + </goals> + </execution> + </executions> + </plugin> + + </plugins> + + +Créer le modèle +=============== + +Utiliser ArgoUML pour décrire le modèle +--------------------------------------- + +Avec ArgoUML, créez un nouveau modèle et enregistrez-le dans ``xmi``. Nous +allons créer un modèle simplifié pour une application de gestion de +bibliothèque. + +Nous avons modélisé les entités ``Book`` et ``Author`` avec les champs +appropriés. Faites attention à bien placer les entités dans le bon package, sinon +elles ne seront pas générées. Pour que ToPIA sache que ces classes décrivent +des entités qui ont vocation à être sauvées en base, il faut leur ajouter le +stéréotype ``entity``. + +N'oubliez pas de donner un nom et une version au modèle. + +Les données associées aux éléments du modèle +-------------------------------------------- + +Le modeleur n'est pas suffisant pour décrire toute les subtilités du modèle. +Le modèle se voulant indépendant de la plate-forme cible, on ne peut y inclure +directement des notions spécifiques à ToPIA. C'est pourquoi nous allons pouvoir +ajouter ces informations spécifiques via le fichier ``library-config.properties``. + + +C'est prêt ! +============ + +Il suffit de construire l'application avec maven. + +:: + + mvn compile + + +La compilation va provoquer la phase de génération. Si on examine le contenu +de notre dossier target : + +:: + + topia-tutorial + ├── pom.xml + ├── src + │ ├── main + │ │ ├── java + │ │ │ └── org + │ │ │ └── nuiton + │ │ │ └── topia + │ │ │ └── tutorial + │ │ │ └── library + │ │ ├── resources + │ │ │ ├── library-config.properties + │ │ │ └── log4j.properties + │ │ └── xmi + │ │ ├── library.properties + │ │ └── library.zargo + │ └── test + │ ├── java + │ └── resources + └── target + ├── classes + │ ├── library-config.properties + │ ├── log4j.properties + │ └── org + │ └── nuiton + │ └── topia + │ └── tutorial + │ └── library + │ ├── LibraryConfig.class + │ └── model + │ ├── AuthorAbstract.class + │ ├── Author.class + │ ├── AuthorDAOAbstract.class + │ . + │ . + │ . + └── generated-sources + ├── annotations + ├── java + │ └── org + │ └── nuiton + │ └── topia + │ └── tutorial + │ └── library + │ └── model + │ ├── AuthorAbstract.java + │ ├── AuthorDAOAbstract.java + │ ├── AuthorDAOImpl.java + │ ├── AuthorDAO.java + │ ├── AuthorImpl.hbm.xml + │ ├── Author.java + │ ├── BookAbstract.java + │ ├── BookDAOAbstract.java + │ ├── BookDAOImpl.java + │ ├── BookDAO.java + │ ├── BookImpl.hbm.xml + │ ├── BookImpl.java + │ ├── Book.java + │ └── LibraryDAOHelper.java + ├── models + │ ├── library.objectmodel + │ └── library.properties + └── xmi + ├── library.properties + └── library.xmi + + + +On peut voir que ToPIA a généré ``LibraryDAOHelper`` qui va nous permettre de +récupérer les différents DAO et, pour chaque entité de notre modèle : + * Une interface + * Une classe abstraite, qui implémente déjà tout le contrat + * Une implantation (vide, seulement les constructeurs) + * Un DAO abstrait + * Une implantation du DAO + * Un fichier de mapping hibernate (*.hbm.xml) + +Comme il s'agit d'une phase de compilation, maven va ajouter tout le code généré aux +classpath le code généré sera compilé et lié en même temps que le reste de votre application. +Tous les fichiers .class se retrouveront dans target/classes, dans la suite du processus, on +ne distingue plus le code généré du code utilisateur. + +Par la suite, si vous changez le modèle, tout sera re-généré. À chaque ``clean`` +via maven, tout ce qui a été généré est effacé. Vous pouvez donc re-généré autant +de fois que nécessaire. Attention, Maven ne détecte pas le changement du modèle +si le fichier .zargo a été modifié : il faut donc faire un clean à chaque fois +afin de forcer le re-génération du modèle dans sa dernière version. Property changes on: trunk/topia-persistence/src/site/rst/user/start.rst.vm ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/topia-persistence-tck/pom.xml =================================================================== --- trunk/topia-persistence-tck/pom.xml 2012-05-28 09:24:04 UTC (rev 2546) +++ trunk/topia-persistence-tck/pom.xml 2012-05-28 10:44:08 UTC (rev 2547) @@ -87,7 +87,7 @@ <plugin> <groupId>org.nuiton.eugene</groupId> - <artifactId>maven-eugene-plugin</artifactId> + <artifactId>eugene-maven-plugin</artifactId> <executions> <execution> <id>generate-objectmodel</id> Modified: trunk/topia-service-history/pom.xml =================================================================== --- trunk/topia-service-history/pom.xml 2012-05-28 09:24:04 UTC (rev 2546) +++ trunk/topia-service-history/pom.xml 2012-05-28 10:44:08 UTC (rev 2547) @@ -92,7 +92,7 @@ <plugin> <groupId>org.nuiton.eugene</groupId> - <artifactId>maven-eugene-plugin</artifactId> + <artifactId>eugene-maven-plugin</artifactId> <executions> <execution> <phase>generate-sources</phase> Modified: trunk/topia-service-security/pom.xml =================================================================== --- trunk/topia-service-security/pom.xml 2012-05-28 09:24:04 UTC (rev 2546) +++ trunk/topia-service-security/pom.xml 2012-05-28 10:44:08 UTC (rev 2547) @@ -132,7 +132,7 @@ <plugin> <groupId>org.nuiton.eugene</groupId> - <artifactId>maven-eugene-plugin</artifactId> + <artifactId>eugene-maven-plugin</artifactId> <executions> <execution> <id>generate-sources</id> Modified: trunk/topia-soa/pom.xml =================================================================== --- trunk/topia-soa/pom.xml 2012-05-28 09:24:04 UTC (rev 2546) +++ trunk/topia-soa/pom.xml 2012-05-28 10:44:08 UTC (rev 2547) @@ -119,7 +119,7 @@ <plugin> <groupId>org.nuiton.eugene</groupId> - <artifactId>maven-eugene-plugin</artifactId> + <artifactId>eugene-maven-plugin</artifactId> <executions> <execution> <id>generate-test</id> Modified: trunk/topia-tutorial/pom.xml =================================================================== --- trunk/topia-tutorial/pom.xml 2012-05-28 09:24:04 UTC (rev 2546) +++ trunk/topia-tutorial/pom.xml 2012-05-28 10:44:08 UTC (rev 2547) @@ -108,7 +108,7 @@ <plugin> <groupId>org.nuiton.eugene</groupId> - <artifactId>maven-eugene-plugin</artifactId> + <artifactId>eugene-maven-plugin</artifactId> <version>${eugeneVersion}</version> <configuration> <inputs>zargo</inputs>
participants (1)
-
tchemit@users.nuiton.org