<!--
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="MixedContent" default="build">

    <property environment="env"/>

    <path id="MixedContent.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 enviornment." 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,MixedContent.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="MixedContent.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="MixedContent.path"
            debug="on"
            source="1.8"
            executable="${exe}"
            fork="yes"
        />
    </target>

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

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

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

    <target name="test" depends="init,build">
        <echo message="============================== testing MixedContent"/>
        <java
            classname="org.apache.xmlbeans.samples.cursor.MixedContentTest"
            classpathref="MixedContent.path"
            fork="true">
            <arg line="xml/inventoryitems.xml"/>
        </java>
    </target>

</project>
