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