<!--
Copyright 2004 The Apache Software Foundation

Licensed 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="SchemaEnum" default="build">

    <property environment="env"/>

    <path id="SchemaEnum.path">
        <path refid="xmlbeans.path"/>
        <fileset dir="build/lib" includes="*.jar"/>
        <pathelement path="build/classes"/>
    </path>

    <target name="init">
        <property name="xmlbeans.home" value="${env.XMLBEANS_HOME}"/>
        <echo message="xmlbeans.home: ${xmlbeans.home}"/>

        <!-- check for xbean.jar from binary distribution -->
        <available
            property="xmlbeans.lib"
            value="${xmlbeans.home}/lib"
            file="${xmlbeans.home}/lib/xbean.jar" />

        <!-- check for xbean.jar compiled from source -->
        <available
            property="xmlbeans.lib"
            value="${xmlbeans.home}/build/lib"
            file="${xmlbeans.home}/build/lib/xbean.jar" />

        <fail message="Set XMLBEANS_HOME in your enviornment."
            unless="xmlbeans.lib"/>

        <echo message="xmlbeans.lib: ${xmlbeans.lib}"/>
        <path id="xmlbeans.path">
            <fileset dir="${xmlbeans.lib}" includes="*.jar"/>
        </path>

        <taskdef name="xmlbean"
            classname="org.apache.xmlbeans.impl.tool.XMLBean"
            classpathref="xmlbeans.path"/>
    </target>

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

    <target name="clean">
        <delete dir="build"/>
    </target>

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

    <target name="build" depends="init,schemas.jar,SchemaEnum.classes">
    </target>

    <target name="schemas.check">
        <uptodate property="schemas.notRequired"
            targetfile="build/lib/schemas.jar">
            <srcfiles dir="schemas" includes="**/*.xsd"/>
        </uptodate>
    </target>

    <target name="schemas.jar" depends="init,schemas.check"
        unless="schemas.notRequired">
        <mkdir dir="build/lib"/>

        <xmlbean schema="schemas"
            destfile="build/lib/schemas.jar"
            srcgendir="build/src"
            classpathref="xmlbeans.path"
            debug="on"
            />
    </target>

    <target name="SchemaEnum.classes" depends="init">
        <mkdir dir="build/classes"/>

        <javac srcdir="src"
            destdir="build/classes"
            classpathref="SchemaEnum.path"
            debug="on"
            source="1.8"
            />
    </target>

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

    <target name="run" depends="init,build">
        <echo message="============================== running SchemaEnum"/>
        <java
            classname="org.apache.xmlbeans.samples.enumeration.SchemaEnum"
            classpathref="SchemaEnum.path"
            fork="true">
            <arg line="xml/PurchaseOrder.xml"/>
        </java>
    </target>

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

    <target name="test" depends="init,build">
        <echo message="============================== testing SchemaEnum"/>
        <java
            classname="org.apache.xmlbeans.samples.enumeration.SchemaEnumTest"
            classpathref="SchemaEnum.path"
            fork="true">
            <arg line="xml/PurchaseOrder.xml"/>
        </java>
    </target>

</project>
