<?xml version="1.0"?>

<project name="NeXML Java API" default="jar" basedir=".">
	<description>NeXML Java API ant build</description>
	<property name="src" value="src"/>
	<property name="test" value="test"/>
	<property name="resources" value="resources"/>
	<property name="classfiles" value="bin"/>
	<property name="lib" value="jars"/>
	<property name="revstring" value="$Rev: 1457 $"/>
	<property name="jarfile" value="nexml.jar"/>
	<property name="validatorjar" value="validator.jar"/>
	<property name="xercesjar" value="xercesImpl.jar"/>
	<property name="xercesfolder" value="xerces"/>
	<property name="saxonjar" value="saxon9he.jar"/>
	<property name="saxonfolder" value="saxon"/>
	<property name="mesquitezip" value="mesquite-nexml.zip"/>
	<property name="mesquite-properties" value="mesquite/nexml/InterpretNEXML/predicateHandlerMapping.properties"/>
	<property name="mesquite-ns-properties" value="mesquite/nexml/InterpretNEXML/namespaceHandlerMapping.properties"/>
	<property environment="env"/>
	
	<!-- CORE LIBRARY -->
	<target name="compile" depends="clean">
		<mkdir dir="${classfiles}"/>
	    <javac srcdir="${src}" destdir="${classfiles}" debug="true" debuglevel="lines,source" target="1.5" source="1.5">
	        <exclude name="**/mesquite/nexml/InterpretNEXML/**"/>
	    	<exclude name="**/validator/**"/>
	    	<exclude name="**/transformer/**"/>
	    </javac>
	</target>
	
    <target name="jar" depends="compile">
        <jar destfile="${jarfile}">
            <fileset dir="${classfiles}"/>
        </jar>
    </target>	
	
	<!-- VALIDATOR -->
    <path id="classpath-validator">
        <fileset dir="${lib}">
            <include name="${xercesjar}"/>
            <include name="${saxonjar}"/>
        </fileset>
    </path>	
	
	<target name="build-validator" depends="clean">
		<mkdir dir="${classfiles}"/>
	    <javac srcdir="${src}" destdir="${classfiles}" debug="true" debuglevel="lines,source">
	        <exclude name="**/mesquite/nexml/InterpretNEXML/**"/>
	    	<exclude name="**/org/nexml/model/**"/>
	    	<classpath refid="classpath-validator"/>
	    </javac>		
	</target>
	
    <target name="validator" depends="build-validator">
    	<mkdir dir="${xercesfolder}"/>
    	<unzip src="${lib}/${xercesjar}" dest="${xercesfolder}"/>
    	<unzip src="${lib}/${saxonjar}" dest="${saxonfolder}"/>    	
        <jar destfile="${validatorjar}">
            <fileset dir="${classfiles}"/>
            <fileset dir="${xercesfolder}"/>
        	<fileset dir="${saxonfolder}" excludes="META-INF/SAXONICA.*" />
        	<manifest>
        		<attribute name="Main-Class" value="validator.ValidateNeXML"/>
        	</manifest>        	
        </jar>
    </target>	
	
	
	<!-- MESQUITE -->	
	<path id="classpath-mesquite">
		<pathelement path="${env.MESQUITE_ROOT}"/>		
	</path>	
	
	<target name="build-mesquite" depends="clean">
		<mkdir dir="${classfiles}"/>
		<echo message="Using MESQUITE_ROOT=${toString:classpath-mesquite}"/>		
		<javac srcdir="${src}" destdir="${classfiles}" debug="true" debuglevel="lines,source" target="1.5" source="1.5">
			<exclude name="**/validator/*"/>	
			<exclude name="**/transformer/*"/>
			<classpath refid="classpath-mesquite"/>
		</javac>
	</target>	
	
	<target name="mesquite" depends="build-mesquite">
		<zip destfile="${mesquitezip}">
			<fileset dir="${classfiles}"/>
		</zip>
	</target>
	
	<target name="mesquite-install" depends="build-mesquite">
		<copy todir="${env.MESQUITE_ROOT}">
			<fileset dir="${classfiles}"/>
		</copy>
		<copyfile dest="${env.MESQUITE_ROOT}/${mesquite-properties}" src="${src}/${mesquite-properties}"/>
		<copyfile dest="${env.MESQUITE_ROOT}/${mesquite-ns-properties}" src="${src}/${mesquite-ns-properties}"/>		
	</target>
	
	<!-- JUNIT TESTS -->
	<path id="classpath-junit">
        <fileset dir="${lib}">
            <include name="junit-4.5.jar"/>
        </fileset>	
	</path>
	
	<target name="build-test" depends="compile">
	    <javac srcdir="${test}" destdir="${classfiles}" debug="true" debuglevel="lines,source">
	        <classpath refid="classpath-junit"/>
	    </javac>
	</target>
	
	<target name="test" depends="build-test" description="Unit tests">
	        <junit fork="yes" printsummary="on" maxmemory="1024m">
	            <classpath>
	                <pathelement path="."/>
	                <pathelement path="${classfiles}"/>
	                <fileset dir="${lib}">
	                    <include name="junit-4.5.jar"/>
	                </fileset>
	            </classpath>
	            <batchtest>
	                <fileset dir="${test}"/>
	            </batchtest>
	        </junit>
	</target>
	
	<!-- CLEANUP -->
    <target name="clean">
        <delete dir="${classfiles}"/>
    	<delete dir="${xercesfolder}"/>
    	<delete dir="${saxonfolder}"/>
        <delete file="${jarfile}"/>
    	<delete file="${mesquitezip}"/>
    	<delete file="${validatorjar}"/>
    </target>
	
</project>

