<?xml version="1.0" encoding="UTF-8"?>
<!--
 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="hellojpa" default="run">
    <property name="example" value="reversemapping"/>
    <import file="../build.xml"/>

    <!-- when we clean, also remove all of the auto-generated files -->
    <target name="pre-clean" description="Pre-clean phase">
        <delete includeemptydirs="true">
            <fileset dir="${basedir}">
                <include name="orm.xml"/>
            </fileset>
            <fileset dir="${basedir}">
                <include name="*.java"/>
                <include name="*.java~"/>
                <contains text="Auto-generated by:"/>
            </fileset>
        </delete>
    </target>

    <!--
        Before we compile and run, we first initialize a
        database and run the reverse mapping tool on it
    -->
    <target name="pre-compile" depends="initialize-db,reverse-map-schema"
        description="Pre-compilation phase">
    </target>

    <target name="initialize-db" unless="initialize-db-skip"
        description="Drop then re-create the database">
        <!-- first make sure the database is empty -->
        <sql src="schema/dropdb.sql"
            driver="${dbdriver}" url="${dburl}"
            userid="${dbuser}" password="${dbpass}"
            onerror="continue" classpathref="classpath"/>

        <!-- build the database -->
        <sql
            driver="${dbdriver}" url="${dburl}"
            userid="${dbuser}" password="${dbpass}" classpathref="classpath">
            <transaction src="schema/ToursDB_schema.sql"/>
            <transaction src="schema/loadCOUNTRIES.sql"/>
            <transaction src="schema/loadCITIES.sql"/>
            <transaction src="schema/loadAIRLINES.sql"/>
            <transaction src="schema/loadFLIGHTS1.sql"/>
            <transaction src="schema/loadFLIGHTS2.sql"/>
            <transaction src="schema/loadFLIGHTAVAILABILITY1.sql"/>
            <transaction src="schema/loadFLIGHTAVAILABILITY2.sql"/>
        </sql>
    </target>

    <target name="reverse-map-schema" depends="initialize-db"
        unless="reverse-map-schema-skip"
        description="Generate java files from the database schema">
        <!-- now run the tool to generate java files from the db schema -->
        <taskdef name="reversemappingtool" classpathref="classpath"
            classname="org.apache.openjpa.jdbc.ant.ReverseMappingToolTask"/>
        <reversemappingtool package="reversemapping" directory="${basedir}"
            innerIdentityClasses="true"
            customizerProperties="${basedir}/reverse-customizer.properties">
            <config connectiondrivername="${dbdriver}" connectionurl="${dburl}"
                connectionusername="${dbuser}" connectionpassword="${dbpass}"/>
            <codeformat tabSpaces="4" spaceBeforeParen="false"
                braceOnSameLine="true"/>
        </reversemappingtool>

        <!--
            the reverse mapping tool always outputs the orm.xml file to
            the current directory; move it to the base directory in case
            we are executing this build file from a different directory.
        -->
        <move file="${user.dir}/orm.xml"
            tofile="${basedir}/orm.xml" failonerror="false"/>
    </target>
</project>
