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

<!--
   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="gora-common" xmlns:ivy="antlib:org.apache.ivy.ant">

  <property name="name" value="${ant.project.name}" />
  <property name="version" value="0.2-incubating" />
  <property name="final.name" value="${ant.project.name}-${version}" />
  <property name="year" value="2011" />
  <property name="module.version.target" value="${version}" />
  <property name="module.name" value="${ant.project.name}-${version}"/>
	
  <!-- Load all the default properties, and any the user wants    -->
  <!-- to contribute (without having to type -D or edit this file -->
  <property file="${user.home}/build.properties" />
  <property file="${basedir}/build.properties" />
  <property file="${basedir}/default.properties" />
	
  <property name="project.dir" value="${basedir}/.."/>
  <property name="lib.dir" value="${basedir}/lib" />
  <property name="lib-ext.dir" value="${basedir}/lib-ext" />
  <property name="build.dir" value="${basedir}/build" />
  <property name="build.classes.dir" value="${build.dir}/classes" />
  <property name="src.dir" value="${basedir}/src/main/java" />
  <property name="conf.dir" value="${basedir}/conf" />
  <property name="jar.file" value="${build.dir}/${module.name}.jar" />
  <property name="job.file" value="${build.dir}/${module.name}.job" />
  <property name="dist.dir" value="${build.dir}/${name}" />

  <property name="examples.src.dir" value="${basedir}/src/examples/java" />
  <property name="examples.build.dir" value="${build.dir}/examples" />
  <property name="examples.build.classes.dir" value="${examples.build.dir}/classes" />
  
  <property name="test.src.dir" value="${basedir}/src/test/java" />
  <property name="test.conf.dir" value="${basedir}/src/test/conf" />
  <property name="test.build.dir" value="${build.dir}/test" />
  <property name="test.build.data" value="${test.build.dir}/data" />
  <property name="test.build.classes.dir" value="${test.build.dir}/classes" />
  <property name="test.jar.file" value="${build.dir}/${ant.project.name}-test-${version}.jar" />
  <property name="test.lib.dir" value="${basedir}/src/test/lib"/>
  <property name="test.log.dir" value="${test.build.dir}/logs"/>
  <property name="test.include" value="Test*"/>
  <property name="test.junit.output" value="no"/>
  <property name="test.junit.timeout" value="3600000"/>
  <property name="test.junit.output.format" value="plain"/>
  <property name="test.junit.fork.mode" value="perTest" />
  <property name="test.junit.printsummary" value="yes" />
  <property name="test.junit.haltonfailure" value="no" />
  <property name="test.junit.maxmemory" value="512m" />

  <property name="build.encoding" value="UTF-8" />
  <property name="javac.debug" value="on" />
  <property name="javac.optimize" value="on" />
  <property name="javac.deprecation" value="off" />
  <property name="javac.version" value="1.6" />


  <!-- Include project's build file -->
  <import file="${project.dir}/build.xml"/>
  <!--<ivy:settings file="${basedir}/ivy/ivysettings.xml" />-->

  <!-- ====================================================== -->
  <!-- path: classpath                                        -->
  <!-- ====================================================== -->
  <path id="classpath">
    <pathelement location="${build.classes.dir}"/>
    <pathelement location="${conf.dir}"/>
    <fileset dir="${lib.dir}">
      <include name="*.jar" />
    </fileset>
  </path>

  <!-- the unit test classpath: uses test.src.dir for configuration -->
  <path id="test.classpath">
    <pathelement location="${examples.build.classes.dir}"/>
    <pathelement location="${conf.dir}"/>
    <pathelement location="${test.build.classes.dir}" />
    <pathelement location="${test.src.dir}"/>
    <pathelement location="${build.dir}"/>
    <pathelement location="${test.conf.dir}"/>
    <path refid="classpath"/>
  </path>


  <!-- ====================================================== -->
  <!-- target: init                                           -->
  <!-- ====================================================== -->
  <target name="init" depends="ivy-init">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.classes.dir}"/>
    
    <mkdir dir="${examples.build.dir}"/>
    <mkdir dir="${examples.build.classes.dir}"/>

    <mkdir dir="${test.build.dir}"/>
    <mkdir dir="${test.build.classes.dir}"/>

    <copy todir="${conf.dir}" verbose="true" failonerror="false">
      <fileset dir="${conf.dir}" includes="**/*.template"/>
      <mapper type="glob" from="*.template" to="*"/>
    </copy>
    
    <antcall target="init-module"/>
  </target>

  <target name="init-module" description="Modules can override this for post-init scripting"/>

  <!-- ====================================================== -->
  <!-- target: compile                                        -->
  <!-- ====================================================== -->
  <target name="compile" depends="init, resolve">
    <javac 
        encoding="${build.encoding}" 
        srcdir="${src.dir}"
        includes="**/*.java"
        destdir="${build.classes.dir}"
        debug="${javac.debug}"
        optimize="${javac.optimize}"
        target="${javac.version}"
        source="${javac.version}"
        deprecation="${javac.deprecation}"
        includeAntRuntime="yes">
      <classpath refid="classpath"/>
    </javac>
    
    <antcall target="compile-module"/>
  </target>

  <target name="compile-module" description="Modules can override this for post-compile scripting"/>
  
  <!-- ====================================================== -->
  <!-- target: compile-examples                               -->
  <!-- ====================================================== -->
  <target name="compile-examples" depends="compile">
    <javac 
        encoding="${build.encoding}" 
        srcdir="${examples.src.dir}"
        includes="**/*.java"
        destdir="${examples.build.classes.dir}"
        debug="${javac.debug}"
        optimize="${javac.optimize}"
        target="${javac.version}"
        source="${javac.version}"
        deprecation="${javac.deprecation}"
        includeAntRuntime="yes">
      <classpath refid="classpath"/>
    </javac>
  </target>

  <!-- ================================================================== -->
  <!-- target: compile-test                                               -->
  <!-- ================================================================== -->
  <target name="compile-test" depends="compile-examples, resolve-test">
    <javac 
         encoding="${build.encoding}" 
         srcdir="${test.src.dir}"
         includes="**/*.java"
         destdir="${test.build.classes.dir}"
         debug="${javac.debug}"
         optimize="${javac.optimize}"
         target="${javac.version}"
         source="${javac.version}"
         deprecation="${javac.deprecation}"
         includeAntRuntime="yes">
      <classpath refid="test.classpath"/>
    </javac>
  </target>

  <!-- ================================================================== -->
  <!-- target: jar                                                        -->
  <!-- ================================================================== -->
  <target name="jar" depends="compile, version" description="--> make a jar file for this project">
    <jar destfile="${jar.file}">
      <fileset dir="${build.classes.dir}" />
      <!--<zipfileset dir="${conf.dir}" excludes="*.template"/>-->
      <manifest>
        <attribute name="Built-By" value="${user.name}"/>
        <attribute name="Build-Version" value="${version}" />
      </manifest>
      <metainf dir="${project.dir}" includes="LICENSE.txt,NOTICE.txt" />
    </jar>
  </target>

  <!-- ================================================================== -->
  <!-- target: test-jar                                                   -->
  <!-- ================================================================== -->
  <target name="test-jar" depends="version, compile-test, jar" description="--> make a jar file for this project">
    <jar destfile="${test.jar.file}">
      <fileset dir="${examples.build.classes.dir}" />
      <fileset dir="${test.build.classes.dir}" />
      <fileset dir="${test.conf.dir}" excludes="*.template" />
      <!--<zipfileset dir="${conf.dir}" excludes="*.template"/>-->
      <manifest>
        <attribute name="Built-By" value="${user.name}"/>
        <attribute name="Build-Version" value="${version}" />
      </manifest>
      <metainf dir="${project.dir}" includes="LICENSE.txt,NOTICE.txt" />
    </jar>
  </target>

  <target name="jar-snapshot" description="copies the jar files to append timestamp to artifact name">
    <tstamp>
      <format property="now" pattern="yyyyMMddHHmmss"/>
    </tstamp>
    <copy file="${jar.file}" tofile="${build.dir}/${module.name}-${now}.jar"/>
    <echo message="New snapshot jar file copied to ${build.dir}/${module.name}-${now}.jar"/>
  </target>

  <target name="test-jar-snapshot" description="copies the jar files to append timestamp to artifact name">
    <tstamp>
      <format property="now" pattern="yyyyMMddHHmmss"/>
    </tstamp>
    <copy file="${jar.file}" tofile="${build.dir}/${module.name}-${now}.jar"/>
    <copy file="${test.jar.file}" tofile="${build.dir}/${ant.project.name}-test-${version}-${now}.jar"/>

    <echo message="New snapshot jar file copied to ${build.dir}/${module.name}-${now}.jar"/>
    <echo message="New snapshot jar file copied to ${build.dir}/${ant.project.name}-test-${version}-${now}.jar"/>
  </target>

  <!-- ================================================================== -->
  <!-- target: job                                                        -->
  <!-- ================================================================== -->
  <target name="job" depends="compile" description="--> make a job file for running on hadoop">
    <jar destfile="${job.file}">
      <fileset dir="${build.classes.dir}" />
      <zipfileset dir="conf" excludes="*.template" />
      <zipfileset dir="${lib.dir}" prefix="lib" includes="**/*.jar" excludes="hadoop-*.jar" followsymlinks="true"/>
      <zipfileset dir="${lib.dir}" prefix="lib" includes="hadoop-gpl-compression*.jar" followsymlinks="true"/>
      <manifest>
        <attribute name="Built-By" value="${user.name}" />
        <attribute name="Build-Version" value="${version}" />
      </manifest>
      <metainf dir="${project.dir}" includes="LICENSE.txt,NOTICE.txt" />
    </jar>
  </target>

  <!-- ================================================================== -->
  <!-- target: test                                                       -->
  <!-- ================================================================== -->
  <target name="test" depends="compile-test" description="Run core unit tests">

    <delete dir="${test.build.data}"/>
    <mkdir dir="${test.build.data}"/>
    <delete dir="${test.log.dir}"/>
    <mkdir dir="${test.log.dir}"/>
    <junit showoutput="${test.junit.output}"
      printsummary="${test.junit.printsummary}"
      haltonfailure="${test.junit.haltonfailure}"
      fork="yes"
      forkmode="${test.junit.fork.mode}"
      maxmemory="${test.junit.maxmemory}"
      dir="${basedir}" timeout="${test.junit.timeout}"
      errorProperty="tests.failed" failureProperty="tests.failed">
      <sysproperty key="test.build.data" value="${test.build.data}"/>
      <sysproperty key="hadoop.log.dir" value="${test.log.dir}"/>
      <classpath refid="test.classpath"/>
      <formatter type="${test.junit.output.format}" />
      <batchtest todir="${test.build.dir}" unless="testcase">
        <fileset dir="${test.src.dir}"
                 includes="**/${test.include}.java"
                 excludes="**/${test.exclude}.java" />
      </batchtest>
      <batchtest todir="${test.build.dir}" if="testcase">
        <fileset dir="${test.src.dir}" includes="**/${testcase}.java"/>
      </batchtest>
    </junit>
    <fail if="tests.failed">Tests failed!</fail>
  </target>

  <!-- ================================================================== -->
  <!-- D I S T R I B U T I O N                                            -->
  <!-- ================================================================== -->
  <target name="package" depends="compile, jar, test-jar"
	  description="Build distribution">
    <mkdir dir="${dist.dir}"/>
    <mkdir dir="${dist.dir}/lib"/>

    <copy todir="${dist.dir}/lib" includeEmptyDirs="false">
      <fileset dir="lib"/>
    </copy>

    <copy todir="${dist.dir}">
      <fileset file="${jar.file}"/>
      <fileset file="${test.jar.file}"/>
    </copy>
    
    <copy todir="${dist.dir}/conf">
      <fileset dir="${conf.dir}" excludes="**/*.template"/>
    </copy>

    <copy todir="${dist.dir}/ivy">
      <fileset dir="ivy"/>
    </copy>

    <copy todir="${dist.dir}">
      <fileset dir=".">
        <include name="*.txt" />
      </fileset>
    </copy>

    <copy todir="${dist.dir}/src" includeEmptyDirs="true">
      <fileset dir="src" excludes="**/*.template"/>
    </copy>
  	
    <copy todir="${dist.dir}/" file="build.xml"/>

  </target>

  <!-- ================================================================== -->
  <!-- Make release tarball                                               -->
  <!-- ================================================================== -->
  <target name="tar" depends="package" description="Make release tarball">
    <macro_tar param.destfile="${build.dir}/${final.name}.tar.gz">
      <param.listofitems>
        <tarfileset dir="${build.dir}" mode="664">
          <exclude name="${name}/bin/*" />
          <include name="${name}/**" />
        </tarfileset>
        <tarfileset dir="${build.dir}" mode="755">
          <include name="${name}/bin/*" />
        </tarfileset>
      </param.listofitems>
    </macro_tar>
  </target>

  <!-- ================================================================== -->
  <!-- target: resolve                                                    -->
  <!-- ================================================================== -->
  <target name="resolve" depends="clean-lib" description="--> resolve and retrieve dependencies with ivy">
    <mkdir dir="${lib.dir}"/> <!-- not usually necessary, ivy creates the directory IF there are dependencies -->
    	
    <!-- the call to resolve is not mandatory, retrieve makes an implicit call if we don't -->
    <ivy:resolve file="${ivy.dir}/${ivy.file}" conf="compile" log="download-only"/>
    <ivy:retrieve pattern="${lib.dir}/[artifact]-[revision](-[classifier]).[ext]" symlink="true" log="quiet" conf="compile"/> 

    <!-- copy the libs in lib-ext, which are not ivy enabled, should change in the future -->
    <copy todir="${lib.dir}/" failonerror="false">
      <fileset dir="${lib-ext.dir}" includes="**/*.jar"/>
    </copy>
  </target>
   
  <!-- ================================================================== -->
  <!-- target: resolve-test                                               -->
  <!-- ================================================================== -->
  <target name="resolve-test" depends="clean-lib" description="--> resolve and retrieve dependencies with ivy">
    <mkdir dir="${lib.dir}"/> <!-- not usually necessary, ivy creates the directory IF there are dependencies -->

    <!-- the call to resolve is not mandatory, retrieve makes an implicit call if we don't -->
    <ivy:resolve file="${ivy.dir}/${ivy.file}" conf="test" log="download-only"/>
    <ivy:retrieve pattern="${lib.dir}/[artifact]-[revision].[ext]" symlink="true" log="quiet" conf="test"/>

    <!-- copy the libs in lib-ext, which are not ivy enabled, should change in the future -->
    <copy todir="${lib.dir}/" failonerror="false">
      <fileset dir="${lib-ext.dir}" includes="**/*.jar"/>
    </copy>
  </target>	 

  <!-- ================================================================== -->
  <!-- target: report                                                     -->
  <!-- ================================================================== -->
  <target name="report" depends="resolve" description="--> generates a report of dependencies">
    <ivy:report todir="${build.dir}"/>
  </target>
        

  <!-- ================================================================== -->
  <!-- target: ivy-new-version                                            -->
  <!-- ================================================================== -->
  <target name="ivy-new-version" depends="" unless="ivy.new.revision">
    <!-- default module version prefix value -->
    <property name="module.version.prefix" value="${module.version.target}-dev-b" />
	
    <!-- asks to ivy an available version number -->
    <ivy:info file="${ivy.dir}/${ivy.file}" />
      <ivy:buildnumber organisation="${ivy.organisation}" module="${ivy.module}"
                       revision="${module.version.prefix}" defaultBuildNumber="1" revSep=""/>
  </target>

  <!-- ================================================================== -->
  <!-- target: local-version                                              -->
  <!-- ================================================================== -->
  <target name="local-version">
    <tstamp>
      <format property="now" pattern="yyyyMMddHHmmss"/>
    </tstamp>
    <property name="ivy.new.revision" value="${module.version.target}-local-${now}"/>
  </target>	

  <!-- ================================================================== -->
  <!-- target: version                                                    -->
  <!-- ================================================================== -->
  <target name="version" depends="ivy-new-version">
    <!-- create version file in classpath for later inclusion in jar -->
    <mkdir dir="${build.classes.dir}"/>
    <echo message="version=${ivy.new.revision}" file="${build.classes.dir}/${ant.project.name}.properties" append="false" />

    <!-- load generated version properties file -->
    <property file="${classes.dir}/${ant.project.name}.properties" />
  </target>

  <!-- ================================================================== -->
  <!-- target: publish                                                    -->
  <!-- ================================================================== -->
   <target name="publish" depends="version, clean-build, jar" description="--> publish this project in the ivy repository">
     <ivy:publish artifactspattern="${build.dir}/[artifact].[ext]" 
                  resolver="shared" 
                  pubrevision="${version}" 
                  status="release"/>

     <echo message="project ${ant.project.name} released with version ${version}" />
  </target>

  <!-- ================================================================== -->
  <!-- target: publish-local                                              -->
  <!-- ================================================================== -->
  <target name="publish-local" depends="local-version, jar" description="--> publish this project in the local ivy repository">
    <ivy:publish artifactspattern="${build.dir}/[artifact]-${version}.[ext]" 
    			        resolver="local"
    			        pubrevision="${version}"
				pubdate="${now}"
    			        status="integration"
    				forcedeliver="true"
    				overwrite="true"
                                conf="compile"
    	/>
    <echo message="project ${ant.project.name} published locally with version ${version}" />
  </target>

  <!-- ================================================================== -->
  <!-- target: publish-local-test                                         -->
  <!-- ================================================================== -->
  <target name="publish-local-test" depends="local-version, test-jar" description="--> publish this project in the local ivy repository">
    <ivy:publish artifactspattern="${build.dir}/[artifact]-${version}.[ext]"
                                resolver="local"
                                pubrevision="${version}"
                                pubdate="${now}"
                                status="integration"
                                forcedeliver="true"
                                overwrite="true"
        />
    <echo message="project ${ant.project.name} published locally with version ${version}" />
  </target>

  <!-- ================================================================== -->
  <!-- target: clean-local                                                -->
  <!-- ================================================================== -->
  <target name="clean-local" depends="" description="--> cleans the local repository for the current module">
    <ivy:info file="${ivy.dir}/${ivy.file}" />
      <delete dir="${ivy.local.default.root}/${ivy.organisation}/${ivy.module}"/>
  </target>

  <!-- ================================================================== -->
  <!-- target: clean-lib                                                  -->
  <!-- ================================================================== -->
  <target name="clean-lib" description="--> clean the project libraries directory (dependencies)">
    <delete includeemptydirs="true" dir="${lib.dir}"/>
  </target>

  <!-- ================================================================== -->
  <!-- target: clean-build                                                -->
  <!-- ================================================================== -->
  <target name="clean-build" description="--> clean the project built files">
    <delete includeemptydirs="true" dir="${build.dir}"/>
  </target>

  <!-- ================================================================== -->
  <!-- target: clean                                                      -->
  <!-- ================================================================== -->
  <target name="clean" depends="clean-build, clean-lib" description="--> clean the project" />

</project>
