<?xml version="1.0" encoding="UTF-8"?>
<!-- 

    Copyright (C) 2006 W3C (R) (MIT ERCIM Keio), All Rights Reserved.
    W3C liability, trademark and document use rules apply.

    http://www.w3.org/Consortium/Legal/ipr-notice
    http://www.w3.org/Consortium/Legal/copyright-documents

    $Header: /w3ccvs/WWW/2002/ws/databinding/edcopy/patterns/build.xml,v 1.35 2008/07/16 11:15:28 pdowney Exp $

    Antfile to generate examples 

    - the dependencies in ant are, um, feeble - to be certain of a clean build, touch examples.xml, patterns.xml and run twice!
-->
<project name="dbwg-examples" default="init" basedir=".">

    <description>
        create directories for examples, create examples schemas, wsdl and instances   
	driven by patterns.xml and examples.xml
    </description>

    <property name="examplesDir" location="../../examples/6/09"/>
    <property name="patternsDir" location="../../patterns/6/09"/>

    <property name="srcDir" location="../src"/>
    <property name="classesDir" location="../tmp/classes"/>
    <property name="libDir" location="../lib"/>
    <property name="saxonjar" location="${libDir}/saxon8.9.jar"/>

    <tstamp>
        <format property="NOW" pattern="yyyy-MM-dd hh:mm:ss"/>
    </tstamp>

    <path id="class.path">
	<fileset dir="${libDir}">
	    <include name="**/*.jar"/>
	</fileset>
    </path>    

    <target name="init" depends="mkdir,${libDir}/patterncheck.jar,explode_examples,callable,detect,validate,explode_overviews,explode_patterns,examples_all,patterns_all,examples_index,patterns_index"/>

    <target name="mkdir">
        <mkdir dir="${examplesDir}"/>
        <xslt
            style="mkdir.xsl"
            in="examples.xml"
            out="${examplesDir}/mkdir-example.xml"
        />
        <ant antfile="mkdir-example.xml" dir="${examplesDir}"/>

        <mkdir dir="${patternsDir}"/>
        <xslt
            style="mkdir.xsl"
            in="patterns.xml"
            out="${patternsDir}/mkdir-patterns.xml"
        />
        <ant antfile="mkdir-patterns.xml" dir="${patternsDir}"/>
    </target>

    <target name="${libDir}/patterncheck.jar">
        <delete dir="${classesDir}"/><mkdir dir="${classesDir}"/>
        <javac srcdir="${srcDir}"  destdir="${classesDir}">
            <classpath refid="class.path"/>
        </javac> 
        <jar destfile="${libDir}/patterncheck.jar" basedir="${classesDir}"/>
    </target>

    <target name="patternsdetector.xsl" depends="patterns.xml">
        <!-- Create the patterns detector stylesheet -->
	<!--
        <java fork="true" jar="${saxonjar}">
            <arg line="-novw -o patternsdetector.xsl patterns.xml patterns2detector.xsl"/>
        </java>
        -->
        <xslt style="patterns2detector.xsl" in="patterns.xml" out="patternsdetector.xsl" force="true">
	    <param name="version" expression="patternsdetector(${NOW})"/>
	</xslt>
    </target>

    <target name="callable" depends="patternsdetector.xsl,detector.xsl"/>
    <target name="patterns.xml"/>
    <target name="callabledetector.xsl"/>

    <target name="detector.xsl" depends="callabledetector.xsl,patternsdetector.xsl">
        <xslt style="callabledetector.xsl" in="patternsdetector.xsl" out="detector.xsl" force="true"/>
    </target>

    <target name="explode_examples">
        <java fork="true" jar="${saxonjar}">
            <arg line="-novw examples.xml"/>
            <arg line="explode_examples.xsl"/>
            <arg line="dir='${examplesDir}'"/>
        </java>
    </target>

    <target name="explode_overviews">
        <!-- build overview documents -->
        <java fork="true" jar="${saxonjar}">
            <arg line="-novw examples.xml"/>
            <arg line="explode_overviews.xsl"/>
            <arg line="dir='${examplesDir}'"/>
        </java>
    </target>

    <target name="explode_patterns">
        <java fork="true" jar="${saxonjar}">
            <arg line="-novw patterns.xml"/>
            <arg line="explode_patterns.xsl"/>
            <arg line="dir='${patternsDir}'"/>
        </java>
    </target>

    <target name="detect" depends="patternsdetector.xsl">
        <!-- run pattern detector for each example schema -->
        <java fork="true" classname="w3c.dbwg.saxon.SaxonTransform" classpathref="class.path">
            <arg line="${examplesDir}/mkdir-example.xml ${examplesDir} -patterns.xml patternsdetector.xsl"/>
        </java> 
    </target>

    <target name="validate">
        <!-- schema validate each instance against the schema -->
        <xslt style="validate.xsl" in="examples.xml" out="validate.xml" />
	<exec executable="ant">
	    <!-- it sucks, but you can't assert the XmlLogger from within an ant file -->
	    <arg line="-logger org.apache.tools.ant.XmlLogger -logfile ${examplesDir}/validate-log.xml -f validate.xml"/>
	</exec>
        <xslt style="validate-log.xsl" in="${examplesDir}/validate-log.xml" out="${examplesDir}/validation-results.xml" />
    </target>

    <target name="examples_all">
        <!-- Create the overview documents for all examples -->
        <xslt style="examples-patterns.xsl" in="examples.xml" out="${examplesDir}/examples-patterns.xml"/>

        <copy file="listexamples" todir="${examplesDir}"/>
	<chmod file="${examplesDir}/listexamples" perm="ugo+rx"/>

        <copy file="examples.xml" todir="${examplesDir}"/>
        <copy file="examples2wsdl.xsl" todir="${examplesDir}"/>
        <copy file="examples2wsdlxsd.xsl" todir="${examplesDir}"/>
        <copy file="exclusions.xsl" todir="${examplesDir}"/>

        <xslt style="examples2xsd.xsl" in="examples.xml" out="${examplesDir}/examples.xsd"/>
        <xslt style="examples2wsdl.xsl" in="examples.xml" out="${examplesDir}/examples.wsdl"/>
        <xslt style="examples2soap11.xsl" in="examples.xml" out="${examplesDir}/examples-soap11.xml"/>
        <xslt style="examples2soap12.xsl" in="examples.xml" out="${examplesDir}/examples-soap12.xml"/>
    </target>

    <target name="examples_index">
        <xslt style="overviewexamples.xsl" in="examples.xml" out="${examplesDir}/Overview.html"/>
    </target>

    <target name="patterns_all" depends="callable">
        <copy file="listpatterns" todir="${patternsDir}"/>
	<chmod file="${patternsDir}/listpatterns" perm="ugo+rx"/>

        <copy file="patterns.xml" todir="${patternsDir}"/>
        <copy file="patternsdetector.xsl" todir="${patternsDir}"/>
        <copy file="detector.xsl" todir="${patternsDir}"/>
        <copy file="detected.xsl" todir="${patternsDir}"/>
    </target>
        
    <target name="patterns_index">
        <xslt style="overviewpatterns.xsl" in="patterns.xml" out="${patternsDir}/Overview.html"/>
    </target>

</project>    
