<?xml version="1.0"?>

<project name="Testina" default="pack" basedir=".">


<!-- Init -->
   <target name="init">

      <property name="project.web.filename" value="testina" />
      <property name="project.ejb.filename" value="logicEJB" />
      <property name="project.app.filename" value="testina" />

      <property name="project.package" value="com/top/testina" />

      <property name="ejb.descriptor.filename" value="ejb-jar.xml" />
      <property name="jboss.ejb.descriptor.filename" value="jboss.xml" />
      <property name="web.descriptor.filename" value="web.xml" />
      <property name="jboss.web.descriptor.filename" value="jboss-web.xml" />
      <property name="app.descriptor.filename" value="application.xml" />

      <property name="jboss.home" value="C:\JavaSoft\jboss-3.0.2" />
      <property name="xdoclet.jar.path" value="C:\JavaSoft\xdoclet-1.1.2\lib\xdoclet.jar" />
      <property name="ant.jar.path" value="C:\JavaSoft\jakarta-ant-1.5\lib\ant.jar" />
      <property name="log4j.jar.path" value="C:\JavaSoft\xdoclet-1.1.2\samples\lib\log4j.jar" />


      <property name="src.java" value="src/java" />
      <property name="src.descriptors" value="src/descriptors" />
      <property name="src.xml.web" value="src/xml/web" />
      <property name="src.xml.tld" value="src/xml/tld" />
      <property name="src.xml.app" value="src/xml/app" />
      <property name="generate.xml" value="generate/xml" />
      <property name="generate.java" value="generate/java" />
      <property name="build" value="build" />
      <property name="pack" value="pack" />
      <property name="deploy" value="${jboss.home}/server/default/deploy" />
      <property name="view" value="view" />
      <property name="lib" value="lib" />

      <property name="web.package" value="${project.package}/web" />
      <property name="delegate.package" value="${project.package}/business/delegate" />
      <property name="ejb.package" value="${project.package}/business/ejb" />
      <property name="model.package" value="${project.package}/business/model" />


      <path id="project.class.path">
         <pathelement path="${java.class.path}"/>
         <fileset dir="lib">
            <include name="**/*.jar"/>
         </fileset>
         <pathelement path="${build}"/>
         <pathelement path="${xdoclet.jar.path}"/>
         <pathelement path="${log4j.jar.path}"/>
         <pathelement path="${ant.jar.path}"/>
      </path>

   </target>

<!-- Prepare -->
   <target name="prepare" depends="init">

      <mkdir dir="${generate.xml}" />
      <mkdir dir="${generate.java}" />

      <mkdir dir="${build}" />

      <mkdir dir="${pack}" />

      <mkdir dir="${pack}/ejb" />
      <mkdir dir="${pack}/web" />
      <mkdir dir="${pack}/j2ee" />

   </target>



<!-- Generate EJB interfaces and deployment descriptors -->
   <target name="doclet-ejb" depends="prepare">

      <taskdef name="ejbdoclet" 
               classname="xdoclet.ejb.EjbDocletTask" 
               classpathref="project.class.path" />

      <ejbdoclet sourcepath="${src.java}" 
                 destdir="${generate.java}"
                 classpathref="project.class.path"
                 excludedtags="@version,@author"
                 ejbspec="2.0">
         
         <fileset dir="${src.java}">
            <include name="${ejb.package}/**" />
         </fileset>

         <remoteinterface/>
         <homeinterface/>
         <deploymentdescriptor destdir="${generate.xml}" />
         <jboss version="3.0" destdir="${generate.xml}" />

      </ejbdoclet>

   </target>

<!-- Generate WEB deployment descriptors and classes -->
   <target name="doclet-web" depends="prepare">

      <taskdef name="webdoclet" 
               classname="xdoclet.web.WebDocletTask" 
               classpathref="project.class.path" />

      <webdoclet sourcepath="${src.java}"
                 destdir="${generate.xml}"
                 classpathref="project.class.path"
                 excludedtags="@version,@author">

         <fileset dir="${src.java}">
            <include name="${web.package}/**,${delegate.package}/**" />
         </fileset>
         
         <deploymentdescriptor/>

      </webdoclet>

   </target>



<!-- Build EJBs -->
   <target name="build-ejb" depends="doclet-ejb">

      <!-- Compile EJBs -->
      <javac srcdir="${src.java}:${generate.java}" destdir="${build}">
         <include name="${ejb.package}/**" />
         <include name="${model.package}/**" />
         <classpath refid="project.class.path"/>
      </javac>

   </target>

<!-- Build WEB -->
   <target name="build-web" depends="prepare">

      <!-- Compile web -->
      <javac srcdir="${src.java}" destdir="${build}">
         <include name="${web.package}/**" />
         <include name="${delegate.package}/**" />
         <classpath refid="project.class.path"/>
      </javac>

   </target>

<!-- Build Application -->
   <target name="build" depends="build-ejb,build-web" />



<!-- Pack EJB-JAR file -->
   <target name="pack-ejb" depends="build-ejb">

      <mkdir dir="${pack}/ejb/files" />
      <mkdir dir="${pack}/ejb/files/META-INF" />

      <copy todir="${pack}/ejb/files">
         <fileset dir="${build}" includes="${ejb.package}/**,${model.package}/**"/>
      </copy>
      <copy todir="${pack}/ejb/files/META-INF">
         <fileset dir="${generate.xml}"> 
            <include name="${ejb.descriptor.filename}" />
            <include name="${jboss.ejb.descriptor.filename}" />
         </fileset>
      </copy>

      <jar jarfile="${pack}/ejb/${project.ejb.filename}.jar" basedir="${pack}/ejb/files" />

      <delete dir="${pack}/ejb/files"/>

   </target>

<!-- Pack WAR file -->
   <target name="pack-web" depends="build-web">

      <mkdir dir="${pack}/web/files/WEB-INF" />
      <mkdir dir="${pack}/web/files/classes" />

      <copy file="${generate.xml}/${jboss.web.descriptor.filename}"
            tofile="${pack}/web/files/WEB-INF/${jboss.web.descriptor.filename}" />
      <copy todir="${pack}/web/files/WEB-INF">
         <fileset dir="${src.xml.tld}"/>
      </copy>
      <copy todir="${pack}/web/files/WEB-INF">
         <fileset dir="${src.xml.web}"/>
      </copy>
      <copy todir="${pack}/web/files/classes">
         <fileset dir="${build}" includes="${web.package}/**,${delegate.package}/**"/>
      </copy>

      <war destfile="${pack}/web/${project.web.filename}.war" 
           webxml="${generate.xml}/${web.descriptor.filename}">
         <fileset dir="${view}"/>
         <lib dir="${lib}"/>
         <classes dir="${pack}/web/files/classes"/>
         <webinf dir="${pack}/web/files/WEB-INF"/>
      </war>

      <delete dir="${pack}/web/files"/>

   </target>

<!-- Pack J2EE EAR file -->
   <target name="pack" depends="pack-web,pack-ejb">

      <mkdir dir="${pack}/j2ee/files" />

      <copy file="${pack}/ejb/${project.ejb.filename}.jar" 
            tofile="${pack}/j2ee/files/${project.ejb.filename}.jar" />
      <copy file="${pack}/web/${project.web.filename}.war" 
            tofile="${pack}/j2ee/files/${project.web.filename}.war" />

      <ear destfile="${pack}/j2ee/${project.app.filename}.ear"
           basedir="${pack}/j2ee/files"
           appxml="${src.xml.app}/application.xml">
      </ear>

      <delete dir="${pack}/j2ee/files"/>

   </target>



<!-- Deploy EJBs -->
   <target name="deploy-ejb" depends="pack-ejb">

      <copy file="${pack}/ejb/${project.ejb.filename}.jar" 
            tofile="${deploy}/${project.ejb.filename}.jar" />

   </target>

<!-- Deploy WEB -->
   <target name="deploy-web" depends="pack-web">

      <copy file="${pack}/web/${project.web.filename}.war" 
            tofile="${deploy}/${project.web.filename}.war" />

   </target>

<!-- Deploy J2EE Application -->
   <target name="deploy" depends="pack">

      <copy file="${pack}/j2ee/${project.app.filename}.ear" 
            tofile="${deploy}/${project.app.filename}.ear" />

   </target>

<!-- Redeploy J2EE Application (without packing) -->
   <target name="redeploy" depends="init">

      <copy file="${pack}/j2ee/${project.app.filename}.ear" 
            tofile="${deploy}/${project.app.filename}.ear" />

   </target>



<!-- Clean everything -->
   <target name="clean" depends="init">

      <delete dir="${generate}" />
      <delete dir="${build}" />
      <delete dir="${pack}" />

   </target>



</project>
