<?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="Ant - Common">
    <dirname property="Ant - Common.dir" file="${ant.file.Ant - Common}"/>
    <import file="${Ant - Common.dir}/macros.xml"/>

    <property environment="env"/>
    <property name="src.dir" value="src"/>
    <property name="dtd.dir" value="dtd"/>
    <property name="lib.dir" value="lib"/>
    <property name="build.dir" value="build"/>

    <path id="test.class.path">
        <path refid="local.class.path"/>
        <pathelement location="config"/>
    </path>
    <filelist id="test.classes"/>

    <!-- ================================================================== -->
    <!-- Removes all created files and directories                          -->
    <!-- ================================================================== -->

    <target name="clean">
        <delete dir="${build.dir}"/>
    </target>

    <!-- ================================================================== -->
    <!-- Makes sure the needed directory structure is in place              -->
    <!-- ================================================================== -->

    <target name="prepare" depends="init">
        <mkdir dir="${build.dir}/classes"/>
        <mkdir dir="${build.dir}/lib"/>
    </target>

    <target name="prepare-docs" depends="init">
        <mkdir dir="${build.dir}/javadocs"/>
    </target>

    <target name="init"/>

    <if>
        <available file="${src.dir}"/>
        <then>
            <selector id="src-extra-set">
                <or>
                    <filename name="**/*.properties"/>
                    <filename name="**/*.groovy"/>
                    <filename name="**/*.xml"/>
                    <filename name="**/*.bsh"/>
                    <filename name="**/*.logic"/>
                    <filename name="**/*.js"/>
                    <filename name="**/*.js"/>
                    <filename name="**/*.jacl"/>
                    <filename name="**/*.py"/>
                    <filename name="META-INF/**"/>
                </or>
            </selector>
            <property name="src.extra.dir" value="${src.dir}"/>
        </then>            
        <else>
            <selector id="src-extra-set">
                <filename name="**" negate="true"/>
            </selector>
            <property name="src.extra.dir" value="."/>
        </else>
    </if>

    <!-- ================================================================== -->
    <!-- Compilation of the source files                                    -->
    <!-- ================================================================== -->

    <target name="classes" depends="prepare">
        <javac18/>
    </target>

    <target name="jar" depends="classes">
        <main-jar/>
    </target>

    <!-- ================================================================== -->
    <!-- Build JavaDoc                                                      -->
    <!-- ================================================================== -->

    <target name="docs" depends="prepare-docs">
        <default-javadoc/>
    </target>

    <macrodef name="run-junit">
        <attribute name="build.jar" default="${build.dir}/lib/${name}.jar"/>
        <attribute name="build-test.jar" default="${build.dir}/lib/${name}-test.jar"/>
        <sequential>
            <mkdir dir="${build.dir}/test-results"/>
            <junit fork="on" haltonfailure="on" forkmode="once" showoutput="on" printsummary="off">
                <classpath>
                    <path refid="junit.class.path"/>
                    <path refid="test.class.path"/>
                    <pathelement location="@{build.jar}"/>
                    <pathelement location="@{build-test.jar}"/>
                </classpath>
                <sysproperty key="ofbiz.home" value="${ofbiz.home.dir}"/>
                <formatter usefile="false" type="plain"/>
                <batchtest>
                    <filelist refid="test.classes"/>
                </batchtest>
            </junit>
        </sequential>
    </macrodef>

    <target name="tests" depends="jar">
        <run-junit/>
    </target>

    <target name="all" depends="jar,docs"/>
    
    <!-- ================================================================== -->
    <!-- Apply patches if exist                                             -->
    <!-- ================================================================== -->
    <!--
        This macro applies all patches found in ./patches/@{deployment} relative to ${ofbiz.home.dir}
        and stops the build process if patches fail (to save time deleting all the rejects)
        We use patch command here instead of svn patch because it's supposed to run in a server where patch is intalled in path
    -->
    <macrodef name="apply-patches">
        <attribute name="deployment" default="dev" />
        <sequential>
            <!-- patch task can't handle a fileset => create a global patch -->
            <if>
                <available file="patches"/>
                <then>          
                    <concat destfile="patches/@{deployment}.patch" encoding="UTF-8" outputencoding="UTF-8">
                        <!-- exclude the patch itself in case it's still there -->
                        <fileset dir="patches" includes="@{deployment}/*.patch"/>
                    </concat>
                    <patch strip="0" patchfile="patches/@{deployment}.patch" dir="${ofbiz.home.dir}" failonerror="true"/>
                    <delete>
                        <fileset dir="patches" includes="@{deployment}.patch"/>
                    </delete>
                </then>
            </if>
        </sequential>
    </macrodef>
    
    <target name="prepare-to-build-dev"
        description="Does everything needed to get you a ready to start building OFBiz for development. This include generic patches for OFBiz itself, not only hot-deploy components">
        <apply-patches deployment="dev" />
    </target>
    
    <target name="prepare-to-build-test"
        description="Does everything needed to get you a ready to start building OFBiz for integration testing">
        <apply-patches deployment="test" />
    </target>
    
    <target name="prepare-to-build-qa"
        description="Does everything needed to get you a ready to start building OFBiz in QA-Environment">
        <apply-patches deployment="qa" />
        
        <!-- need to use flatten here as qa dir might not exist and thus can't be included in "dir" -->
        <copy toDir="config/" overwrite="true" flatten="true">
            <fileset dir="patches" includes="qa/*.properties"/>
        </copy>
    </target>
    
    <target name="prepare-to-build-production"
        description="Does everything needed to get you a ready to start building OFBiz in production">
        <apply-patches deployment="production" />
        
        <!-- need to use flatten here as production dir might not exist and thus can't be included in "dir" -->
        <copy toDir="config/" overwrite="true" flatten="true">
            <fileset dir="patches" includes="production/*.properties"/>
        </copy>
        <!-- Some files might need to be deleted in production, notably some specific script files -->
        <!--exec executable="svn" dir="${ofbiz.home.dir}">
            <arg value="delete"/>
            <arg value="filename.sh"/>
        </exec-->
    </target>
    
    
</project>
