<!--
    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 name="Validator" default="dist" basedir=".">


<!--
        "Validator" component of the Jakarta Commons Subproject
        $Id$
        $Rev$ $Date$
-->


<!-- ========== Initialize Properties ===================================== -->


  <property file="build.properties"/>                <!-- Component local   -->
  <property file="../build.properties"/>             <!-- Commons local     -->
  <property file="${user.home}/build.properties"/>   <!-- User local        -->


<!-- ========== External Dependencies ===================================== -->


  <!-- The directories corresponding to your necessary dependencies -->
  <property name="junit.home"              value="/usr/local/junit3.8.1"/>
  <property name="commons.home"            value="../../jakarta-commons"/>
  <property name="sandbox.home"            value="../../jakarta-commons-sandbox"/>
  <property name="beanutils.home"          value="${commons.home}/beanutils"/>
  <property name="collections.home"        value="${commons.home}/collections"/>
  <property name="digester.home"           value="${commons.home}/digester"/>
  <property name="logging.home"            value="${commons.home}/logging"/>


<!-- ========== Derived Values ============================================ -->


  <!-- The locations of necessary jar files -->
  <property name="junit.jar"               value="${junit.home}/junit.jar"/>
  <property name="commons-beanutils.jar"   value="${beanutils.home}/dist/commons-beanutils.jar"/>
  <property name="commons-digester.jar"    value="${digester.home}/dist/commons-digester.jar"/>
  <property name="commons-logging.jar"     value="${logging.home}/dist/commons-logging.jar"/>


<!-- ========== Component Declarations ==================================== -->


  <!-- The name of this component -->
  <property name="component.name"          value="validator"/>

  <!-- The primary package name of this component -->
  <property name="component.package"       value="org.apache.commons.validator"/>

  <!-- The title of this component -->
  <property name="component.title"         value="Validator"/>

  <!-- The current version number of this component -->
  <property name="component.version"       value="1.3.2-SNAPSHOT"/>

  <!-- The base directory for compilation targets -->
  <property name="build.home"              value="target"/>

  <!-- The base directory for component configuration files -->
  <property name="conf.home"               value="conf/share"/>

  <!-- The base directory for distribution targets -->
  <property name="dist.home"               value="dist"/>

  <!-- The base directory for release targets -->
  <property name="release.home"            value="release" />

  <!-- The base directory for component sources -->
  <property name="source.home"             value="src/share"/>

  <!-- The base directory for javascript sources -->
  <property name="javascript.home"             value="src/javascript"/>

  <!-- The base directory for unit test sources -->
  <property name="test.home"               value="src/test"/>

  <!-- The base directory for example sources -->
  <property name="example.home"            value="src/example"/>

  <!-- Directory where binary release files are staged -->
  <property name="stage.bin.dir"           value="${release.home}/stage/bin"/>

  <!-- Directory where source release files are staged -->
  <property name="stage.src.dir"           value="${release.home}/stage/src"/>

  <!-- Directory where release builds are prepared for upload -->
  <property name="upload.dir"              value="${release.home}/upload"/>

  <!-- Base file name for upload files -->
  <property name="upload.file.base"        value="${component.name}-${component.version}"/>

  <!-- Download lib dir -->
  <property name="download.lib.dir"        value="lib"/>

<!-- ========== Compiler Defaults ========================================= -->


  <!-- source JDK version (should be same as maven.compile.source) -->
  <property name="compile.source"          value="1.3"/>

  <!-- target JDK version (should be same as maven.compile.target) -->
  <property name="compile.target"          value="1.3"/>

  <!-- Should Java compilations set the 'debug' compiler option? -->
  <property name="compile.debug"           value="true"/>

  <!-- Should Java compilations set the 'deprecation' compiler option? -->
  <property name="compile.deprecation"     value="false"/>

  <!-- Should Java compilations set the 'optimize' compiler option? -->
  <property name="compile.optimize"        value="true"/>

  <!-- Construct compile classpath -->
  <path id="compile.classpath">
    <pathelement location="${build.home}/classes"/>
    <pathelement location="${commons-beanutils.jar}"/>
    <pathelement location="${commons-digester.jar}"/>
    <pathelement location="${commons-logging.jar}"/>
    <pathelement location="${oro.jar}"/>
    <path refid="downloaded.lib.classpath"/>
  </path>

  <!-- Construct compile classpath -->
  <path id="downloaded.lib.classpath">
    <pathelement location="${download.lib.dir}/commons-beanutils.jar"/>
    <pathelement location="${download.lib.dir}/commons-digester.jar"/>
    <pathelement location="${download.lib.dir}/commons-logging.jar"/>
    <pathelement location="${download.lib.dir}/oro.jar"/>
    <pathelement location="${download.lib.dir}/junit.jar"/>
  </path>

<!-- ========== Test Execution Defaults =================================== -->


  <!-- Construct unit test classpath -->
  <path id="test.classpath">
    <pathelement location="${build.home}/classes"/>
    <pathelement location="${build.home}/tests"/>
    <pathelement location="${commons-beanutils.jar}"/>
    <pathelement location="${commons-digester.jar}"/>
    <pathelement location="${commons-logging.jar}"/>
    <pathelement location="${oro.jar}"/>
    <pathelement location="${junit.jar}"/>
    <pathelement location="${xerces.jar}"/>
    <path refid="downloaded.lib.classpath"/>
  </path>

  <!-- Should all tests fail if one does? -->
  <property name="test.failonerror"        value="true"/>

  <!-- The test runner to execute -->
  <property name="test.runner"             value="junit.textui.TestRunner"/>


<!-- ========== Example Execution Defaults ================================ -->


  <!-- Construct example classpath -->
   <path id="example.classpath">
      <path refid="test.classpath"/>
      <pathelement location="${build.home}/example" />
   </path>
   

<!-- ========== Executable Targets ======================================== -->


  <target name="init"
   description="Initialize and evaluate conditionals">
    <echo message="-------- ${component.name} ${component.version} --------"/>
    <filter  token="name"                  value="${component.name}"/>
    <filter  token="package"               value="${component.package}"/>
    <filter  token="version"               value="${component.version}"/>
    <filter  token="compilesource"         value="${compile.source}"/>
    <filter  token="compiletarget"         value="${compile.target}"/>
    <available property="jsdoc.found" type="file" file="${jsdoc.home}/jsdoc.pl"/>
    <available file="${dojo_custom_rhino.jar}" property="dojo.found"/>
  </target>


  <target name="prepare" depends="init,download-dependencies"
   description="Prepare build directory">
    <mkdir dir="${build.home}"/>
    <mkdir dir="${build.home}/classes"/>
    <mkdir dir="${build.home}/conf"/>
    <mkdir dir="${build.home}/tests"/>
  </target>


  <target name="static" depends="prepare"
   description="Copy static files to build directory">
    <tstamp/>
    <copy  todir="${build.home}/conf" filtering="on">
      <fileset dir="${conf.home}" includes="*.MF"/>
    </copy>
  </target>


  <target name="compile" depends="static"
   description="Compile shareable components">
    <javac  srcdir="${source.home}"
           destdir="${build.home}/classes"
             source="${compile.source}"
             target="${compile.target}"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}">
      <classpath refid="compile.classpath"/>
    </javac>
    <copy    todir="${build.home}/classes" filtering="on">
      <fileset dir="${source.home}"
          excludes="**/*.java"/>
    </copy>
    <copy    todir="${build.home}/classes/org/apache/commons/validator/resources/"
              file="${conf.home}/validator_1_0.dtd"/>
    <copy    todir="${build.home}/classes/org/apache/commons/validator/resources/"
              file="${conf.home}/validator_1_0_1.dtd"/>
    <copy    todir="${build.home}/classes/org/apache/commons/validator/resources/"
              file="${conf.home}/validator_1_1.dtd"/>
    <copy    todir="${build.home}/classes/org/apache/commons/validator/resources/"
              file="${conf.home}/validator_1_1_3.dtd"/>
    <copy    todir="${build.home}/classes/org/apache/commons/validator/resources/"
              file="${conf.home}/validator_1_2_0.dtd"/>
    <copy    todir="${build.home}/classes/org/apache/commons/validator/resources/"
              file="${conf.home}/validator_1_3_0.dtd"/>
    <copy    todir="${build.home}/classes/">
      <fileset dir="${javascript.home}"
          includes="**/*.js"/>
    </copy>
  </target>


  <target name="clean"
   description="Clean build and distribution directories">
    <delete    dir="${build.home}"/>
    <delete    dir="${dist.home}"/>
    <delete    dir="${release.home}"/>
  </target>


  <target name="all" depends="clean,compile"
   description="Clean and compile all components"/>


  <target name="javadoc.init" 
   description="Initializes Javadoc directories">
    <mkdir      dir="${dist.home}"/>
    <mkdir      dir="${dist.home}/docs"/>
    <mkdir      dir="${dist.home}/docs/apidocs"/>
    <mkdir      dir="${dist.home}/docs/javascript"/>
    <mkdir      dir="${dist.home}/docs/javascript/org/apache/commons/validator/javascript/doc-files"/>
  </target>  

  <target name="javadoc.js" depends="javadoc.js.unix,javadoc.js.windows"
   description="Create Javascript Javadoc documentation">

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

  </target>

  <target name="javadoc.js.unix" depends="javadoc.init" if="jsdoc.found"
   description="Create Javascript Javadoc documentation">
    <exec  executable="bash" failifexecutionfails="false">
         <arg line="-c 'etc/jsdoc.sh ${jsdoc.home} ${javascript.home} ${dist.home}/docs/javascript' "/>
    </exec>
  </target>

  <target name="javadoc.js.windows" depends="javadoc.init" if="jsdoc.found"
   description="Windows Create Javascript Javadoc documentation">
    <exec  executable="etc/jsdoc.bat" failifexecutionfails="false">
         <arg line="${jsdoc.home} ${javascript.home} ${dist.home}/docs/javascript"/>
    </exec>
  </target>

  <target name="javadoc" depends="compile, javadoc.js"
   description="Create component Javadoc documentation">
    <javadoc sourcepath="${source.home}"
                destdir="${dist.home}/docs/apidocs"
           packagenames="org.apache.commons.*"
                 author="true"
                private="true"
                version="true"
               doctitle="&lt;h1&gt;${component.title} (Version ${component.version})&lt;/h1&gt;"
            windowtitle="${component.title} (Version ${component.version})"
                 bottom="Copyright (c) 2001-2004  Apache Software Foundation"
           classpathref="compile.classpath" />
  </target>



  <target name="change-log" >
   	<cvschangelog destfile="changelog.xml" start="${cvs.start}" />
     <style in="changelog.xml" out="changelog.html" style="${ant.home}/etc/changelog.xsl">
          <param name="title" expression="Validator ChangeLog"/>
          <param name="module" expression="commons"/>
          <param name="cvsweb" expression="http://cvs.apache.org/viewcvs/"/>
    </style>
  </target>



  <target name="dist" depends="compile,javadoc"
   description="Create binary distribution">
    <mkdir      dir="${dist.home}"/>

    <!-- Create Single file of static JavaScript -->
    <concat destfile="${dist.home}/commons-${component.name}-${component.version}.js">
      <fileset dir="${javascript.home}/org/apache/commons/validator/javascript" includes="*.js"/>
    </concat>

    <!-- Create compressed javascript versions -->
    <antcall target="compress.javascript"/> 

    <copy      file="LICENSE.txt"
              todir="${dist.home}"/>
    <copy      file="NOTICE.txt"
              todir="${dist.home}"/>
    <copy      file="RELEASE-NOTES.txt"
              todir="${dist.home}"/>
    <mkdir      dir="${build.home}/classes/META-INF"/>
    <copy      file="LICENSE.txt"
             tofile="${build.home}/classes/META-INF/LICENSE.txt"/>
    <copy      file="NOTICE.txt"
             tofile="${build.home}/classes/META-INF/NOTICE.txt"/>
    <jar    jarfile="${dist.home}/commons-${component.name}-${component.version}.jar"
            basedir="${build.home}/classes"
           manifest="${build.home}/conf/MANIFEST.MF"/>
  </target>

  <target name="compress.javascript" if="dojo_custom_rhino.jar">
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${dist.home}/commons-${component.name}-${component.version}"/> 
    </antcall>
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${build.home}/classes/org/apache/commons/validator/javascript/validateByte"/> 
    </antcall>
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${build.home}/classes/org/apache/commons/validator/javascript/validateCreditCard"/> 
    </antcall>
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${build.home}/classes/org/apache/commons/validator/javascript/validateDate"/> 
    </antcall>
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${build.home}/classes/org/apache/commons/validator/javascript/validateEmail"/> 
    </antcall>
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${build.home}/classes/org/apache/commons/validator/javascript/validateFloat"/> 
    </antcall>
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${build.home}/classes/org/apache/commons/validator/javascript/validateFloatRange"/> 
    </antcall>
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${build.home}/classes/org/apache/commons/validator/javascript/validateInteger"/> 
    </antcall>
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${build.home}/classes/org/apache/commons/validator/javascript/validateIntRange"/> 
    </antcall>
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${build.home}/classes/org/apache/commons/validator/javascript/validateMask"/> 
    </antcall>
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${build.home}/classes/org/apache/commons/validator/javascript/validateMaxLength"/> 
    </antcall>
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${build.home}/classes/org/apache/commons/validator/javascript/validateMinLength"/> 
    </antcall>
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${build.home}/classes/org/apache/commons/validator/javascript/validateRequired"/> 
    </antcall>
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${build.home}/classes/org/apache/commons/validator/javascript/validateShort"/> 
    </antcall>
    <antcall target="dojo.compress"> 
        <param name="jsfilename" value="${build.home}/classes/org/apache/commons/validator/javascript/validateUtilities"/> 
    </antcall>

  </target>

  <target name="dojo.compress">

    <java jar="${dojo_custom_rhino.jar}" fork="true"
              output="${jsfilename}-compress.js">
        <arg value="-c"/> 
        <arg value="${jsfilename}.js"/> 
    </java>
  </target>

<!-- ========== Unit Test Targets ========================================= -->


  <target name="compile.tests" depends="compile"
   description="Compile unit test cases">
    <javac  srcdir="${test.home}"
           destdir="${build.home}/tests"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}">
      <classpath refid="test.classpath"/>
    </javac>
    <copy    todir="${build.home}/tests" filtering="on">
      <fileset dir="${test.home}" excludes="**/*.java"/>
    </copy>
  </target>


  <target name="test"  depends="compile.tests,test.main,test.routines"
   description="Run all unit test cases">
  </target>

  <target name="test.main"  depends="compile.tests"
   description="Run main unit test cases">
    <echo message="Running main tests ..."/>
    <java classname="${test.runner}" fork="yes"
        failonerror="${test.failonerror}">
      <arg value="org.apache.commons.validator.ValidatorTestSuite"/>
      <classpath refid="test.classpath"/>
    </java>
  </target>

  <target name="test.routines"  depends="compile.tests"
   description="Run routines unit test cases">
    <echo message="Running routines tests ..."/>
    <java classname="${test.runner}" fork="yes"
        failonerror="${test.failonerror}">
      <arg value="org.apache.commons.validator.routines.RoutinesTestSuite"/>
      <classpath refid="test.classpath"/>
    </java>
  </target>

<!-- ========== Example Targets =========================================== -->


  <target name="prepare.example" depends="compile"
   description="Prepare example directory">
    <mkdir dir="${build.home}/example"/>
  </target>


  <target name="compile.example" depends="prepare.example"
   description="Compile example application">
    <javac  srcdir="${example.home}"
           destdir="${build.home}/example"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}">
      <classpath refid="example.classpath"/>
    </javac>
    <copy    todir="${build.home}/example" filtering="on">
      <fileset dir="${example.home}" excludes="**/*.java"/>
    </copy>
  </target>


   <target name="example" depends="compile.example,compile.tests"
    description="Run example application">
      <java fork="yes"
       classname="org.apache.commons.validator.example.ValidateExample" 
        taskname="main" failonerror="true">
        <classpath refid="example.classpath" />
      </java>
   </target>


<!-- ========== Release Targets =========================================== -->


    <target name="release" depends="clean,dist"
    description="Construct release distribution">
        <mkdir dir="${stage.bin.dir}/${upload.file.base}"/>
        <mkdir dir="${stage.src.dir}/${upload.file.base}-src"/>
        <copy todir="${stage.bin.dir}/${upload.file.base}">
            <fileset dir="${dist.home}"/>
        </copy>
        <copy todir="${stage.src.dir}/${upload.file.base}-src">
            <fileset dir=".">
                <exclude name="build.properties"/>
                <exclude name="${build.home}/**"/>
                <exclude name="${dist.home}/**"/>
                <exclude name="${build.home}/**"/>
            </fileset>
        </copy>
        <mkdir dir="${upload.dir}"/>
        <zip  zipfile="${upload.dir}/${upload.file.base}.zip"
              basedir="${stage.bin.dir}"/>
        <zip  zipfile="${upload.dir}/${upload.file.base}-src.zip"
              basedir="${stage.src.dir}"/>
        <tar  tarfile="${upload.dir}/${upload.file.base}.tar"
              basedir="${stage.bin.dir}"
             longfile="gnu"/>
        <tar  tarfile="${upload.dir}/${upload.file.base}-src.tar"
              basedir="${stage.src.dir}"
             longfile="gnu"/>
        <gzip     src="${upload.dir}/${upload.file.base}.tar"
              zipfile="${upload.dir}/${upload.file.base}.tar.gz"/>
        <gzip     src="${upload.dir}/${upload.file.base}-src.tar"
              zipfile="${upload.dir}/${upload.file.base}-src.tar.gz"/>
    </target>


<!-- ========== Download Dependencies =========================================== -->

    <target name="download-dependencies" 
           depends="check-availability, check-dojo-lib" unless="skip.download">
        <echo message="doing download-dependencies..." />
        <antcall target="download-beanutils" />
        <antcall target="download-digester" />
        <antcall target="download-logging" />
        <antcall target="download-oro" />
        <antcall target="download-junit" />
        <antcall target="download-dojo-compress" />
    </target>

    <target name="check-availability">
        <echo message="doing check-availability..." />
        <available file="${commons-beanutils.jar}" property="beanutils.found"/> 
        <available file="${commons-digester.jar}"  property="digester.found"/> 
        <available file="${commons-logging.jar}"   property="logging.found"/> 
        <available file="${oro.jar}"               property="oro.found"/>
        <available file="${junit.jar}"             property="junit.found"/>
        <available file="${dojo_custom_rhino.jar}" property="dojo.found"/>
    </target>

    <target name="check-dojo-lib" unless="dojo.found">
        <echo message="doing check-dojo-lib..." />
        <available file="${download.lib.dir}/custom_rhino.jar" property="dojo.found"/>
        <property name="dojo_custom_rhino.jar" value="${download.lib.dir}/custom_rhino.jar"/>
    </target>

    <target name="download-beanutils" unless="beanutils.found">
        <echo message="Downloading beanutils..."/>
        <mkdir dir="${download.lib.dir}" />
        <get dest="${download.lib.dir}/commons-beanutils.jar"
            usetimestamp="true" ignoreerrors="true"
            src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.7.0.jar"/>
    </target>

    <target name="download-digester" unless="digester.found">
        <echo message="Downloading digester..."/>
        <mkdir dir="${download.lib.dir}" />
        <get dest="${download.lib.dir}/commons-digester.jar"
            usetimestamp="true" ignoreerrors="true"
            src="http://www.ibiblio.org/maven/commons-digester/jars/commons-digester-1.6.jar"/>
    </target>

    <target name="download-logging" unless="logging.found">
        <echo message="Downloading logging..."/>
        <mkdir dir="${download.lib.dir}" />
        <get dest="${download.lib.dir}/commons-logging.jar"
            usetimestamp="true" ignoreerrors="true"
            src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar"/>
    </target>

    <target name="download-oro" unless="oro.found">
        <echo message="Downloading oro..."/>
        <mkdir dir="${download.lib.dir}" />
        <get dest="${download.lib.dir}/oro.jar"
            usetimestamp="true" ignoreerrors="true"
            src="http://www.ibiblio.org/maven/oro/jars/oro-2.0.8.jar"/>
    </target>

    <target name="download-junit" unless="junit.found">
        <echo message="Downloading junit..."/>
        <mkdir dir="${download.lib.dir}" />
        <get dest="${download.lib.dir}/junit.jar"
            usetimestamp="true" ignoreerrors="true"
            src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar"/>
    </target>

    <target name="download-dojo-compress" unless="dojo.found">
        <mkdir dir="${download.lib.dir}" />
        <echo message="Downloading dojo compress...."/>
        <get dest="${download.lib.dir}/custom_rhino.jar"
            usetimestamp="true" ignoreerrors="true"
            src="http://dojotoolkit.org/svn/dojo/trunk/buildscripts/lib/custom_rhino.jar"/>
    </target>
      
</project>

