<?xml version="1.0"?>

<!--

Build file for 'hello-planet', a sample J2EE application which is part of the
Orion Primer. See http://www.jollem.com/orion-primer/ for this Orion tutorial.

Version: $Revision: 1.1 $ $Date: 2005/02/07 14:55:46 $
Author:  Ernst de Haan

-->

<project name="hello-planet" default="ear" basedir=".">


   <!-- ================================================================== -->
   <!-- Initialization of all property settings                            -->
   <!-- ================================================================== -->

   <target name="init">
      <property name="name"           value="hello-planet"     />
      <property name="src.dir"        value="src"              />
      <property name="etc.dir"        value="etc"              />
      <property name="lib.dir"        value="lib"              />
      <property name="build.dir"      value="build"            />
      <property name="orion.dir"      value="/usr/local/orion1.5.2" />
      <property name="build.compiler" value="classic"          />

      <property name="ejb.jar"        value="${orion.dir}/ejb.jar"   />
      <property name="jndi.jar"       value="${orion.dir}/jndi.jar"  />
      <property name="orion.jar"      value="${orion.dir}/orion.jar" />

      <property name="ejb-classes.dest" value="${lib.dir}/ejb"                 />
      <property name="web-classes.dest" value="${lib.dir}/web/WEB-INF/classes" />

      <property name="ejb.classpath" value="${ejb.jar}"                                              />
      <property name="web.classpath" value="${ejb-classes.dest}:${ejb.jar}:${jndi.jar}:${orion.jar}" />

      <property name="pkg-dist.name"     value="${name}-pkg" />

      <property name="deploy.ormi"     value=""/>
      <property name="deploy.username" value=""/>
      <property name="deploy.password" value=""/>
   </target>


   <!-- ================================================================== -->
   <!-- Removes all created files and directories                          -->
   <!-- ================================================================== -->

   <target name="clean" depends="init">
      <delete dir="${lib.dir}" />
      <delete dir="${build.dir}" />
   </target>


   <!-- ================================================================== -->
   <!-- Makes sure the needed directory structure is in place              -->
   <!-- ================================================================== -->

   <target name="prepare" depends="init">
      <mkdir dir="${lib.dir}" />
      <mkdir dir="${lib.dir}/ejb" />
      <mkdir dir="${lib.dir}/ejb/META-INF" />
      <mkdir dir="${lib.dir}/web" />
      <mkdir dir="${lib.dir}/web/WEB-INF" />
      <mkdir dir="${lib.dir}/web/WEB-INF/classes" />
      <mkdir dir="${lib.dir}/j2ee" />
      <mkdir dir="${lib.dir}/META-INF" />
      <mkdir dir="${build.dir}" />
   </target>


   <!-- ================================================================== -->
   <!-- Compilation of the EJB part of the application                     -->
   <!-- ================================================================== -->

   <target name="ejb-classes" depends="prepare">
      <javac srcdir="${src.dir}"
             destdir="${ejb-classes.dest}"
             includes="java/hello/ejb/**"
             classpath="${ejb.classpath}" />
   </target>

   <target name="ejb-meta-inf" depends="prepare">
      <copy file="${etc.dir}/ejb-jar.xml"
            tofile="${lib.dir}/ejb/META-INF/ejb-jar.xml" />
   </target>

   <target name="ejb-jar" depends="ejb-classes,ejb-meta-inf">
      <jar jarfile="${build.dir}/${name}-ejb.jar"
           basedir="${lib.dir}/ejb" />
   </target>


   <!-- ================================================================== -->
   <!-- Compilation of the web part of the application                     -->
   <!-- ================================================================== -->

   <target name="web-classes" depends="prepare">
      <javac srcdir="${src.dir}"
             destdir="${lib.dir}/web/WEB-INF/classes"
             includes="java/hello/web/**"
             classpath="${web.classpath}" />
   </target>

   <target name="web-web-inf" depends="prepare">
      <copy file="${etc.dir}/web.xml"
            tofile="${lib.dir}/web/WEB-INF/web.xml" />
   </target>

   <target name="war" depends="web-classes,web-web-inf">
      <jar jarfile="${build.dir}/${name}-web.war"
           basedir="${lib.dir}/web" />
   </target>


   <!-- ================================================================== -->
   <!-- Compilation of the complete J2EE application (both web and EJB)    -->
   <!-- ================================================================== -->

   <target name="j2ee-meta-inf" depends="prepare">
      <copy file="${etc.dir}/application.xml"
            tofile="${lib.dir}/j2ee/META-INF/application.xml" />
   </target>

   <target name="ear" depends="ejb-jar,war,j2ee-meta-inf">
      <copy file="${build.dir}/${name}-ejb.jar"
            tofile="${lib.dir}/j2ee/${name}-ejb.jar" />
      <copy file="${build.dir}/${name}-web.war"
            tofile="${lib.dir}/j2ee/${name}-web.war" />
      <jar jarfile="${build.dir}/${name}.ear"
           basedir="${lib.dir}/j2ee" />
   </target>


   <!-- ================================================================== -->
   <!-- Generates a GZip'ed tar source distribution                        -->
   <!-- ================================================================== -->

   <target name="pkg-dist" depends="prepare">

      <mkdir dir="${build.dir}/${name}" />

      <copy todir="${build.dir}/${name}">
         <fileset dir="." includes="${src.dir}/java/**" />
         <fileset dir="." includes="${etc.dir}/**" />
         <fileset dir="." includes="build.xml" />
      </copy>

      <tar tarfile="${build.dir}/${pkg-dist.name}.tar"
           basedir="${build.dir}"
           includes="${name}/**" />

      <gzip src="${build.dir}/${pkg-dist.name}.tar"
            zipfile="${build.dir}/${pkg-dist.name}.tar.gz" />

      <delete file="${build.dir}/${pkg-dist.name}.tar" />

      <zip zipfile="${build.dir}/${pkg-dist.name}.zip"
           basedir="${build.dir}"
           includes="${name}/**" />

      <delete dir="${build.dir}/${name}" />
   </target>


   <!-- ================================================================== -->
   <!-- Generate as many files as you can!             ;-)                 -->
   <!-- ================================================================== -->

   <target name="all" depends="ear,pkg-dist" />


   <!-- ================================================================== -->
   <!-- Deploy the application                                             -->
   <!-- ================================================================== -->

   <target name="deploy" depends="all">
      <java classname="com.evermind.client.orion.OrionConsoleAdmin" fork="yes">
         <arg value="${deploy.ormi}" />
         <arg value="${deploy.username}" />
         <arg value="${deploy.password}" />
         <arg value="-deploy" />
         <arg value="-file" />
         <arg value="${build.dir}/${name}.ear" />
         <arg value="-deploymentName" />
         <arg value="${name}" />
         <classpath>
            <pathelement location="${orion.jar}" />
            <pathelement location="${ejb.jar}" />
            <pathelement location="${jndi.jar}" />
         </classpath>
      </java>
   </target>

</project>
