<?xml version="1.0"?>
<!-- $Id: build.xml,v 1.24 2007/01/09 03:54:35 winebarrel Exp $ -->
<project name="hsqldb" default="run.server" basedir=".">
        <property name="sample.dir" value="${basedir}/.." />
        <property name="sample.src" value="${sample.dir}/src" />
        <property name="project.dir" value="${sample.dir}/.." />
        <property name="hsqldb.data" value="${basedir}/data" />
        <property name="hsqldb.lib" value="${basedir}/lib" />
        <property name="hsqldb.sql" value="${basedir}/sql" />

        <property name="jdbc.driver" value="org.hsqldb.jdbcDriver" />

        <!-- Database settings -->
        <property name="rubbish-db.url" value="jdbc:hsqldb:hsql://localhost" />
        <property name="rubbish-db.userid" value="sa" />
        <property name="rubbish-db.password" value="" />
        <property name="rubbish-db.schema" value="PUBLIC" />
        <property name="rubbish-db.classpath" value="${hsqldb.lib}/hsqldb.jar" />

        <!-- ======================================================== -->

        <taskdef name="vogen" classname="rubbish.db.gen.ant.VOGenTask">
                <classpath>
                        <fileset dir="${project.dir}" includes="target/rubbish-db-*.jar" />
                </classpath>
        </taskdef>

        <target name="create.vo">
                <!-- create JavaBean -->
                <vogen destdir="${sample.src}" package="sample.hsqldb.bean">
                        <!--
                        <type sql="INTEGER" java="java.lang.Long" />
                        <include table="BOOK" />
                        <include table="PUBLISHER" />
                        -->
                </vogen>
                <!-- create JavaBean(Interface) -->
                <vogen type="interface" destdir="${sample.src}" package="sample.hsqldb.i_f.bean">
                        <!--
                        <type sql="INTEGER" java="java.lang.Long" />
                        <include table="BOOK" />
                        <include table="PUBLISHER" />
                        -->
                </vogen>
                <!-- create ActiveRecord -->
                <vogen type="activerecord" destdir="${sample.src}" package="sample.activerecord.bean">
                        <!--
                        <type sql="INTEGER" java="java.lang.Long" />
                        <include table="BOOK" />
                        <include table="PUBLISHER" />
                        -->
                        <!-- Template Extension -->
                        <extension>
                                <![CDATA[
                                public void additionFunc() {
                                        /* class name */
                                        // ${classname}
                                        // ${classname.lowercase}
                                        // ${classname.uppercase}
                                        // ${classname.capitalize}

                                        /* ant property */
                                        // basedir: ${basedir}
                                        // sample.src: ${sample.src}

                                        Database dbh = DatabaseManager.getDatabase();
                                        // processing...
                                }
                        ]]>
                        </extension>

                        <!-- Template Extension by property -->
                        <propextension>
                                <![CDATA[
                                public void additionFunc${propname.capitalize}() {
                                        /* class name */
                                        // classname: ${classname}
                                        // classname.lowercase: ${classname.lowercase}
                                        // classname.upsercase: ${classname.uppercase}
                                        // classname.capitalize: ${classname.capitalize}

                                        /* property name */
                                        // propname: ${propname}
                                        // propname.lowercase: ${propname.lowercase}
                                        // propname.uppercase: ${propname.uppercase}
                                        // propname.capitalize: ${propname.capitalize}

                                        /* property type */
                                        // proptype: ${proptype}

                                        /* ant property */
                                        // basedir: ${basedir}
                                        // sample.src: ${sample.src}

                                        // processing...
                                }
                                ]]>
                        </propextension>
                </vogen>
        </target>

        <!-- ======================================================== -->

        <target name="run.server">
                <java dir="${hsqldb.data}" classname="org.hsqldb.Server" fork="true">
                        <classpath path="${rubbish-db.classpath}" />
                </java>
        </target>

        <!-- ======================================================== -->

        <target name="stop.server">
                <java dir="${hsqldb.data}" classname="org.hsqldb.util.ShutdownServer" fork="true">
                        <classpath path="${rubbish-db.classpath}" />
                </java>
        </target>

        <!-- ======================================================== -->

        <target name="create.data">
                <sql driver="${jdbc.driver}" url="${rubbish-db.url}" userid="${rubbish-db.userid}" password="${rubbish-db.password}" encoding="MS932">
                        <classpath path="${rubbish-db.classpath}" />
                        <transaction src="${hsqldb.sql}/CREATE_TABLES.sql" />
                        <transaction src="${hsqldb.sql}/INSERT_SAMPLE.sql" />
                </sql>
        </target>

</project>