<!--/*******************************************************************************
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
*   Ant naming conventions:
*   - regardless of the actual OS platform,'/' is the directory separator
*     (Ant will convert as appropriate).
*   - multi-word properties use periods '.'
*     - properties ending in .jar define jarfile names only (no path)
*     - properties ending in .lib are fully qualified jars (path and filename)
*     - properties ending in .dir are directory paths
*     - properties ending in .path are path refid names (classpath fragments)
*   - multi-word targets use hyphens '-'
*     - targets beginning with test- are reserved for high level test targets,
*       and are used in test results parsing
*     - targets typically use the form <action>-<object>-<type> (ie. package-bundle-zip)
*   - multi-word macros use underscores '_'
*   - multi-word macro attributes are concatinated
*     e.g. 'runpathref'
*   - multi-word tasks (taskdef) names are concatinated
*     e.g. 'validateconnection'
*   - OS environment variables are in ALLCAPS and have 'env' as a prefix
*     e.g. ${env.XXX}.
*   - Ant properties are lower case.
*
* Contributors:
*     egwin  - initial implementation.
#******************************************************************************/-->
<!-- =============================================================================
*  General Comments
*  This buildfile contains:
*        - calls to the component builds to clean, compile, package and test thier bits
*        - calls to initiate component tests
*        - targets to generate the eclipselink tools installer
*        - targets to generate the javadocs
*  Used standalone it can generate Developer Builds of the entire product or subsets
*        of the product.
*================================================================================= -->
<!-- This ant project includes the following tasks:
        - build (default) : compiles all components and tests
        - clean : removes all build generated files
        - build-distribution : compiles and packages all jars, javadocs, installer
        - build-javadocs : generates Javadocs
        - package-installer-zip : builds installer
        - test-srg : runs all Short ReGression test suites
        - test-lrg : runs all Long ReGression test suites

        It may require some configuration of the build.properties to run.
    -->
<project name="eclipselink.tools.temp" default="build" basedir=".">

    <target name="build"              depends="init, build-tools, build-tools-test"                 description="Default ant target, compiles all components and tests"/>
    <target name="clean"              depends="init, clean-tools, clean-tools-test"                 description="Cleans all build generated files."/>
    <target name="build-distribution" depends="clean, build, build-javadocs, package-installer-zip" description="Builds all jars, generates javadoc, and builds installer."/>
    <target name="test-srg"           depends="init, test-tools-srg"                                description="Run the SRG test suites"/>
    <target name="test-lrg"           depends="init, test-tools"                                    description="Run the LRG test suites"/>

<!-- ================================================================================= -->
<!-- ===========================  Init Targets  ====================================== -->
    <target name="init">
        <dirname  property="tools.build.location_temp" file="${ant.file.eclipselink.tools.temp}"/>
        <pathconvert targetos="unix" property="tools.build.location">
            <path>
                <pathelement location="${tools.build.location_temp}"/>
            </path>
        </pathconvert>
        <echo message="tools.build.location = '${tools.build.location}'"/>
        <property environment="env"/>
        <echo message="env.JAVA_HOME   = '${env.JAVA_HOME}'"/>
        <echo message="env.ANT_HOME    = '${env.ANT_HOME}'"/>
        <echo message="env.JUNIT_HOME  = '${env.JUNIT_HOME}'"/>
        <echo message="env.MAVENANT_DIR= '${env.MAVENANT_DIR}'"/>
        <echo message="env.PATH        = '${env.PATH}'"/>
        <echo message="env.CLASSPATH   = '${env.CLASSPATH}'"/>
        <echo message="env.GIT_EXEC    = '${env.GIT_EXEC}'"/>
        <echo message="env.TARGET      = '${env.TARGET}'"/>
        <echo message=" "/>
        <!-- Allows a user to overide certain user specific properties. -->
        <echo message="user.home            = '${user.home}'"/>

        <!-- local property overrides -->
        <condition property="custom.properties.message" value="Loading ${user.home}/build.properties..."
                                                        else="Custom properties file '${user.home}/build.properties' not found. Skipping...">
            <available file="${user.home}/build.properties"/>
        </condition>
        <echo message="${custom.properties.message}"/>
        <property file="${user.home}/build.properties"/>

        <!-- default dependency jar location -->
        <condition property="extensions.depend.dir" value="${tools.build.location}/../extension.lib.external"
                                                    else="${tools.build.location}">
            <available file="${tools.build.location}/../extension.lib.external" type="dir"/>
        </condition>
        <echo message="extensions.depend.dir= '${extensions.depend.dir}'"/>

        <!-- helper definitions -->
        <property name="tools.root"           value="${tools.build.location}/tools"/>
        <property name="tools.mvn.parent"     value="${tools.root}/org.eclipse.persistence.tools.parent"/>
        <property name="tools.prefix"         value="eclipselink-tools"/>

        <!-- Versioning -->
        <!-- These variables are set in Hudson. A manual build gets defaults -->
        <tstamp>
           <format property="build.date" pattern="yyyyMMdd"/>
           <format property="build.time" pattern="HHmm"/>
        </tstamp>
        <property name="build.type" value="SNAPSHOT"/>
        <property name="git.hash"   value="NA"/>
        <condition property="version.qualifier" value="qualifier"
                                                else="v${build.date}-${git.hash}">
            <equals arg1="${git.hash}" arg2="NA"/>
        </condition>
        <property name="release.version"     value="2.6.0"/>
        <property name="version.string"      value="${release.version}.${version.qualifier}"/>
        <property name="release.designation" value="EclipseLink DeveloperBuild"/>
        <!-- generate string for tag creation (used for maven publish and handoff-version as well)  -->
        <condition property="milestone.tag" value="${release.version}">
            <equals arg1="${build.type}" arg2="RELEASE"/>
        </condition>
        <property name="milestone.tag" value="${release.version}-${build.type}"/>
        <echo message="milestone.tag        ='${milestone.tag}'"/>

        <!-- Javadoc properties -->
        <property name="javadoc.title" value="EclipseLink Tools ${release.version}, build '${version.qualifier}' API Reference"/>
        <property name="javadoc.dir" value="${tools.build.location}/tools/target/javadoc"/>
        <path id="javadoc.path">
            <pathelement path="${some.jar}"/>
        </path>

        <echo message="ANT_ARGS='${env.ANT_ARGS}'"/>
        <echo message="ANT_OPTS='${env.ANT_OPTS}'"/>
        <echo message=" "/>
        <echo message="java.version   ='${java.version}'"/>
        <echo message="java.class.path='${java.class.path}'"/>
        <echo message="os.name        ='${os.name}'"/>
        <echo message="os.arch        ='${os.arch}'"/>
        <echo message="os.version     ='${os.version}'"/>
        <echo message=" "/>
        <echo message="tools.root      ='${tools.root}'"/>
        <echo message="tools.mvn.parent='${tools.mvn.parent}'"/>
        <echo message="tools.prefix    ='${tools.prefix}'"/>
        <echo message=" "/>
        <echo message="builddate.buildtime='${build.date}.${build.time}'"/>
        <echo message="git.hash           ='${git.hash}'"/>
        <echo message="build.type         ='${build.type}'"/>
        <echo message="version.qualifier  ='${version.qualifier}'"/>
        <echo message="release.version    ='${release.version}'"/>
        <echo message="version.string     ='${version.string}'"/>
        <echo message="release.designation='${release.designation}'"/>
        <echo message=" "/>
        <echo message="javadoc.title ='${javadoc.title}'"/>
        <echo message="javadoc.dir   ='${javadoc.dir}'"/>
    </target>

    <!-- Needed for Maven/Tycho builds -->
    <target name="check-maven" description="Verify the Maven tool is installed and configured">
        <condition property="M2_HOME" value="${env.M2_HOME}">
                                      <!-- else="D:/apache-maven-3.0.4" -->
            <isset property="env.M2_HOME"/>
        </condition>
        <echo message="Maven install (M2_HOME) set to: '${M2_HOME}'"/>
        <available file="${M2_HOME}/bin/mvn" property="use.maven"/>
        <fail message="Maven 3 not found. Build won't run if Maven 3 not installed and M2_HOME properly set!." unless="use.maven"/>
    </target>

<!-- ================================================================================= -->
<!-- ===========================  Clean Targets  ===================================== -->
    <target name="clean-tools" depends="check-maven" description="Clean the maven built runtime projects">
        <java dir="${tools.mvn.parent}" fork="true" failonerror="true" classname="org.codehaus.plexus.classworlds.launcher.Launcher">
             <jvmarg value="-Dclassworlds.conf=${M2_HOME}/bin/m2.conf"/>
             <jvmarg value="-Dmaven.home=${M2_HOME}"/>
             <jvmarg value="-Dbuild.qualifier=${version.qualifier}"/>
             <arg value="clean"/>
             <classpath>
                <fileset dir="${M2_HOME}/boot">
                   <include name="plexus-classworlds-*.jar"/>
                </fileset>
             </classpath>
        </java>
        <echo message="Deleting: '${tools.root}/target/**/*'"/>
        <delete failonerror="false">
            <fileset dir="${tools.root}/target">
                <include name="**/*"/>
            </fileset>
        </delete>
        <echo message="Deleting old archives: '${tools.build.location}/${tools.prefix}*.zip'"/>
        <delete failonerror="false">
            <fileset dir="${tools.build.location}">
                <include name="${tools.prefix}*.zip"/>
            </fileset>
        </delete>
    </target>

    <!-- Placeholder for non-OSGi test targets -->
    <target name="clean-tools-test" description="Clean the testing projects">
        <echo message="clean-tools-test"/>
        <!-- ant antfile="antbuild.xml" dir=""           target="clean"/>
        <delete file="${eclipselink.tst.src.prefix}${eclipselink.zip.suffix}" failonerror="false"/ -->
    </target>

<!-- ================================================================================= -->
<!-- ===========================  Build Targets  ===================================== -->
    <!-- Compiles all runtime tools OSGi components. -->
    <target name="build-tools" depends="check-maven">
        <echo message="Launching Maven build with the following parameters:"/>
        <echo message="    -Dclassworlds.conf=${M2_HOME}/bin/m2.conf"/>
        <echo message="    -Dmaven.home=${M2_HOME}"/>
        <echo message="    -Dbuild.qualifier=${version.qualifier}"/>
        <echo message="    -DforceContextQualifier=${version.qualifier}"/>
        <echo message="    verify"/>
        <java dir="${tools.mvn.parent}" fork="true" failonerror="true" classname="org.codehaus.plexus.classworlds.launcher.Launcher">
             <jvmarg value="-Dclassworlds.conf=${M2_HOME}/bin/m2.conf"/>
             <jvmarg value="-Dmaven.home=${M2_HOME}"/>
             <jvmarg value="-Dbuild.qualifier=${version.qualifier}"/>
             <jvmarg value="-DforceContextQualifier=${version.qualifier}"/>
             <!-- arg value="-X"/ -->
             <arg value="verify"/>
             <classpath>
                <fileset dir="${M2_HOME}/boot">
                   <include name="plexus-classworlds-*.jar"/>
                </fileset>
             </classpath>
        </java>
    </target>

    <!-- Placeholder for non-OSGi tools compiles -->
    <!-- Compiles tests (excluding workbench, dbws-util and Oracle extensions). -->
    <target name="build-tools-test">
        <echo message="build-tools-test"/>
        <!-- ant antfile="antbuild.xml" dir="${eclipselink.core.test}"             target="build"/ -->
    </target>

<!-- ================================================================================= -->
<!-- ===========================  Javadoc Targets  =================================== -->
    <target name="build-javadocs">
        <!-- the following property needs to be here because the "qualifier" is generated at runtime -->
        <mkdir dir="${javadoc.dir}"/>
        <delete dir="${javadoc.dir}" failonerror="false"/>
        <javadoc
            maxmemory="384m"
            Verbose="false"
            packagenames="org.eclipse.persistence.**"
            destdir="${javadoc.dir}"
            useexternalfile="yes"
            additionalparam="-breakiterator -quiet"
            windowtitle="${javadoc.title}"
            >
            <classpath>
                <path refid="javadoc.path"/>
            </classpath>
            <tag name ="author" enabled="true" description="Author:" />
            <tag name ="since" scope="all" description="Since:" />
            <tag name ="SBGen" scope="all" description="SBGen:" />
            <tag name ="bug" enabled="true" description="Related Bugs:" />
            <doctitle><![CDATA[${javadoc.title}]]></doctitle>
            <header><![CDATA[${javadoc.title}]]></header>

            <!-- *** EclipseLink modules *** -->
            <fileset dir="${tools.build.location}/tools/org.eclipse.persistence.tools.db/src" defaultexcludes="yes">
                <include name="org/eclipse/persistence/tools/**/*.java"/>
                <exclude name="org/eclipse/persistence/tools/internal/**/*.java"/>
            </fileset>
            <fileset dir="${tools.build.location}/tools/org.eclipse.persistence.tools.gen.db/src" defaultexcludes="yes">
                <include name="org/eclipse/persistence/tools/**/*.java"/>
                <exclude name="org/eclipse/persistence/tools/internal/**/*.java"/>
            </fileset>
            <fileset dir="${tools.build.location}/tools/org.eclipse.persistence.tools.mapping/src" defaultexcludes="yes">
                <include name="org/eclipse/persistence/tools/**/*.java"/>
                <exclude name="org/eclipse/persistence/tools/internal/**/*.java"/>
            </fileset>
            <fileset dir="${tools.build.location}/tools/org.eclipse.persistence.tools.utility/src" defaultexcludes="yes">
                <include name="org/eclipse/persistence/tools/**/*.java"/>
                <exclude name="org/eclipse/persistence/tools/internal/**/*.java"/>
            </fileset>
            <fileset dir="${tools.build.location}/tools/org.eclipse.persistence.tools.gen.nosql/src" defaultexcludes="yes">
                <include name="org/eclipse/persistence/tools/**/*.java"/>
                <exclude name="org/eclipse/persistence/tools/internal/**/*.java"/>
            </fileset>
        </javadoc>
    </target>

<!-- ================================================================================= -->
<!-- ===========================  Package Targets  =================================== -->
    <!-- Packages javadoc into a zip. -->
    <target name="package-javadoc-zip" depends="build-javadocs" description="build EclipseLink javadoc zip">
        <delete file="${tools.prefix}-javadoc-${version.string}.zip" failonerror="false"/>
        <zip destfile="${tools.prefix}-javadoc-${version.string}.zip">
            <!-- miscellaneous files -->
            <zipfileset dir="${javadocs.dir}/"/>
        </zip>
    </target>

    <!-- Packages the installer zip. -->
    <target name="package-installer-zip" description="build EclipseLink Tools Installer zip">
        <delete file="${tools.prefix}-${version.string}.zip" failonerror="false"/>
        <zip destfile="${tools.prefix}-${version.string}.zip">
            <!-- miscellaneous files -->
            <zipfileset dir="${tools.mvn.parent}/resource">
                <include name="*.html"/>
            </zipfileset>
            <zipfileset dir=".">
                <include name="eclipselink-tools-javadoc-${version.string}.zip"/>
            </zipfileset>
            <!-- Library bundles -->
            <zipfileset dir="${tools.root}/target">
                <include name="*.jar"/>
                <exclude name="*.test*"/>
                <exclude name="*.parent*"/>
            </zipfileset>
            <!-- Testing bundles -->
            <zipfileset dir="${tools.root}/target" prefix="testing">
                <include name="*.test*"/>
            </zipfileset>
        </zip>
    </target>

<!-- ================================================================================= -->
<!-- ===========================  Test Targets  ====================================== -->
    <!-- Run core LRG. -->
    <target name="test-tools" description="run the LRG tests">
        <echo message="test-tools (LRG run)"/>
        <ant antfile="test.xml" dir="${tools.root}/org.eclipse.persistence.tools.utility.tests" target="run"/>
    </target>
    <!-- Run core SRG. -->
    <target name="test-tools-srg" description="run the SRG tests">
        <echo message="test-tools-srg (SRG run)"/>
        <ant antfile="test.xml" dir="${tools.root}/org.eclipse.persistence.tools.utility.tests" target="test-srg"/>
    </target>

<!-- ================================================================================= -->
<!-- ===========================  AutoBuild Targets  ================================= -->

    <target name="build-nightly" depends="get-git-hash, build-distribution, publish-distribution"   description="Setup for nightly, build, then export for promote"/>

<!-- ================================================================================= -->
<!-- ===========================  AutoBuild Init Targets  ============================ -->
    <target name="set-defaults">
        <!-- The following variables should be passed from Hudson:
                 env.JAVA_HOME   - JAVA_HOME as defined by Hudson
                 git.exec        - fully qualified path to git executable
                 build.deps.dir  - location on buildserver that stores dependencies (/shared/rt/eclipselink/bld_deps/master)
                 junit.dir       - directory where junit.jar can be found
                 junit.lib       - fully qualified path to junit jarfile (junit.dir/junit.jarname)
                 build.tool.root - root of build server (from here releng and db data files can be found)
                 hudson.workspace- WORKSPACE as defined by the Hudson slave
                 M2_HOME         - location of Maven3 install (on build server)
        -->
        <property name="branch" value="master"/>
        <condition property="git.exec.message"   value="git.exec        = '${git.exec}' (Set by Hudson Job)"
                                                  else="git.exec        = not set!">
            <isset property="git.exec"/>
        </condition>

        <!-- property file="${build.tool.root}/db-${branch}.properties"/ -->

        <!-- M2_HOME defaults the value maven 3.0.3 install location on the build -->
        <!--   server for AutoBuilds. This is brittle, but easier for now         -->
        <property name="M2_HOME" value="/shared/common/apache-maven-3.0.3"/>
        <!-- Set location of executed scripts to hudson (is also set in promote-init for milestone publising) -->
        <property name="script.dir" value="${hudson.workspace}/buildsystem"/>
        <!-- Set location to export builds for publishing -->
        <property name="extract.root.dir"  value="${build.tool.root}/exported_builds"/>

        <echo message=" "/>
        <echo message="${git.exec.message}"/>
        <echo message="build.deps.dir  = '${build.deps.dir}'"/>
        <echo message="build.tool.root = '${build.tool.root}'"/>
        <echo message="hudson.workspace= '${hudson.workspace}'"/>
        <echo message="M2_HOME         = '${M2_HOME}'"/>
        <echo message=" "/>
        <echo message="branch          = '${branch}'"/>
        <echo message="extract.root.dir= '${extract.root.dir}'"/>
    </target>

    <target name="get-git-hash" unless="git.hash" depends="set-defaults">
        <fail message="${git.exec.message}" unless="git.exec"/>
        <!-- get git.hash    NOTE: if "get" fails defaulted to "NA" -->
        <exec outputproperty="git.hash"
            failonerror="false"
            failifexecutionfails="false"
            errorproperty="githash.failed"
            logError="true"
            executable="${git.exec}">
            <arg value="log"/>
            <arg value="-1"/>
            <arg value="--format=%h"/>
        </exec>
        <property name="git.hash" value="NA"/>
    </target>

<!-- ================================================================================= -->
<!-- ===========================  AutoBuild Publish Targets  ========================= -->

    <target name="cannot-generate-handoff" unless="procedure" depends="init">
        <fail message="'procedure' not set. Cannot generate handoff file!"/>
    </target>
    <target name="generate-handoff" if="procedure" depends="cannot-generate-handoff" description="generate the publishing handoff file">
        <property name="handoff.file" value="${build.tool.root}/handoff-file-${procedure}-${branch}-${version.qualifier}.dat"/>
        <echo message="Generating Publishing handoff file with the following values:"/>
        <echo message="    procedure    ='${procedure}'"/>
        <echo message="    extract.loc  ='${extract.loc}'"/>
        <echo message="    host         ='${host}'"/>
        <echo message="    milestone.tag='${milestone.tag}'"/>
        <echo message="    handoff.file ='${handoff.file}'"/>

        <echo message="extract.loc=${extract.loc} host=${host} maven.tag=${milestone.tag}" file="${handoff.file}" append="false"/>
        <!-- could use ${line.separator} to generate on separate lines, but don't as yet -->
    </target>

    <target name="publish-distribution" depends="build-distribution">
        <echo message="publish-distribution"/>
        <property name="tools.extract.dir" value="${extract.root.dir}/tools/${release.version}/${version.qualifier}"/>
        <mkdir dir="${tools.extract.dir}"/>
        <echo message="Exporting Tools artifacts..."/>
        <echo message="   from '${hudson.workspace}'"/>
        <echo message="     to '${tools.extract.dir}'"/>
        <copy todir="${tools.extract.dir}" failonerror="false">
            <fileset  dir="${hudson.workspace}">
                <include name="${tools.prefix}*${version.qualifier}.zip"/>
            </fileset>
        </copy>
        <!-- Generate proper handoff file -->
        <antcall target="generate-handoff">
            <param name="procedure"   value="tools"/>
            <param name="host"        value="Eclipse"/>
            <param name="extract.loc" value="${tools.extract.dir}"/>
        </antcall>
    </target>

</project>
