<!--
/*
 * 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.
 */
 -->

<!-- $Id$ -->
<project name="commons-dbcp" default="test" basedir=".">

   <target name="init">
      <tstamp>
        <format property="YEAR" pattern="yyyy" locale="en,GB"/>
      </tstamp>

      <!-- read properties from the build.properties, if any -->
      <property name="component-propfile" value="${basedir}/build.properties"/>
      <property file="${component-propfile}"/>

      <!-- read properties from the commons build.properties, if any -->
      <property name="commons-propfile" value="${basedir}/../build.properties"/>
      <property file="${commons-propfile}"/>

      <!-- read properties from the ${user.home}/propfile, if any -->
      <property name="user-propfile" value="${user.home}/build.properties"/>
      <property file="${user-propfile}"/>

      <property name="commons-pool.jar" value="${basedir}/../pool/dist/commons-pool.jar"/>

      <!-- command line classpath, if any -->
      <property name="cp" value=""/>

      <!-- now combine the classpaths -->
      <property name="classpath" 
       value="${cp}:${commons-pool.jar}:${junit.jar}:
        ${naming-common.jar}:${naming-java.jar}:${commons-logging.jar}:
      	${xerces.jar}:${jta-spec.jar}:${jta-impl.jar}:
      	${backport-util-concurrent.jar}:${ejb-spec.jar}"/>

      <property name="name" value="commons-dbcp"/>
      <property name="title" value="Apache Commons Database Pooling Package"/>
      <property name="version" value="Nightly-${DSTAMP}${TSTAMP}"/>
      <property name="package" value="org.apache.commons.dbcp.*"/>

      <property name="build.dir" value="${basedir}/build"/>
      <property name="build.classes.dir" value="${build.dir}/classes"/>
      <property name="build.test-classes.dir" value="${build.dir}/test-classes"/>
      <property name="dist.dir" value="${basedir}/dist"/>
      <property name="dist.jar" value="${dist.dir}/${name}.jar"/>

      <property name="test.failonerror" value="true" /> 
      <property name="test.runner" value="junit.textui.TestRunner" /> 
     
      <property name="javadoc.dir" value="${dist.dir}/docs/api"/>
      <property name="javadoc.bottom" value="&lt;small&gt;Copyright &amp;copy; 2001-${YEAR} Apache Software Foundation. Documenation generated ${TODAY}&lt;/small&gt;."/>
      <property name="javadoc.overview" value="${basedir}/src/java/org/apache/commons/dbcp/overview.html"/>

      <property name="javac.optimize" value="false"/>
      <property name="javac.debug" value="true"/>
      <property name="javac.deprecation" value="false"/>

      <available property="jndi.present" classname="javax.naming.Context"/>
      <available property="jdbc4.present" classname="java.sql.Wrapper"/>
      <available property="jdbc41.present" classname="javax.sql.rowset.RowSetFactory"/>
   </target>

   <target name="check_jar">
   	   <available file="${file}" property="found"/>
   	   <antcall target="check_message"/>
   </target>

	<target name="check_message" unless="found">
        <!-- echo could be replaced with fail if required -->
        <echo message="Could not find ${file}"/>
   </target>

   <!-- Check that all the dependencies exist -->
   <target name="check_depends" depends="init">
       <echo>Checking dependencies</echo>
       <antcall target="check_jar">
           <param name="file" value="${commons-pool.jar}"/>
       </antcall>
       <antcall target="check_jar">
           <param name="file" value="${junit.jar}"/>
       </antcall>
       <antcall target="check_jar">
           <param name="file" value="${naming-common.jar}"/>
       </antcall>
       <antcall target="check_jar">
           <param name="file" value="${naming-java.jar}"/>
       </antcall>
       <antcall target="check_jar">
           <param name="file" value="${commons-logging.jar}"/>
       </antcall>
       <antcall target="check_jar">
           <param name="file" value="${xerces.jar}"/>
       </antcall>
       <antcall target="check_jar">
           <param name="file" value="${jta-spec.jar}"/>
       </antcall>
       <antcall target="check_jar">
           <param name="file" value="${jta-impl.jar}"/>
       </antcall>
       <antcall target="check_jar">
           <param name="file" value="${backport-util-concurrent.jar}"/>
       </antcall>
       <antcall target="check_jar">
           <param name="file" value="${ejb-spec.jar}"/>
       </antcall>
   </target>

   <!-- ######################################################### -->

   <target name="clean" depends="init" description="removes generated files">
      <delete dir="${build.dir}"/>
      <delete dir="${dist.dir}"/>
   </target>

   <target name="prepare-nojdbc4" depends="init" unless="jdbc4.present">
      <echo message="Commenting out the JDBC 4 and JDBC 4.1 additional methods since JDBC 4 was not detected."/>
      <property name="src.dir" value="${build.dir}/src"/>
      <property name="src.java.dir" value="${src.dir}/main/java"/>
      <property name="src.test.dir" value="${src.dir}/test/java"/>
      <property name="javac.source" value="1.4" />

      <mkdir dir="${src.dir}"/>
      <copy todir="${src.dir}" filtering="yes">
         <fileset dir="${basedir}/src" defaultexcludes="no">
            <include name="**/*.java"/>
            <include name="**/*.xml"/>
            <include name="**/*.properties"/>
            <include name="**/*.jocl"/>
            <include name="**/package.html"/>
         </fileset>
      </copy>
      <replace dir="${src.dir}" token="/* JDBC_4_ANT_KEY_BEGIN */" value="/*"/>
      <replace dir="${src.dir}" token="/* JDBC_4_ANT_KEY_END */" value="*/"/>
   </target>

   <target name="prepare-jdbc4" depends="init" if="jdbc4.present" unless="jdbc41.present">
      <echo message="JDBC 4 was detected. Commenting out the JDBC 4.1 additional methods."/>
      <property name="src.dir" value="${basedir}/src"/>
      <property name="src.java.dir" value="${src.dir}/main/java"/>
      <property name="src.test.dir" value="${src.dir}/test/java"/>
      <property name="javac.source" value="1.5" />

      <mkdir dir="${src.dir}"/>
      <copy todir="${src.dir}" filtering="yes">
         <fileset dir="${basedir}/src" defaultexcludes="no">
            <include name="**/*.java"/>
            <include name="**/*.xml"/>
            <include name="**/*.properties"/>
            <include name="**/*.jocl"/>
            <include name="**/package.html"/>
         </fileset>
      </copy>
      <replace dir="${src.dir}" token="/* JDBC_4_1_ANT_KEY_BEGIN */" value="/*"/>
      <replace dir="${src.dir}" token="/* JDBC_4_1_ANT_KEY_END */" value="*/"/>
   </target>

   <target name="prepare-jdbc41" depends="init" if="jdbc41.present">
      <echo message="JDBC 4.1 was detected."/>
	  <property name="src.dir" value="${basedir}/src"/>
      <property name="src.java.dir" value="${src.dir}/main/java"/>
      <property name="src.test.dir" value="${src.dir}/test/java"/>
      <property name="javac.source" value="1.5" />
   </target>

   <target name="prepare" depends="init,prepare-nojdbc4,prepare-jdbc4,prepare-jdbc41"/>

   <target name="javadoc" depends="prepare" description="generates javadocs">
      <mkdir dir="${javadoc.dir}"/>
      <javadoc packagenames="org.*"
               sourcepath="${src.java.dir}"
               classpath="${classpath}"
               destdir="${javadoc.dir}"
               windowtitle="${title}"
               doctitle="${title}"
               bottom="${javadoc.bottom}"
               overview="${javadoc.overview}"
               public="true"
               version="true"
               author="true"
               splitindex="false"
               nodeprecated="true"
               nodeprecatedlist="true"
               notree="true"
               noindex="false"
               nohelp="true"
               nonavbar="false"
               serialwarn="false">
          <link href="http://java.sun.com/j2se/1.5.0/docs/api"/>
          <link href="http://commons.apache.org/pool/apidocs"/>
      </javadoc>
   </target>

   <!-- ######################################################### -->

   <target name="compile" depends="check_depends,prepare" description="compiles source files">
      <mkdir dir="${build.classes.dir}"/>
      <javac destdir="${build.classes.dir}"
             srcdir="${src.java.dir}"
             classpath="${classpath}"
             debug="${javac.debug}"
             deprecation="${javac.deprecation}"
             optimize="${javac.optimize}"
             source="${javac.source}">
         <exclude name="org/apache/commons/dbcp/BasicDataSourceFactory.java"
             unless="jndi.present"/>
         <exclude name="org/apache/commons/dbcp/datasources/**"
             unless="jndi.present"/>
         <exclude name="org/apache/commons/dbcp/cpdsadapter/**"
             unless="jndi.present"/>
      </javac>
   </target>
   
   <target name="compile-test" depends="compile">
      <mkdir dir="${build.test-classes.dir}"/>
      <javac destdir="${build.test-classes.dir}"
             srcdir="${src.test.dir}"
             debug="${javac.debug}"
             deprecation="${javac.deprecation}"
             optimize="${javac.optimize}"
             source="${javac.source}">
        <classpath>
          <pathelement location="${build.classes.dir}" /> 
          <pathelement location="${build.test-classes.dir}" /> 
          <pathelement path="${classpath}" /> 
        </classpath>
      </javac>
      <copy todir="${build.test-classes.dir}" file="${src.dir}/test/resources/testpool.jocl"/>
   </target>

   <target name="test" depends="compile-test" description="runs (junit) unit tests">
      <echo message="${classpath}"/>
      <mkdir dir="${build.dir}/ant-reports"/>
      <junit printsummary="true" showoutput="true" fork="yes" haltonfailure="${test.failonerror}">
        <classpath>
          <pathelement location="${build.classes.dir}" /> 
          <pathelement location="${build.test-classes.dir}" /> 
          <pathelement path="${classpath}" /> 
        </classpath>
        <formatter type="plain" usefile="true" />
        <!-- If test.entry is defined, run a single test, otherwise run all valid tests -->
        <test name="${test.entry}" if="test.entry"/>
        <batchtest todir="${build.dir}/ant-reports" unless="test.entry">
          <fileset dir="${src.test.dir}">
            <include name="**/*Test*.java"/>
            <!-- Test support files -->
            <exclude name="**/Tester*.java"/>
          	<!-- Ant JUnit does not handle abstract classes -->
            <exclude name="**/TestConnectionPool.java"/>
          </fileset>
        </batchtest>
      </junit>
   </target>

   <target name="build-jar" depends="compile">
      <mkdir dir="${dist.dir}"/>
      <jar jarfile="${dist.jar}">
         <fileset dir="${build.classes.dir}"/>
         <metainf dir="${basedir}" includes="LICENSE.txt,NOTICE.txt"/>
         <manifest>
            <attribute name="Built-By" value="${user.name}"/>
            <attribute name="Package" value="${package}"/>
            <attribute name="Extension-Name" value="${name}"/>
            <attribute name="Specification-Vendor" value="Apache Software Foundation"/>
            <attribute name="Specification-Title" value="${title}"/>
            <attribute name="Implementation-Version" value="${version}"/>
            <attribute name="Implementation-Vendor" value="Apache Software Foundation"/>
         </manifest>
      </jar>
   </target>

   <target name="build" depends="clean,build-jar,javadoc">
      <copy todir="${dist.dir}" file="${basedir}/LICENSE.txt"/>
      <copy todir="${dist.dir}" file="${basedir}/NOTICE.txt"/>
      <copy todir="${dist.dir}" file="${basedir}/README.txt"/>
   </target>

   <target name="dist" depends="build" description="gump target"/>
   
</project>
