<?xml version="1.0" encoding="UTF-8"?>
<project name="estructuras_de_datos" default="all">
  
  
  <property file="estructuras_de_datos.properties"/>
  <!-- Uncomment the following property if no tests compilation is needed -->
  <!-- 
  <property name="skip.tests" value="true"/>
   -->
  
  <!-- Compiler options -->
  
  <property name="compiler.debug" value="on"/>
  <property name="compiler.generate.no.warnings" value="off"/>
  <property name="compiler.args" value=""/>
  <property name="compiler.max.memory" value="700m"/>
  <patternset id="ignored.files">
    <exclude name="**/*.hprof/**"/>
    <exclude name="**/*.pyc/**"/>
    <exclude name="**/*.pyo/**"/>
    <exclude name="**/*.rbc/**"/>
    <exclude name="**/*.yarb/**"/>
    <exclude name="**/*~/**"/>
    <exclude name="**/.DS_Store/**"/>
    <exclude name="**/.git/**"/>
    <exclude name="**/.hg/**"/>
    <exclude name="**/.svn/**"/>
    <exclude name="**/CVS/**"/>
    <exclude name="**/RCS/**"/>
    <exclude name="**/SCCS/**"/>
    <exclude name="**/__pycache__/**"/>
    <exclude name="**/_svn/**"/>
    <exclude name="**/rcs/**"/>
    <exclude name="**/vssver.scc/**"/>
    <exclude name="**/vssver2.scc/**"/>
  </patternset>
  <patternset id="library.patterns">
    <include name="*.egg"/>
    <include name="*.jar"/>
    <include name="*.ear"/>
    <include name="*.apk"/>
    <include name="*.swc"/>
    <include name="*.war"/>
    <include name="*.ane"/>
    <include name="*.zip"/>
  </patternset>
  <patternset id="compiler.resources">
    <exclude name="**/?*.java"/>
    <exclude name="**/?*.form"/>
    <exclude name="**/?*.class"/>
    <exclude name="**/?*.groovy"/>
    <exclude name="**/?*.scala"/>
    <exclude name="**/?*.flex"/>
    <exclude name="**/?*.kt"/>
    <exclude name="**/?*.clj"/>
  </patternset>
  
  <!-- JDK definitions -->
  
  <property name="jdk.bin.1.8" value="${jdk.home.1.8}/bin"/>
  <path id="jdk.classpath.1.8">
    <fileset dir="${jdk.home.1.8}">
      <include name="jre/lib/charsets.jar"/>
      <include name="jre/lib/deploy.jar"/>
      <include name="jre/lib/ext/cldrdata.jar"/>
      <include name="jre/lib/ext/dnsns.jar"/>
      <include name="jre/lib/ext/jaccess.jar"/>
      <include name="jre/lib/ext/jfxrt.jar"/>
      <include name="jre/lib/ext/localedata.jar"/>
      <include name="jre/lib/ext/nashorn.jar"/>
      <include name="jre/lib/ext/sunec.jar"/>
      <include name="jre/lib/ext/sunjce_provider.jar"/>
      <include name="jre/lib/ext/sunpkcs11.jar"/>
      <include name="jre/lib/ext/zipfs.jar"/>
      <include name="jre/lib/javaws.jar"/>
      <include name="jre/lib/jce.jar"/>
      <include name="jre/lib/jfr.jar"/>
      <include name="jre/lib/jfxswt.jar"/>
      <include name="jre/lib/jsse.jar"/>
      <include name="jre/lib/management-agent.jar"/>
      <include name="jre/lib/plugin.jar"/>
      <include name="jre/lib/resources.jar"/>
      <include name="jre/lib/rt.jar"/>
    </fileset>
  </path>
  
  <property name="project.jdk.home" value="${jdk.home.1.8}"/>
  <property name="project.jdk.bin" value="${jdk.bin.1.8}"/>
  <property name="project.jdk.classpath" value="jdk.classpath.1.8"/>
  
  
  <!-- Global Libraries -->
  
  <path id="library.dtjava.classpath">
    <pathelement location="/home/cromer/.IntelliJIdea2016.1/config/javascript/extLibs/http_java.com_js_dtjava.js"/>
  </path>
  <!-- Register Custom Compiler Taskdefs -->
  <property name="javac2.home" value="${idea.home}/lib"/>
  <path id="javac2.classpath">
    <pathelement location="${javac2.home}/javac2.jar"/>
    <pathelement location="${javac2.home}/jdom.jar"/>
    <pathelement location="${javac2.home}/asm-all.jar"/>
    <pathelement location="${javac2.home}/jgoodies-forms.jar"/>
  </path>
  <target name="register.custom.compilers">
    <taskdef name="javac2" classname="com.intellij.ant.Javac2" classpathref="javac2.classpath"/>
    <taskdef name="instrumentIdeaExtensions" classname="com.intellij.ant.InstrumentIdeaExtensions" classpathref="javac2.classpath"/>
  </target>
  
  <!-- Modules -->
  
  
  <!-- Module Estructuras de Datos -->
  
  <dirname property="module.estructuras_de_datos.basedir" file="${ant.file}"/>
  
  
  <property name="module.jdk.home.estructuras_de_datos" value="${jdk.home.1.8}"/>
  <property name="module.jdk.bin.estructuras_de_datos" value="${jdk.bin.1.8}"/>
  <property name="module.jdk.classpath.estructuras_de_datos" value="jdk.classpath.1.8"/>
  
  <property name="compiler.args.estructuras_de_datos" value="-encoding UTF-8 -source 8 -target 8 ${compiler.args}"/>
  
  <property name="estructuras_de_datos.output.dir" value="${module.estructuras_de_datos.basedir}/out/production/Estructuras de Datos"/>
  <property name="estructuras_de_datos.testoutput.dir" value="${module.estructuras_de_datos.basedir}/out/test/Estructuras de Datos"/>
  
  <path id="estructuras_de_datos.module.bootclasspath">
    <!-- Paths to be included in compilation bootclasspath -->
  </path>
  
  <path id="estructuras_de_datos.module.production.classpath">
    <path refid="${module.jdk.classpath.estructuras_de_datos}"/>
    <path refid="library.dtjava.classpath"/>
  </path>
  
  <path id="estructuras_de_datos.runtime.production.module.classpath">
    <pathelement location="${estructuras_de_datos.output.dir}"/>
    <path refid="library.dtjava.classpath"/>
  </path>
  
  <path id="estructuras_de_datos.module.classpath">
    <path refid="${module.jdk.classpath.estructuras_de_datos}"/>
    <pathelement location="${estructuras_de_datos.output.dir}"/>
    <path refid="library.dtjava.classpath"/>
  </path>
  
  <path id="estructuras_de_datos.runtime.module.classpath">
    <pathelement location="${estructuras_de_datos.testoutput.dir}"/>
    <pathelement location="${estructuras_de_datos.output.dir}"/>
    <path refid="library.dtjava.classpath"/>
  </path>
  
  
  <patternset id="excluded.from.module.estructuras_de_datos">
    <patternset refid="ignored.files"/>
  </patternset>
  
  <patternset id="excluded.from.compilation.estructuras_de_datos">
    <patternset refid="excluded.from.module.estructuras_de_datos"/>
  </patternset>
  
  <path id="estructuras_de_datos.module.sourcepath">
    <dirset dir="${module.estructuras_de_datos.basedir}">
      <include name="src"/>
    </dirset>
  </path>
  
  
  <target name="compile.module.estructuras_de_datos" depends="compile.module.estructuras_de_datos.production,compile.module.estructuras_de_datos.tests" description="Compile module Estructuras de Datos"/>
  
  <target name="compile.module.estructuras_de_datos.production" depends="register.custom.compilers" description="Compile module Estructuras de Datos; production classes">
    <mkdir dir="${estructuras_de_datos.output.dir}"/>
    <javac2 destdir="${estructuras_de_datos.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.estructuras_de_datos}/javac">
      <compilerarg line="${compiler.args.estructuras_de_datos}"/>
      <bootclasspath refid="estructuras_de_datos.module.bootclasspath"/>
      <classpath refid="estructuras_de_datos.module.production.classpath"/>
      <src refid="estructuras_de_datos.module.sourcepath"/>
      <patternset refid="excluded.from.compilation.estructuras_de_datos"/>
    </javac2>
    
    <copy todir="${estructuras_de_datos.output.dir}">
      <fileset dir="${module.estructuras_de_datos.basedir}/src">
        <patternset refid="compiler.resources"/>
        <type type="file"/>
      </fileset>
    </copy>
  </target>
  
  <target name="compile.module.estructuras_de_datos.tests" depends="register.custom.compilers,compile.module.estructuras_de_datos.production" description="compile module Estructuras de Datos; test classes" unless="skip.tests"/>
  
  <target name="clean.module.estructuras_de_datos" description="cleanup module">
    <delete dir="${estructuras_de_datos.output.dir}"/>
    <delete dir="${estructuras_de_datos.testoutput.dir}"/>
  </target>
  
  <target name="init" description="Build initialization">
    <!-- Perform any build initialization in this target -->
  </target>
  
  <target name="clean" depends="clean.module.estructuras_de_datos, clean.artifact.estructuras_de_datos" description="cleanup all"/>
  
  <target name="build.modules" depends="init, clean, compile.module.estructuras_de_datos" description="build all modules"/>
  
  <target name="init.artifacts">
    <property name="artifacts.temp.dir" value="${basedir}/__artifacts_temp"/>
    <property name="artifact.output.estructuras_de_datos" value="${basedir}/out/artifacts/Estructuras_de_Datos"/>
    <mkdir dir="${artifacts.temp.dir}"/>
    <property name="artifact.temp.output.Estructuras_de_Datos" value="${artifacts.temp.dir}/Estructuras_de_Datos.jar"/>
    <taskdef resource="com/sun/javafx/tools/ant/antlib.xml" uri="javafx:com.sun.javafx.tools.ant" classpath="${jdk.home.1.8}/lib/ant-javafx.jar"/>
  </target>
  
  <target name="clean.artifact.estructuras_de_datos" description="clean Estructuras de Datos artifact output">
    <delete dir="${artifact.output.estructuras_de_datos}"/>
  </target>
  
  <target name="artifact.estructuras_de_datos" depends="init.artifacts, compile.module.estructuras_de_datos" description="Build &#39;Estructuras de Datos&#39; artifact" xmlns:fx="javafx:com.sun.javafx.tools.ant">
    <mkdir dir="${artifact.output.estructuras_de_datos}"/>
    <copy todir="${artifact.temp.output.Estructuras_de_Datos}">
      <fileset dir="${estructuras_de_datos.output.dir}"/>
    </copy>
    <fx:fileset id="all_but_Estructuras_de_Datos" dir="${artifact.temp.output.Estructuras_de_Datos}" includes="**/*.jar">
      <exclude name="Estructuras_de_Datos.jar"/>
    </fx:fileset>
    <fx:fileset id="all_Estructuras_de_Datos" dir="${artifact.temp.output.Estructuras_de_Datos}" includes="**/*.jar"/>
    <fx:application id="Estructuras_de_Datos_id" name="Estructuras de Datos" mainClass="cl.cromer.estructuras.Main"/>
    <fx:jar destfile="${artifact.temp.output.Estructuras_de_Datos}/Estructuras_de_Datos.jar">
      <fx:application refid="Estructuras_de_Datos_id"/>
      <fileset dir="${artifact.temp.output.Estructuras_de_Datos}" excludes="**/*.jar"/>
      <fx:resources>
        <fx:fileset refid="all_but_Estructuras_de_Datos"/>
      </fx:resources>
      <manifest>
        <attribute name="Created-By" value="Chris Cromer"/>
        <attribute name="Class-Path" value="/cl/cromer/estructuras"/>
        <attribute name="Codebase" value="*.cromer.cl 127.0.0.1"/>
        <attribute name="Application-Name" value="Estructuras de Datos"/>
      </manifest>
    </fx:jar>
    <fx:deploy width="1024" height="768" updatemode="background" outdir="${artifact.temp.output.Estructuras_de_Datos}/deploy" outfile="Estructuras_de_Datos" nativeBundles="all">
      <fx:application refid="Estructuras_de_Datos_id"/>
      <fx:info title="Estructuras de Datos" vendor="Chris Cromer" description="Esta aplicación muestra varios tipos de estrucuras de datos visualmente."/>
      <fx:resources>
        <fx:fileset refid="all_Estructuras_de_Datos"/>
      </fx:resources>
    </fx:deploy>
    <copy todir="${artifact.output.estructuras_de_datos}">
      <fileset dir="${artifact.temp.output.Estructuras_de_Datos}/deploy"/>
    </copy>
    <delete includeemptydirs="true">
      <fileset dir="${artifact.temp.output.Estructuras_de_Datos}"/>
    </delete>
  </target>
  
  <target name="build.all.artifacts" depends="artifact.estructuras_de_datos" description="Build all artifacts">
    
    <!-- Delete temporary files -->
    <delete dir="${artifacts.temp.dir}"/>
  </target>
  
  <target name="all" depends="build.modules, build.all.artifacts" description="build all"/>
</project>