<!--***********************************************************
 *
 * 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="Scripting Framework Java Examples" default="all" basedir=".">
  <!-- =================== Environmental Properties ======================= -->

  <property name="prj" value="../.."/>
  <property environment="env"/>
  <property name="outdir" value="${out}/class/examples/java"/>

  <!-- ==================== classpath setting ============================ -->
  <path id="idlclasspath">
    <pathelement location="${solar.jar}/unoil.jar"/>
    <pathelement location="${solar.jar}/jurt.jar"/>
    <pathelement location="${solar.jar}/juh.jar"/>
    <pathelement location="${solar.jar}/ridl.jar"/>
    <pathelement location="${out}/class/ScriptFramework.jar"/>
  </path>

  <!-- ===================== HelloWorld example =========================== -->
  <target name="HelloWorld">

    <mkdir dir="${outdir}/HelloWorld"/>

    <javac srcdir="HelloWorld" destdir="${outdir}/HelloWorld"
           includes="**/*.java" classpathref="idlclasspath" includeantruntime="false"
           debug="${debug}" optimize="${optimize}" deprecation="on"/>

    <copy file="HelloWorld/HelloWorld.java" todir="${outdir}/HelloWorld"/>
    <copy file="HelloWorld/parcel-descriptor.xml" todir="${outdir}/HelloWorld"/>

    <jar jarfile="${outdir}/HelloWorld/HelloWorld.jar"
         basedir="${outdir}/HelloWorld"
         includes="**/*.class"
         excludes="${outdir}/HelloWorld/HelloWorld.jar">
    </jar>

    <delete file="${outdir}/HelloWorld/HelloWorld.class"/>

  </target>

  <!-- ===================== Highlight example ========================== -->
  <target name="Highlight">

    <mkdir dir="${outdir}/Highlight"/>

    <javac srcdir="Highlight" destdir="${outdir}/Highlight"
           includes="**/*.java" classpathref="idlclasspath" includeantruntime="false"
           debug="${debug}" optimize="${optimize}" deprecation="on"/>

    <copy file="Highlight/HighlightText.java" todir="${outdir}/Highlight"/>
    <copy file="Highlight/parcel-descriptor.xml" todir="${outdir}/Highlight"/>

    <jar jarfile="${outdir}/Highlight/Highlight.jar"
         basedir="${outdir}/Highlight"
         includes="**/*.class"
         excludes="${outdir}/Highlight/Highlight.jar">
    </jar>

    <delete file="${outdir}/Highlight/HighlightText.class"/>

  </target>

  <!-- ===================== MemoryUsage example ========================== -->
  <target name="MemoryUsage">

    <mkdir dir="${outdir}/MemoryUsage"/>

    <javac srcdir="MemoryUsage" destdir="${outdir}/MemoryUsage"
           includes="**/*.java" classpathref="idlclasspath" includeantruntime="false"
           debug="${debug}" optimize="${optimize}" deprecation="on"/>

    <copy file="MemoryUsage/MemoryUsage.java" todir="${outdir}/MemoryUsage"/>
    <copy file="MemoryUsage/parcel-descriptor.xml" todir="${outdir}/MemoryUsage"/>

    <jar jarfile="${outdir}/MemoryUsage/MemoryUsage.jar"
         basedir="${outdir}/MemoryUsage"
         includes="**/*.class"
         excludes="${outdir}/MemoryUsage/MemoryUsage.jar">
    </jar>

    <delete file="${outdir}/MemoryUsage/MemoryUsage.class"/>

  </target>

  <!-- ===================== selector example ========================== -->
  <target name="selector">

    <mkdir dir="${outdir}/selector"/>

    <javac srcdir="selector" destdir="${outdir}/selector"
       	   includes="**/*.java" classpathref="idlclasspath"
	       debug="${debug}" optimize="${optimize}" deprecation="on"/>

    <copy todir="${outdir}/selector">
        <fileset dir="selector">
            <include name="**/*.java"/>
            <include name="*.xml"/>
            <include name="*.gif"/>
        </fileset>
    </copy>

    <jar jarfile="${outdir}/selector/selector.jar"
         basedir="${outdir}/selector" includes="*.class,*.gif">
    </jar>

    <delete>
        <fileset dir="${outdir}/selector" includes="*.class,*.gif"/>
    </delete>

  </target>

  <!-- ========================= All In One Build ======================= -->
  <target name="all" depends="HelloWorld,Highlight,MemoryUsage"/>

</project>
