<?xml version="1.0">
<!--
  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="common" 
         xmlns:ivy="antlib:org.apache.ivy.ant">
    
    <dirname property="common.dir" file="${ant.file.common}"/>
    <property file="${common.dir}/build.properties"/>

    <path id="lib.path.id">
        <fileset dir="${deps.dir}" />
    </path>

    <path id="sigil.path.id">
        <path refid="lib.path.id" />
        <path location="${classes.dir}" />
    </path>

    <!-- setup ivy default configuration with some custom info -->
    <property name="ivy.local.default.root" value="${repository.dir}/local"/>
    <property name="ivy.shared.default.root" value="${repository.dir}/shared"/>

    <!-- ================================= 
          target: load-ivy
         ================================= -->
    <target name="load-ivy" depends="ivy-taskdefs">
	<ivy:settings file="${common.dir}/ivysettings.xml" />
    </target>

    <!-- ================================= 
          target: ivy-taskdefs
         ================================= -->
    <target name="ivy-taskdefs" unless="ivy.loaded">
    	<property name="ivy.loaded" value="true"/>
	<echo message="Loading Ivy ... common.dir=${common.dir}"/>

    	<taskdef resource="org/apache/ivy/ant/antlib.xml"
    	         uri="antlib:org.apache.ivy.ant"
		 classpath="${ivy.jar}"/>

	<taskdef name="sigil.bundle"
		 classname="oorg.apache.felix.sigil.ant.BundleTask"
		 classpath="${sigil-ivy-plugin.jar}"/>
    </target>    



    <!-- ================================= 
          target: build (default target)
         ================================= -->
    <target name="build" depends="ident, jar, resources" />

    <target name="ident">
      <echo message="${ant.project.name}"/>
    </target>

    <!-- ================================= 
          target: resolve              
         ================================= -->
    <target name="resolve" depends="load-ivy, clean-deps"
    	description="--> resolve and retrieve dependencies with ivy">
	<mkdir dir="${deps.dir}"/>
    	<ivy:resolve file="${ivy.file}"/>
    	<ivy:retrieve pattern="${deps.dir}/[artifact].[ext]" />
    </target>

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

    <target name="install-version">
	<tstamp>
	    <format property="now" pattern="yyyyMMddHHmmss"/>
	</tstamp>
        <property name="version"
	      value="${module.version.target}-local-${now}"/>
    </target>
    
    <!-- ================================= 
          target: report              
         ================================= -->
    <target name="report" depends="resolve"
    	description="--> generates a report of dependencies">
        <ivy:report todir="${build.dir}"/>
    </target>
    
    <!-- ================================= 
          target: compile              
         ================================= -->
    <target name="compile" depends="resolve"
    	description="--> compile the project">
        <mkdir dir="${classes.dir}" />
        <javac srcdir="${src.dir}"
		destdir="${classes.dir}"
		classpathref="lib.path.id"
		target="1.5"
		debug="true" />
    </target>
    
    <!-- ================================= 
          target: jar              
         ================================= -->
    <target name="jar" depends="compile"
    	description="--> make a jar file for this project">
	<mkdir dir="${dest.lib.dir}"/>
        <sigil.bundle destpattern="${dest.lib.dir}/[id].[ext]"
                classpathref="sigil.path.id"/>
    </target>

    <!-- ================================= 
          target: resources              
         ================================= -->
    <available file="${resource.dir}" type="dir"
               property="resource.dir.present"/>

    <target name="resources" if="resource.dir.present"
    	description="--> filter xml resources replacing ${VERSION} etc.">
	<mkdir dir="${dest.etc.dir}"/>
	<copy todir="${dest.etc.dir}">
	  <fileset dir="${resource.dir}">
	    <include name="*.composite"/>
	    <include name="*.system"/>
	  </fileset>
	  <filterset begintoken="$${" endtoken="}">
	    <filter token="VERSION" value="${bundle.version}"/>
	    <filter token="BLITZ_VERSION" value="${blitz.version}"/>
	    <filter token="JINI_VERSION" value="${jini.version}"/>
	  </filterset>
	</copy>
    </target>

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

    <!-- ================================= 
      target: clean-deps              
     ================================= -->
    <target name="clean-deps"
    	description="--> clean the project libraries directory (dependencies)">
	<delete includeemptydirs="true" dir="${deps.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-deps"
    	description="--> clean the project" />


    <!-- ================================= 
          target: buildlist
         ================================= -->
    <fileset id="projects" dir="${basedir}" includes="**/build.xml"/>

    <target name="buildlist" depends="load-ivy">
      <ivy:buildlist reference="ordered-list"
		  onMissingDescriptor="skip">
	<fileset refid="projects"/>
      </ivy:buildlist>
    </target>

    <!-- ================================= 
          target: install-list
         ================================= -->
    <target name="install-list" depends="buildlist" 
	  description="--> compile, jar and install all projects in the right order">
      <subant target="install" buildpathref="ordered-list">
	<propertyset>
	  <propertyref name="ivy.loaded" />
	</propertyset>
      </subant>
    </target>

    <!-- ================================= 
          target: clean-list
         ================================= -->
    <target name="clean-list" depends="clean, buildlist"
	  description="--> clean all projects">
      <subant target="clean" buildpathref="ordered-list" />
    </target>

    <!-- ================================= 
          target: clean-all
         ================================= -->
    <target name="clean-all" depends="clean-list" 
    description="--> delete repository, ivy cache, and all projects">
      <delete dir="${repository.dir}"/>
      <ivy:cleancache />
    </target>

</project>
