<?xml version="1.0"?>

<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License.  You may obtain a copy of the License at
  ~
  ~    http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied.  See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<project name="mvn-hibernate" default="hibernate">
    <import file="../build/ant-common.xml" />
    <import file="../build/ant-library.xml" />
    <import file="../build/ant-xdoclet.xml" />

    <!-- This is required since basedir may get changed during an earlier build cycle. Not sure why. -->
    <property name="src.databases" value="${basedir}/src/hibernate"/>
    <property name="build.classes" value="${basedir}/target/classes"/>
    <property name="build.ddl" value="${build.classes}/ddl"/>
    <property name="hibernate.dir" value="${basedir}/../buildlib/hibernate-2.1"/>

    <target name="hibernate">
        <taskdef name="hibernatedoclet" classname="xdoclet.modules.hibernate.HibernateDocletTask" classpathref="xdoclet-cpath"/>
        <hibernatedoclet destdir="${build.classes}" excludedtags="@version,@author,@todo" force="false" mergedir="${build.classes}" verbose="false">
        <hibernate version="2.0"/>
            <fileset dir="${src.java}" includes="${src.hibernate.mask}"/>
        </hibernatedoclet>

        <taskdef name="schemaexport" classname="net.sf.hibernate.tool.hbm2ddl.SchemaExportTask">
            <classpath>
                <fileset dir="${hibernate.dir}" includes="hibernate2.jar"/>
                <fileset dir="${hibernate.dir}/lib" includes="*.jar"/>
                <path refid="cpath"/>
                <fileset dir="../buildlib/commons-logging-1.0.5" includes="commons-logging-1.0.5.jar"/>
                <fileset dir="../buildlib/commons-collections-3.1" includes="*.jar"/>
                <pathelement location="${lib.log4j}"/>
                <pathelement location="${build.classes}"/>
            </classpath>
        </taskdef>
        <mkdir dir="${build.ddl}"/>
        <foreach list="${databases}" delimiter="," trim="true" param="db" target="export" inheritAll="yes"/>
    </target>

    <target name="export">
        <schemaexport properties="${src.databases}/${db}.properties" quiet="yes" text="yes" delimiter=";" output="${build.ddl}/${db}.sql">
            <fileset dir="${build.classes}"><include name="**/*.hbm.xml"/><exclude name="**/HMessageExchangeProperty.hbm.xml"/></fileset>
        </schemaexport>
    </target>
</project>
