<!--
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="XmlTree" default="build">
    <property environment="env"/>

    <path id="XmlTree.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 xmlbeans-*.jar from binary distribution -->
        <pathconvert property="xmlbeans.lib" setonempty="false" pathsep=" ">
            <path><fileset dir="${xmlbeans.home}/libs" includes="xmlbeans-*.jar" /></path>
        </pathconvert>

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

        <echo message="xmlbeans.lib: ${xmlbeans.lib}"/>

        <path id="xmlbeans.path">
            <fileset dir="${xmlbeans.home}/libs" 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,XmlTree.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="src"
            classpathref="xmlbeans.path"
            debug="on"
            />
    </target>

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

        <pathconvert property="exe" setonempty="false">
            <fileset dir="${env.JAVA_HOME}/bin" includes="javac, javac.exe"/>
        </pathconvert>
        <pathconvert property="exe" setonempty="false">
            <fileset dir="${env.JAVA_HOME}/../bin" includes="javac, javac.exe"/>
        </pathconvert>

        <javac srcdir="src"
            destdir="build/classes"
            classpathref="XmlTree.path"
            debug="on"
            source="1.8"
            executable="${exe}"
            fork="yes"
            />
    </target>

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

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

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

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

</project>