Le Mon, 16 Aug 2010 10:07:47 +0200, Brendan Le Ny <bleny@codelutin.com> a écrit :
transform(Model model) {
WikittyPurifierTransformer purifier = new WikittyPurifierTransformer(); Model purifiedModel = purifier.transform(model);
WikittyContractGenerator contractGen = new WikittyContractGenerator();
WikittyAbstractGenerator abstractGen = new WikittyContractGenerator();
Model contracts = contractGen.transform(purifiedModel); Model abstracts = abstractGen.transform(purifiedModel);
// enfin, pour générer le Java un truc du genre ObjectModelToJava toJava = new ObjectModelToJava(destDir); toJava.transform(contracts); toJava.transform(abstracts);
}
Quelque chose du genre permet de chaîner les transformeurs comme on veut et de répondre à l'essentiel des besoins.
Cela me semble très sympa comme idée d'utiliser le MetaTransformer de cette facon. Je n'y avais pas vraiment penser au début, mais cela semble plus lisible pour faire du chainage.
On pourrait également imaginer les choses suivantes, afin de faire de la transformation à partir du texte généré (XML ?) et chaîner les méta-transformers
toJava.transform(contracts) par exemple retourne une List<GeneratedFile>, les éléments de ces listes permettent d'accéder au nom du fichier générer, au contenu. Éventuellement, on pourrait ne pas spécifier de destDir à la construction et récupérer les GeneratedFile pour les écrire soi-même et les envoyer vers un reader. Ainsi un peu chaîner des transformeurs, et dans des situations exceptionnelles faire passer le chaînage par du texte, par exemple, pour réutiliser un métatransformer qui attend un objectmodel en sortie, je peux sortir un objectmodel et chaîner les méta-transformeurs
Ha ouais pour continuer après la fin de la génération des Writer. Pourquoi pas, mais je ne vois pas encore bien le cas d'utilisation.
Réflexions et commentaires bienvenus, je crois que c'est en gros ce qu'on a déjà dit avec Tony mais ce serait bien que d'autres se prononcent vu qu'il s'agit quand même d'un aspect important de Eugene en général et des transformeurs, en particulier.
Le Meta-Transformeur qui controle le chainage de différent Transformer me semble une bonne idée, c'est vrai que ce point semblait délicat sans ce pseudo controleur. -- Florian Desbois <fdesbois@codelutin.com> SSLL Code Lutin http://www.codelutin.com tel : 02 40 50 29 28 Réseau Libre-Entreprise