I. Introduction▲
Jaxio, Celerio et SpringFuse▲

Jaxio est une société française qui s'est spécialisé dans la génération de code.
Le produit principal s'appelle Celerio. Sa particuliarité est le

II. Quick start avec SpringFuse▲
Pré-requis▲
Pour pouvoir générer un projet avec SpringFuse, il est nécessaire de remplir quelques conditions :
- Un JDK 5 (ou plus) pour le développement ET le déploiement
- Une installation Maven 2.0.9 sur le poste de développement
- Une base de données
- Un compte Springfuse, gratuit jusqu'à 10 tables
Créer un schéma▲
Afin de pouvoir générer un projet avec SpringFuse, il est nécessaire d'avoir le modèle sur lequel SpringFuse va se baser.
Voici le schéma qui sera utilisé dans notre exemple :
CREATE TABLE `springfuse`.`account` (
`username` varchar(30) NOT NULL,
`password` varchar(40) NOT NULL,
PRIMARY KEY (`username`)
)
CREATE TABLE `springfuse`.`auteur` (
`auteur_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`first_name` varchar(45) NOT NULL,
`last_name` varchar(45) NOT NULL,
`picture_content_type` varchar(255) DEFAULT NULL,
`picture_size` int(10) unsigned DEFAULT NULL,
`picture_file_name` varchar(255) DEFAULT NULL,
`picture_binary` blob,
PRIMARY KEY (`auteur_id`)
)
CREATE TABLE `springfuse`.`livre` (
`livre_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`titre` varchar(45) NOT NULL,
`sous_titre` varchar(45) DEFAULT NULL,
`isbn` varchar(13) NOT NULL,
`langue` enum('FR','EN') NOT NULL DEFAULT 'FR',
`account_id` varchar(45) NOT NULL,
PRIMARY KEY (`livre_id`),
KEY `account_ref` (`account_id`),
CONSTRAINT `account_ref` FOREIGN KEY (`account_id`) REFERENCES `account` (`username`)
)
CREATE TABLE `springfuse`.`livre_auteur` (
`auteur_ref` int(10) unsigned NOT NULL,
`livre_ref` int(10) unsigned NOT NULL,
PRIMARY KEY (`auteur_ref`),
KEY `livre_ref` (`livre_ref`),
CONSTRAINT `auteur_ref` FOREIGN KEY (`auteur_ref`) REFERENCES `auteur` (`auteur_id`),
CONSTRAINT `livre_ref` FOREIGN KEY (`livre_ref`) REFERENCES `livre` (`livre_id`)
)
CREATE TABLE `springfuse`.`role` (
`role_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`role_name` varchar(45) NOT NULL,
PRIMARY KEY (`role_id`)
)
CREATE TABLE `springfuse`.`role_account` (
`account` varchar(40) NOT NULL,
`role` int(10) unsigned NOT NULL,
PRIMARY KEY (`account`,`role`) USING BTREE,
KEY `FK_role_account_2` (`role`),
CONSTRAINT `FK_role_account_1` FOREIGN KEY (`account`) REFERENCES `account` (`username`),
CONSTRAINT `FK_role_account_2` FOREIGN KEY (`role`) REFERENCES `role` (`role_id`)
)Extraire les métadonnées▲
Bien qu'il travaille effectivement sur le modèle SQL, le générateur de SpringFuse ne travaille pas directement sur le code SQL, mais sur un fichier propriétaire représentant cette base de données.
Pour cela, SpringFuse propose un projet Maven (Télécharger le pom) qui va permettre de créer ce fichier.
Avant de lancer le script, il est cependant nécessaire de modifier quelques variables spécifiques à l'environnement.
<!-- ====== PLEASE EDIT THESE 4 VALUES ======== -->
<database.name>springfuse</database.name>
<database.host>localhost</database.host>
<database.user>springfuse</database.user>
<database.password>springfuse</database.password>
<!-- =========================================== -->- database.name : le nom du schema
- database.host : le nom de la machine sur lequel se trouve la base de données
- database.user : le nom de l'utilisateur
- database.password : le mot de passe de celui-ci
Une fois cette tache réalisée, une simple commande permet de lancer l'introspection :
mvn -Pmysql initializeLe paramètre -Pmysql active le profile Mysql du POM, qui est le moteur utilisé dans notre cas. D'autre profiles existent : postgresql, oracle, h2, hsql, derby.
Le résultante est un fichier data-model.springfuse.
Générer le projet sur SpringFuse▲
Ce fichier sera utilisé parSpringFuse afin de générer un nouveau projet.
Pour cela, certains informations doivent être fournies :
- Project name : Le nom du projet, doit être unique
- Java Package : Le nom du package racine du projet, dans lequel tout les sous package seront crées
- data-model.springfuse : le fichier précédemment généré
- Spring fuse's generator version : 2.8.15 pour un projet basé sur JPA, 2.7.4 pour un projet basé sur Hibernate
- Comment : TODO
Une fois la génération terminée, une page récapitule le contenu du projet :
Un email de notification est également envoyé à la fin de la génération.
Le projet est disponible sous la forme d'une archive zip téléchargeable.
Tester le projet généré▲
Un projet généré est géré par Maven, et est préconfiguré avec un lot de plugin. Parmi ceux-ci, le plugin Jetty permet de tester visualiser le résultat, sans avoir serveur ou IDE complémentaire.
Tout d'abord, il est nécessaire de modifier une fois encore le fichier POM pour spécifier les informations de connexion à la base de données :
<!-- ====== PLEASE EDIT THESE 4 VALUES ======== -->
<!-- Note: during development using the same value for your login, password,
database name and project name is really convenient -->
<database.name>springfuse</database.name>
<database.host>localhost</database.host>
<database.user>springfuse</database.user>
<database.password>springfuse</database.password>Pour lancer le jetty :
mvn -PmysqlPar défaut, le plugin Jetty écoute sur le port 8080, et le projet est visible sur l'adresse http://localhost:8080/
Afin de continuer et de voir la page d'administration, il est nécessaire de s'authentifier.
Nous le verrons plus loin en détail, mais si aucune table d'utilisateurs n'est trouvé par SpringFuse, celui-ci génère un Mock d'authentification avec deux utilisateurs en dur : admin/admin et user/user.
Une fois connecté comme administrateur, un menu propose divers options












