<?xml version="1.0"?>
<!--/*******************************************************************************
* 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 concatenated
*     e.g. 'runpathref'
*   - multi-word tasks (taskdef) names are concatenated
*     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:
*     tware - initial API and implementation
*     egwin - update to adopt calling standards
*     egwin - strip BND and compile code. File only needed for dev packaging now
#******************************************************************************/-->
<project name="org.eclipse.persistence.oracle.nosql" default="jar" basedir=".">
    <available file="../${ant.project.name}" type="dir" property="oracle.nosql.is.local"/>
    <!-- Test to make sure that the calling script doesn't inherit the variable -->
    <!-- (should be set locally, and be destroyed upon return) -->
    <fail message="Not running from '${ant.project.name}' directory" unless="oracle.nosql.is.local"/>

    <dirname  property="oracle.nosql.build.location_temp" file="${ant.file.org.eclipse.persistence.oracle.nosql}"/>
    <pathconvert targetos="unix" property="oracle.nosql.build.location">
        <path>
            <pathelement location="${oracle.nosql.build.location_temp}"/>
        </path>
    </pathconvert>
    <echo message="oracle.nosql.build.location = '${oracle.nosql.build.location}'"/>
    <condition property="oracle.nosql.2.base.dir" value="../.." else="..">
        <contains string="${oracle.nosql.build.location}" substring="foundation"/>
    </condition>
    <echo message="oracle.nosql.2.base.dir = '${oracle.nosql.2.base.dir}'"/>
    <property name="oracle.nosql.2.common.plugins.dir"     value="${oracle.nosql.2.base.dir}/plugins"/>

    <!-- local property overrides -->
    <condition property="custom.properties.message" value="Loading ${user.home}/build.properties..."
                                                     else="Custom properties file '${user.home}/build.properties' not found to load.">
        <available file="${user.home}/build.properties"/>
    </condition>
    <echo message="${custom.properties.message}"/>
    <property file="${user.home}/build.properties"/>
    <property file="${oracle.nosql.build.location}/antbuild.properties"/>

    <!-- Primary Targets: "jar" separate for dev use -->
    <target name="jar"   depends="package" description="package ${ant.project.name} component"/>

    <!-- initialize varables and paths needed for compile -->
    <!-- the number of properties needed now is too great for lazy loading without a target -->
    <target name="init">
        <property name="oracle.nosql.manifest.file"      value="${oracle.nosql.build.location}/META-INF/MANIFEST.MF"/>

        <!-- versioning -->
        <!-- These variables  are set in autobuild.xml. 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="svn.revision"          value="NA"/>
        <property name="version.qualifier"     value="qualifier"/>
        <property name="version.string"        value="${release.version}.${version.qualifier}"/>
        <property name="release.designation"   value="EclipseLink ${release.version} Build"/>
        <property name="specification.vendor"  value="Eclipse.org - EclipseLink Project"/>
        <property name="implementation.vendor" value="${specification.vendor}"/>

        <condition property="compiled_classes.dir" value="${classes.dir}" else="target/classes">
            <available file="${classes.dir}" type="dir"/>
        </condition>

        <available file="${compiled_classes.dir}" type="dir" property="classes.exist"/>
    </target>

    <!-- package -->
    <target name="package-src" depends="init" description="jar OSGI src bundle">
        <delete file="${oracle.nosql.2.common.plugins.dir}/${ant.project.name}.source_${version.string}.jar"/>
        <jar jarfile="${oracle.nosql.2.common.plugins.dir}/${ant.project.name}.source_${version.string}.jar" duplicate="preserve">
             <manifest>
                <attribute name="Specification-Vendor"   value="${specification.vendor}"/>
                <attribute name="Specification-Version"  value="${release.version}"/>
                <attribute name="Implementation-Vendor"  value="${implementation.vendor}"/>
                <attribute name="Implementation-Version" value="${version.string}"/>
                <attribute name="Bundle-ManifestVersion" value="2"/>
                <attribute name="Bundle-Name"            value="EclipseLink Oracle NoSQL Extensions Source"/>
                <attribute name="Bundle-SymbolicName"    value="${ant.project.name}.source"/>
                <attribute name="Bundle-Vendor"          value="${implementation.vendor}"/>
                <attribute name="Bundle-Version"         value="${version.string}"/>
                <attribute name="Eclipse-SourceBundle"   value="${ant.project.name};version=&quot;${version.string}&quot;"/>
            </manifest>
            <fileset dir="${oracle.nosql.2.base.dir}">
                <include name="about.html"/>
                <include name="readme.html"/>
                <include name="license.*"/>
            </fileset>
            <fileset dir="${src.dir}">
                <include name="org/eclipse/persistence/**/*.java"/>
            </fileset>
        </jar>
    </target>

    <target name="package" if="classes.exist" depends="init, package-src" description="jar OSGI bundle">
        <delete file="${oracle.nosql.2.common.plugins.dir}/${ant.project.name}_${version.string}.jar"/>
        <jar jarfile="${oracle.nosql.2.common.plugins.dir}/${ant.project.name}_${version.string}.jar" duplicate="preserve" manifest="${oracle.nosql.manifest.file}">
            <fileset dir="${oracle.nosql.2.base.dir}">
                <include name="about.html"/>
                <include name="readme.html"/>
                <include name="license.*"/>
            </fileset>
            <fileset dir="${compiled_classes.dir}">
                <include name="org/eclipse/persistence/**/*.class"/>
            </fileset>
        </jar>
    </target>

</project>
