3 Replies Latest reply on Jul 17, 2008 7:40 PM by Francisco Jose Peredo Noguez

    Lauch Files: Real control of Seam-Gen

    Francisco Jose Peredo Noguez Master


      We (in my project) have heavily modified and enhanced the functionality of seam-gen, but I think we are hitting a hard limit: we can not say do not generate the EntityEdit.xhtml because that is read-only. No matter what we do, all the *.ftl templates get called for all the our entites.

      We use JBossTools 2.1.1 and store our seam-gen configurations in Eclipse .launch files (and call them using the Code Generation Launcher).

      The initial from database to entities configuration is in a file named:projectname-generate-entities.launch, after that I create a file named: projectname-generate-pages.launch that creates  from the entities to the pages .

      The difference is that projectname-generate-entities.launch only uses 1 exporter, the Domain code exporter (extract of projectname-generate-entities.launch):

              <booleanAttribute key="org.hibernate.tools.exporters.hbmtemplate0"
                      value="true" />
                      value="org.hibernate.tools.hbm2java" />
                      <mapEntry key="template_path"
                              value="\seam-templates\hibernate-tools" />

      On the other hand projectname-generate-pages.launch is much larger (here is only the part that generates the EntityEdit.xhtml:

              <mapEntry key="outputdir" value="/applicationName/WebContent/" />
              <mapEntry key="for_each" value="entity" />
              <mapEntry key="template_name" value="view/edit.xhtml.ftl" />
              <mapEntry key="file_pattern" value="{class-name}Edit.xhtml" />
              <mapEntry key="hibernatetool.util.toolclass"
                  value="org.hibernate.eclipse.launch.SeamUtil" />

      As you can see, the  exporter configuration for EntityEdit.xhtml is very different, and one of themain differences is that it has a :

      <mapEntry key="for_each" value="entity" />

      now, i would like to extend this mechanism to make it possible to generate the EntityEdit.xhtml only for... for example non-readonly entities (or any other criteria that I choose):

      <mapEntry key="for_each" value="readonly-entity" />

      (And then create my own custom @ReadOnlyEntity annotation to control generation)

      My plan to achieve that effect was to create my own exporter, to do that, I need to configure a Generic Hibernate metamodel exporter and create my own exporter class... but here is my problem... the docs only explain how to set the exporter class for ant:

       exporterclass="Exporter classname"

      They do not explain how to configure the exporterclass in a eclipse *.launch file (or if is even possible)...

      How can I do that?