we'll generate instantly an Openxava app.
The interesting part of this demo is the enrichment of the model, it is described Riga demo 2 (The main complexity comes by having 2 tables (language and user) linked by 2 many-to-many).
Actions
There are four simple actions make it happened:- Drop TRANXY-OPENXAVA.xml in /mywork/config and run: model-generation.cmd/sh TRANXY-OPENXAVA.xml 
- In /output/OPENXAVA set the 2 environment variables 
- set OX_HOME=../openxava-4.4.1 (export on unix)
- set MP_HOME=../minuteProject-0.8.1 (export on unix)
- execute >build-tranxy.cmd/sh
And that's it!
Last action will 
- create an Openxava project
- build it (portlet included ready for Liferay)
- start Openxava embedded tomcat server
- add connection datasource
- deploy the build application on tomcat
- start a browser connection at http://localhost:8080/tranxy/xava/homeMenu.jsp where the menu is.
The application works on an empty database, you can use the Openxava-Minuteproject-generated-app to
populate it...
Enjoy!
Prerequisits
MinuteProject installed 
Openxava installed 
Ant installed
Model Tranxy (script) installed on an up-and-running Mysql server
Java 1.6
Java 1.6
Configuration
TRANXY-OPENXAVA.xml
<!DOCTYPE root>
<generator-config xmlns="http://minuteproject.sf.net/xsd/mp-config" 
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
xs:noNamespaceSchemaLocation="../config/mp-config.xsd">
    <configuration>
        <conventions>
            <target-convention type="enable-updatable-code-feature" />
        </conventions>
        <model name="tranxy" version="1.0" package-root="net.sf.mp.demo">
            <data-model>
                <driver name="mysql" version="5.1.16" groupId="mysql"
                    artifactId="mysql-connector-java"></driver>
                <dataSource>
                    <driverClassName>org.gjt.mm.mysql.Driver</driverClassName>
                    <url>jdbc:mysql://127.0.0.1:3306/tranxy</url>
                    <username>root</username>
                    <password>mysql</password>
                </dataSource>
                <primaryKeyPolicy oneGlobal="false" >
                    <primaryKeyPolicyPattern name="autoincrementPattern"></primaryKeyPolicyPattern>
                </primaryKeyPolicy>
            </data-model>
            <business-model>
                <business-package default="tranxy">
                    <condition type="package" startsWith="trans" result="translation"></condition>
                </business-package>
            <enrichment>
             <conventions>
              <!-- manipulate the structure and entities BEFORE manipulating the 
               entities -->
              <column-naming-convention type="apply-fix-primary-key-column-name-when-no-ambiguity" 
                      default-value="ID"/>  
              <column-naming-convention type="apply-strip-column-name-suffix"
               pattern-to-strip="ID" />
              <reference-naming-convention
               type="apply-referenced-alias-when-no-ambiguity" is-to-plurialize="true" />
              <reference-naming-convention type="apply-many-to-many-aliasing" is-to-plurialize="true"/>
             </conventions>
                  <entity name="language_x_translator">
                      <field name="language_id" linkReferenceAlias="translating_language" linkToTargetEntity="LANGUAGE"/>
                      <field name="user_id" linkReferenceAlias="translator" linkToTargetEntity="USER"/>
                  </entity>
                  <entity name="LANGUAGE_X_SPEAKER">
                      <field name="LANGUAGE_ID" linkToTargetEntity="LANGUAGE"
                          linkToTargetField="IDLANGUAGE" linkReferenceAlias="spoken_language" />
                      <field name="user_id" linkReferenceAlias="speaker" linkToTargetEntity="USER"/>
                  </entity>
                  <entity name="APPLICATION" alias="registered application">
                      <field name="TYPE" alias="obedience">
                          <property tag="checkconstraint" alias="application_type">
                              <property name="OPENSOURCE"/>
                              <property name="COPYRIGHT" />
                          </property>
                      </field>
                  </entity>
                  <entity name="LANGUAGE" content-type="reference-data"/>
            </enrichment>
            </business-model>
        </model>
        <targets>
        
            <target refname="OpenXava" 
               name="OpenXava" 
               fileName="mp-template-config-openxava-last-features.xml" 
               outputdir-root="../../dev/latvianjug/output/OPENXAVA"
               templatedir-root="../../template/framework/openxava">
            </target> 
            <target refname="JPA2-LIB" 
               fileName="mp-template-config-JPA2-LIB.xml" 
               templatedir-root="../../template/framework/jpa">
            </target>
            <target refname="CACHE-LIB" 
               fileName="mp-template-config-CACHE-LIB.xml" 
               templatedir-root="../../template/framework/cache">
            </target>
            <target refname="LIB" 
               fileName="mp-template-config-bsla-LIB-features.xml" 
               templatedir-root="../../template/framework/bsla">
            </target>
        </targets>
    </configuration>
</generator-config>



 
No comments:
Post a Comment