<?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="downloads" default="main" basedir=".">

  <!-- 
      Notes:
          For Apache, the JARS must be removed from the repository.

          Licenses:
              commons-io (2.4) - Apache 2.0
              closure (9.2) - Apache 2.0
  -->

  <!-- this script supports the usingDownloadCache property and
       downloadCacheFolder property to cache downloads in the
       folder specified by downloadCacheFolder.  This can make
       a huge difference in future runs although there is some
       risk around caching bad downloads and/or needing to
       clean up the cache -->

  <property name="FALCONJX_HOME" location="${basedir}"/>

  <property name="lib.dir" value="${FALCONJX_HOME}/lib"/>
  <property name="download.dir" value="${FALCONJX_HOME}/in"/>

  <property file="${basedir}/local.properties"/>

  <property name="maven.search.url" value="http://search.maven.org/remotecontent?filepath="/>



  <!-- 
      Because the downloads requires a network connection and the JARs don't change very often, 
      they are each downloaded only if they don't already exist. 
  -->
  <target name="main" depends="prepare, all" description="Downloads all the required thirdparty JARs"/>
  
  <target name="prepare">
    <echo message="Making lib directory ${lib.dir}"/>
    <mkdir dir="${lib.dir}"/>
  </target>



  <!--
      Downloads
  -->

  <target name="all" description="Downloads and copies all dependencies to the lib directory.">
    <!--  args4j -->
    <property name="args4j.name" value="args4j"/>
    <property name="args4j.version" value="2.0.28"/>
    <!-- property name="args4j.version" value="2.0.16"/ -->
    <antcall target="download-dependency">
      <param name="name" value="${args4j.name}"/>
      <param name="src.server" value="${maven.search.url}"/>
      <param name="src.folder" value="args4j/args4j/${args4j.version}"/>
      <param name="src.filename" value="args4j-${args4j.version}.jar"/>
      <param name="src.checksum" value="e0593b60af743a63f9678399d275272a"/>
      <!-- param name="src.checksum" value="6571d69d142dd2a003c4ffae6138f0ee"/ --><!-- version 2.0.16 -->
      <param name="dest.folder" value=""/>
      <param name="dest.filename" value="${args4j.name}.jar"/>
    </antcall>

    <!--  closure -->
    <property name="closure.name" value="compiler"/>
    <property name="closure.version" value="20150609"/>
    <!-- property name="closure.version" value="20140625"/ -->
    <!-- property name="closure.version" value="20140508"/ -->
    <property name="closure.dest.folder" value="google/closure-compiler"/>
    <property name="closure.dest.filename" value="${closure.name}.jar"/>
    <antcall target="download-dependency-closure">
      <param name="name" value="${closure.name}"/>
      <param name="src.server" value="http://dl.google.com"/>
      <param name="src.folder" value="closure-compiler"/>
      <param name="src.filename" value="compiler-${closure.version}.zip"/>
      <param name="src.checksum" value="3a6ab9e470d57e827425d722cf12118e"/>
    </antcall>
    
    <!--  commons-io -->
    <property name="commons-io.name" value="commons-io"/>
    <property name="commons-io.version" value="2.4"/>
    <!-- property name="commons-io.version" value="2.0.1"/ -->
    <antcall target="download-dependency">
      <param name="name" value="${commons-io.name}"/>
      <param name="src.server" value="http://archive.apache.org"/>
      <param name="src.folder" value="dist/commons/io/binaries"/>
      <param name="src.filename" value="${commons-io.name}-${commons-io.version}-bin.tar.gz"/>
      <param name="src.checksum" value="50ce698bd6e33dc6f71570189df89c99"/>
      <!-- param name="src.checksum" value="89fef81c2adfa9b50a64ed5cd5d8c155"/ --><!-- version 2.0.1 -->
      <param name="src.jarPath" value="${commons-io.name}-${commons-io.version}/${commons-io.name}-${commons-io.version}.jar"/>
      <param name="dest.jarPath" value="${lib.dir}/${commons-io.name}.jar"/>
      <param name="dest.folder" value=""/>
      <param name="dest.filename" value="${commons-io.name}.jar"/>
    </antcall>
    <copy todir="${lib.dir}" failonerror="false" quiet="true">
      <fileset dir="${download.dir}/temp/${commons-io.name}-${commons-io.version}">
        <include name="LICENSE.txt"/>
      </fileset>
      <globmapper from="*" to="commons-io-*"/>
    </copy>

    <!--  guava -->
    <property name="guava.name" value="guava"/>
    <property name="guava.version" value="17.0"/>
    <!-- property name="guava.version" value="15.0"/ -->
    <antcall target="download-dependency">
      <param name="name" value="${guava.name}"/>
      <param name="src.server" value="${maven.search.url}"/>
      <param name="src.folder" value="com/google/guava/guava/${guava.version}"/>
      <param name="src.filename" value="guava-${guava.version}.jar"/>
      <param name="src.checksum" value="89fef81c2adfa9b50a64ed5cd5d8c155"/>
      <!-- param name="src.checksum" value="e0593b60af743a63f9678399d275272a"/ --><!-- version 2.0.16 -->
      <param name="dest.folder" value=""/>
      <param name="dest.filename" value="${guava.name}.jar"/>
    </antcall>

    <!--  org.json -->
    <property name="org.json.name" value="org.json"/>
    <property name="org.json.version" value="20131017"/>
    <!-- property name="org.json.version" value="20130213"/ -->
    <antcall target="download-dependency">
      <param name="name" value="${org.json.name}"/>
      <param name="src.server" value="${maven.search.url}"/>
      <param name="src.folder" value="org/codeartisans/org.json/${org.json.version}"/>
      <param name="src.filename" value="org.json-${org.json.version}.jar"/>
      <param name="src.checksum" value="f1aa9ffeda57b9117e79407acc860e74"/>
      <!-- param name="src.checksum" value="e0593b60af743a63f9678399d275272a"/ --><!-- version 20130213 -->
      <param name="dest.folder" value=""/>
      <param name="dest.filename" value="${org.json.name}.jar"/>
    </antcall>

    <!--  flex-tool-api -->
    <property name="flexToolApi.name" value="flex-tool-api"/>
    <property name="flexToolApi.version" value="1.0.0"/>
    <antcall target="download-dependency">
      <param name="name" value="${flexToolApi.name}"/>
      <param name="src.server" value="${maven.search.url}"/>
      <param name="src.folder" value="org/apache/flex/${flexToolApi.name}/${flexToolApi.version}"/>
      <param name="src.filename" value="${flexToolApi.name}-${flexToolApi.version}.jar"/>
      <param name="src.checksum" value="b8f76174b2c4d3b83e5c9fa78703c52b"/>
      <param name="dest.folder" value=""/>
      <param name="dest.filename" value="${flexToolApi.name}.jar"/>
      <param name="license.use.apache" value="true"/>
    </antcall>
  </target>



  <!--
      Utilities
  -->

  <target name="check-dependency" description="Checks if project jar is in lib directory.">
    <available file="${lib.dir}/${dest.folder}/${name}.jar" property="project.jar.exists"/>
  </target>

    <target name="check-dependency-closure" description="Checks if project jar is in lib directory.">
        <available file="${lib.dir}/${closure.dest.folder}/${closure.name}.jar" property="project.jar.exists"/>
    </target>

  <target name="echo-project-jar" if="installer">
    <echo file="${basedir}/project.properties">project.echo=${INFO_DOWNLOADING_FILE_FROM}</echo>
    <replace file="${basedir}/project.properties" token="{0}" value="${srcPath}"/>
    <replace file="${basedir}/project.properties" token="{1}" value="${srcDomain}"/>
    <property file="${basedir}/project.properties"/>
    <delete file="${basedir}/project.properties"/>
    <echo>${project.echo}</echo>
  </target>
  
  <target name="download-dependency" depends="check-dependency" unless="project.jar.exists" description="Downloads a jar + license to the lib directory.">
    <antcall target="echo-project-jar">
      <param name="srcDomain" value="${src.server}"/>
      <param name="srcPath" value="${src.folder}/${src.filename}"/>
    </antcall>
    <mkdir dir="${lib.dir}/${dest.folder}"/>

    <get src="http://www.apache.org/licenses/LICENSE-2.0" dest="${lib.dir}/${dest.folder}/${name}-LICENSE.txt"/>

    <condition property="project.download.jar">
      <contains string="${src.filename}" substring=".jar" />
    </condition>
    
    <antcall target="download-dependency-jar">
      <param name="server" value="${src.server}"/>
      <param name="folder" value="${src.folder}"/>
      <param name="srcFileName" value="${src.filename}"/>
      <param name="destJarFileName" value="${lib.dir}/${dest.folder}/${dest.filename}"/>
      <param name="checksum" value="${src.checksum}"/>
    </antcall>

    <antcall target="download-dependency-zip">
      <param name="server" value="${src.server}"/>
      <param name="folder" value="${src.folder}"/>
      <param name="srcFileName" value="${src.filename}"/>
      <param name="srcJarPath" value="${src.jarPath}"/>
      <param name="destJarPath" value="${dest.jarPath}"/>
      <param name="checksum" value="${src.checksum}"/>
    </antcall>
  </target>

  <target name="download-dependency-closure" depends="check-dependency-closure" unless="project.jar.exists" description="Downloads a jar to the lib directory.">
    <antcall target="echo-project-jar">
      <param name="srcDomain" value="${src.server}"/>
      <param name="srcPath" value="${src.folder}/${src.filename}"/>
    </antcall>
    <mkdir dir="${lib.dir}/${closure.dest.folder}"/>

    <antcall target="download-dependency-zip-closure">
      <param name="server" value="${src.server}"/>
      <param name="folder" value="${src.folder}"/>
      <param name="srcFileName" value="${src.filename}"/>
      <param name="checksum" value="${src.checksum}"/>
    </antcall>

    <copy file="${download.dir}/temp/${closure.name}.jar" toFile="${lib.dir}/${closure.dest.folder}/${closure.dest.filename}" verbose="true"/>
    <copy file="${download.dir}/temp/README.md" toFile="${lib.dir}/${closure.dest.folder}/README.md" verbose="true"/>

    <antcall target="unpack.externs.if.not.installer" />
  </target>
  
  <!-- no unjar task in ant_on_air yet, so do the unless test in this target so unjar doesn't get searched for -->
  <target name="unpack.externs.if.not.installer" unless="installer" >
      <antcall target="unpack.externs" />
  </target>
  
  <target name="unpack.externs">
    <mkdir dir="${download.dir}/temp/externs" />
    <unjar src="${lib.dir}/${closure.dest.folder}/${closure.dest.filename}"
           dest="${download.dir}/temp/externs">
           <patternset>
               <include name="externs.zip"/>
           </patternset>
    </unjar>
    <mkdir dir="${basedir}/../externs/js/externs" />
    <mkdir dir="${basedir}/../externs/jquery/externs" />
    <mkdir dir="${basedir}/../externs/jasmine/externs" />
    <unzip src="${download.dir}/temp/externs/externs.zip" dest="${basedir}/../externs/js/externs" />
    <get src="https://closureidl.googlecode.com/files/svg.js" dest="${basedir}/../externs/js/externs/svg.js"/>
    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/jquery-1.9.js" dest="${basedir}/../externs/jquery/externs/jquery-1.9.js"/>
    <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/jasmine-2.0.js" dest="${basedir}/../externs/jasmine/externs/jasmine-2.0.js"/>
  </target>

  <target name="download-dependency-jar" if="project.download.jar" description="Downloads a jar to the lib directory.">
    <antcall target="download-jar">
      <param name="srcDomain" value="${server}"/>
      <param name="srcFolder" value="${folder}"/>
      <param name="cacheFolder" value="${folder}"/>
      <param name="srcFile" value="${srcFileName}"/>
      <param name="destJarFile" value="${destJarFileName}"/>
      <param name="md5" value="${checksum}"/>
    </antcall>
  </target>

  <target name="download-dependency-zip" unless="project.download.jar" description="Downloads a zip to the lib directory.">
    <antcall target="download-zip">
      <param name="srcDomain" value="${server}"/>
      <param name="srcFolder" value="${folder}"/>
      <param name="srcFile" value="${srcFileName}"/>
      <param name="srcJarPath" value="${srcJarPath}"/>
      <param name="destJarFile" value="${destJarPath}"/>
      <param name="md5" value="${checksum}"/>
    </antcall>
  </target>

  <target name="download-dependency-zip-closure" unless="project.download.jar" description="Downloads a zip to the lib directory.">
    <antcall target="download-zip">
      <param name="srcDomain" value="${server}"/>
      <param name="srcFolder" value="${folder}"/>
      <param name="srcFile" value="${srcFileName}"/>
      <param name="md5" value="${checksum}"/>
    </antcall>
  </target>
    
  <!--
      Download a zip or gz file, extracts the jar file, and optionally copies the jar
      file to a different location and optinally verifies the checksum and optionally
      caches the file, and optionally pulls the file from the cache instead of downloading.  
      If the checksum fails, this script fails.

      Params are:
          srcDomain - the domain
          srcFolder - path to file
          srcFile - a .gz file for untar with gzip, else unzip
          [md5]
          [srcJarPath] - both src and dest required for the copy
          [destJarFile]

      Note: This is purposely coded without <if><else><then> so that a dependency on
      ant-contrib.jar isn't required.        
  -->
  <target name="download-zip" depends="check-cache" description="Downloads tar/zip, and optionally verifies checksum and copies extracted jar.">
    <mkdir dir="${download.dir}"/>
    <antcall target="get-if-not-cached">
      <param name="dest" value="${download.dir}/${srcFile}"/>
      <param name="message" value="Checksum mismatch for ${download.dir}/${srcFile}"/>
    </antcall>
    <antcall target="copy-if-cached">
      <param name="dest" value="${download.dir}/${srcFile}"/>
    </antcall>
    <condition property="zip.compressed">
      <matches string="${srcFile}" pattern="^*.zip$"/>
    </condition>
    <antcall target="untar-file"/>
    <antcall target="unzip-file"/>
    <condition property="destination.known">
      <and>
        <isset property="srcJarPath"/>
        <isset property="destJarFile"/>
      </and>
    </condition>
    <antcall target="copy-downloaded-jar"/>
  </target>

  <target name="download-bz2" depends="check-cache" description="Downloads bz2, and optionally verifies checksum and copies extracted jar.">
    <mkdir dir="${download.dir}"/>
    <antcall target="get-if-not-cached">
      <param name="dest" value="${download.dir}/${srcFile}"/>
      <param name="message" value="Checksum mismatch for ${download.dir}/${srcFile}"/>
    </antcall>
    <antcall target="copy-if-cached">
      <param name="dest" value="${download.dir}/${srcFile}"/>
    </antcall>
    <untar src="${download.dir}/${srcFile}" dest="${download.dir}/temp" compression="bzip2"/>
    <condition property="destination.known">
      <and>
        <isset property="srcJarPath"/>
        <isset property="destJarFile"/>
      </and>
    </condition>
    <antcall target="copy-downloaded-jar"/>
  </target>

  <!--
      Download a jar file and optionally verify the checksum.
      If the checksum fails, this script fails.
        
      Params are:
          srcDomain
          srcFolder
          srcFile
          destJarFile
          [md5]
  -->
  <target name="download-jar" depends="check-cache" description="Downloads jar, and optionally verifies checksum.">
    <antcall target="get-if-not-cached">
      <param name="dest" value="${destJarFile}"/>
      <param name="message" value="Checksum mismatch for ${destJarFile}"/>
    </antcall>
    <antcall target="copy-if-cached">
      <param name="dest" value="${destJarFile}"/>
    </antcall>
  </target>

  <target name="untar-file" unless="zip.compressed" description="Untars zipFile">
    <untar src="${download.dir}/${srcFile}" dest="${download.dir}/temp" compression="gzip"/>
  </target>

  <target name="unzip-file" if="zip.compressed" description="Unzips zipFile">
    <unzip src="${download.dir}/${srcFile}" dest="${download.dir}/temp"/>
  </target>

  <target name="get-if-not-cached" unless="found-in-cache">
    <get src="${srcDomain}/${srcFolder}/${srcFile}" dest="${dest}"/>
    <antcall target="check-sum">
      <param name="dest" value="${dest}"/>
      <param name="message" value="Checksum mismatch for ${dest}"/>
    </antcall>
    <antcall target="put-in-cache"/>
  </target>

  <target name="copy-if-cached" if="found-in-cache">
    <!-- this string comes from the FlexJS en_US.properties because for now, this
         target won't get called unless this script is called from the FlexJS install -->
    <echo>${INFO_USING_CACHED_FILE} ${downloadCacheFolder}/${srcFolder}/${srcFile}</echo>
    <copy file="${downloadCacheFolder}/${srcFolder}/${srcFile}" tofile="${dest}" overwrite="true"/>
  </target>

  <target name="check-cache" if="usingDownloadCache">
    <available file="${downloadCacheFolder}/${srcFolder}/${srcFile}" property="found-in-cache"/>
  </target>

  <target name="put-in-cache" if="usingDownloadCache">
    <copy tofile="${downloadCacheFolder}/${srcFolder}/${srcFile}" file="${dest}"/>
  </target>

  <target name="check-sum" if="md5" description="Verifies MD5 checksum, and fails if checksum doesn't match">
    <checksum file="${dest}" algorithm="MD5" verifyproperty="we.failed" property="${md5}"/>
    <fail message="${message}">
      <condition>
        <equals arg1="${we.failed}" arg2="false"/>
      </condition>
    </fail>
  </target>

  <target name="copy-downloaded-jar" if="destination.known">
    <mkdir dir="${lib.dir}"/>
    <copy file="${download.dir}/temp/${srcJarPath}" toFile="${destJarFile}" verbose="true"/>
  </target>

  <target name="fail-with-message" if="we.failed" description="Conditionally fails with the specified message">
    <fail message="${message}"/>
  </target>



  <!--
      Cleanup
  -->
  <target name="clean" description="Removes thirdparty downloads.">
    <delete failonerror="false" includeEmptyDirs="true">
      <fileset dir="${download.dir}"/>
    </delete>
  </target>
    
</project>
