<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You 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 default="java:jar"
  xmlns:ant="jelly:ant"
  xmlns:j="jelly:core"
  xmlns:util="jelly:util">

  <preGoal name="xdoc:jelly-transform">
    <attainGoal name="html2xdoc"/>
  </preGoal>

  <postGoal name="java:compile">
    
    <copy todir="${maven.build.dir}/classes/">
      <fileset dir="${pom.build.sourceDirectory}"
          excludes="**/*.java,**/*.html"/>
    </copy>

    <copy todir="${maven.build.dir}/classes/org/apache/commons/validator/resources/">
      <fileset dir="${basedir}/conf/share"
          includes="validator*.dtd"/>
    </copy>

    <copy todir="${maven.build.dir}/classes/">
      <fileset dir="src/javascript"
          includes="**/*.js"/>
    </copy>
  </postGoal>

  <preGoal name="jar:jar">
    <!-- Use Dojo/Rhino to create compressed JavaScript files -->
    <ant:available property="dojoPresent" type="file" file="${dojo_custom_rhino.jar}"/>
    <j:if test="${dojoPresent}">
        <attainGoal name="dojo.compress.files"/>
    </j:if>
  </preGoal>

  <!-- ================================================================== -->
  <!-- Copy into the binary distribution                                  -->
  <!-- ================================================================== -->
  <postGoal name="dist:prepare-bin-filesystem">

    <!-- Copy the NOTICE -->
    <copy todir="${maven.dist.bin.assembly.dir}">
      <fileset file='${basedir}/NOTICE.txt'/>
      <fileset file="${basedir}/RELEASE-NOTES.txt"/>
    </copy>

    <!-- Create Single file of static JavaScript -->
    <ant:concat destfile="${maven.dist.bin.assembly.dir}/${maven.final.name}.js">
      <fileset dir="${basedir}/src/javascript/org/apache/commons/validator/javascript" includes="*.js"/>
    </ant:concat>

    <!-- Use Dojo/Rhino to create single compressed JavaScript file -->
    <ant:available property="dojoPresent"  type="file" file="${dojo_custom_rhino.jar}"/>
    <j:if test="${dojoPresent}">
        <attainGoal name="dojo.compress.single"/>
    </j:if>

  </postGoal>

  <!-- ================================================================== -->
  <!-- Uses Dojo/Rhino to created compressed JavaScript files             -->
  <!-- 1) Download Dojo/Rhino jar from:                                   -->
  <!--         http://dojotoolkit.org/docs/compressor_system.html         -->
  <!-- 2) set dojo_custom_rhino.jar in build.properties to jar location   -->
  <!-- ================================================================== -->
  <goal name="dojo.compress.single">
    <ant:java jar="${dojo_custom_rhino.jar}" fork="true"
              output="${maven.dist.bin.assembly.dir}/${maven.final.name}-compress.js">
        <ant:arg value="-c"/> 
        <ant:arg value="${maven.dist.bin.assembly.dir}/${maven.final.name}.js"/> 
    </ant:java>
  </goal>

  <goal name="dojo.compress.files">
    <j:set var="scriptDir" value="${maven.build.dir}/classes/org/apache/commons/validator/javascript" />
    <util:tokenize var="scriptFiles" delim=",">${validator.script.files}</util:tokenize>
    <j:forEach items="${scriptFiles}" var="scriptFile">
        <ant:java jar="${dojo_custom_rhino.jar}" fork="true"
              output="${scriptDir}/${scriptFile}-compress.js">
            <ant:arg value="-c"/> 
            <ant:arg value="${scriptDir}/${scriptFile}.js"/> 
        </ant:java>
    </j:forEach> 
  </goal>

  <!-- ================================================================== -->
  <!-- Copy into the source distribution                                  -->
  <!-- ================================================================== -->
  <postGoal name="dist:prepare-src-filesystem">

    <!-- Copy the NOTICE -->
    <copy todir="${maven.dist.src.assembly.dir}">
      <fileset file='${basedir}/NOTICE.txt'/>
      <fileset file="${basedir}/RELEASE-NOTES.txt"/>
      <fileset file="${basedir}/build.properties.sample"/>
    </copy>

    <!-- Copy xdoc files -->
    <copy todir="${maven.dist.src.assembly.dir}/xdocs">
      <fileset dir="./xdocs"/>
    </copy>

    <!-- Copy etc files -->
    <copy todir="${maven.dist.src.assembly.dir}/etc">
      <fileset dir="./etc">
        <include name="*.bat"/>
        <include name="*.sh"/>
      </fileset>
    </copy>

    <!-- Copy configuration files -->
    <copy todir="${maven.dist.src.assembly.dir}/conf/share">
      <fileset dir="./conf/share">
        <include name="*.xml"/>
        <include name="*.dtd"/>
        <include name="*.txt"/>
        <include name="*.MF"/>
      </fileset>
    </copy>

  </postGoal>

  <postGoal name="maven-javadoc-plugin:report"> 
    <mkdir dir="${maven.build.dir}/docs/javascript/org/apache/commons/validator/javascript/doc-files" /> 

    <ant:available property="jsdocPresent" type="file" file="${jsdoc.home}/jsdoc.pl"/>
    <j:if test="${jsdocPresent}">
      <attainGoal name="javadoc.js.unix"/>
      <attainGoal name="javadoc.js.windows"/>
    </j:if>

    <copy todir="${maven.build.dir}/docs/javascript/org/apache/commons/validator/javascript/doc-files">
      <fileset dir="${javascript.home}/org/apache/commons/validator/javascript/doc-files" includes="*.gif"/>
    </copy>

  </postGoal>

  <goal name="javadoc.js.unix">
    <exec  executable="bash" failifexecutionfails="false">
         <arg line="-c 'etc/jsdoc.sh ${jsdoc.home} ${javascript.home} ${maven.build.dir}/docs/javascript' "/>
    </exec>
  </goal>

  <goal name="javadoc.js.windows">
    <exec  executable="etc/jsdoc.bat" failifexecutionfails="false">
         <arg line="${jsdoc.home} ${javascript.home} ${maven.build.dir}/docs/javascript"/>
    </exec>
  </goal>


    <!-- ================================================================== -->
    <!-- Create MD5 Check Sums                                              -->
    <!-- ================================================================== -->
    <postGoal name="dist">

       <!-- Create a versioned pom -->
       <copy file="${basedir}/project.xml" tofile="${maven.dist.dir}/${maven.final.name}.pom"/>

       <!-- create checksum for pom -->
       <ant:checksum file="${maven.dist.dir}/${maven.final.name}.pom" property="pom.md5"/>
       <ant:echo message="${pom.md5} *${maven.final.name}.pom" 
                 file="${maven.dist.dir}/${maven.final.name}.pom.md5" />

         <!-- create checksum for jar -->
         <ant:checksum file="${maven.build.dir}/${maven.final.name}.jar" property="jar.md5"/>
         <ant:echo message="${jar.md5} *${maven.final.name}.jar" 
                   file="${maven.build.dir}/${maven.final.name}.jar.md5" />

         <!-- create checksum for binary zip -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}.zip" property="zip.md5"/>
         <ant:echo message="${zip.md5} *${maven.final.name}.zip" 
                   file="${maven.dist.dir}/${maven.final.name}.zip.md5" />

         <!-- create checksum for binary tar.gz -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}.tar.gz" property="tar.gz.md5"/>
         <ant:echo message="${tar.gz.md5} *${maven.final.name}.tar.gz" 
                   file="${maven.dist.dir}/${maven.final.name}.tar.gz.md5" />

         <!-- create checksum for source zip -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}-src.zip" property="src.zip.md5"/>
         <ant:echo message="${src.zip.md5} *${maven.final.name}-src.zip" 
                   file="${maven.dist.dir}/${maven.final.name}-src.zip.md5" />

         <!-- create checksum for source tar.gz -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}-src.tar.gz" property="src.tar.gz.md5"/>
         <ant:echo message="${src.tar.gz.md5} *${maven.final.name}-src.tar.gz" 
                   file="${maven.dist.dir}/${maven.final.name}-src.tar.gz.md5" />

    </postGoal>

</project>

