<?xml version="1.0"?>
<!-- ============================================= -->
<!-- Adempiere Server Root                          -->
<!-- ============================================= -->
<!-- $Header: /cvs/adempiere/serverRoot/build.xml,v 1.4 2006/06/10 21:58:02 jjanke Exp $-->

<project name="adempiereRoot" default="main" basedir=".">

  <!--<property environment="env"/>-->
  <import file="../utils_dev/properties.xml"/>

  <property name="xdoclet.home" value="../tools" />
  <property name="xdoclet.force" value="false" />
  <property name="ejb.version" value="2.0" />

  <property name="src.dir" value="${basedir}/src"/>
  <property name="src.main.dir" value="${src.dir}/main"/>
  <property name="src.ear.dir" value="${src.dir}/ear"/>
  <property name="src.ejb.dir" value="${src.main.dir}/ejb"/>
  <property name="src.servlet.dir" value="${src.main.dir}/servlet"/>
  <property name="src.server.dir" value="${src.main.dir}/server"/>
  <property name="src.resources.dir" value="${src.dir}/resources"/>
  <property name="src.web.dir" value="${src.dir}/web"/>

  <property name="build.dir" value="${basedir}/build"/>
  <property name="build.tmp.dir" value="${build.dir}/tmp"/>
  <property name="build.deploy.dir" value="${build.dir}/deploy"/>
  <property name="build.classes.dir" value="${build.dir}/classes"/>
  <property name="build.war.dir" value="${build.dir}/war"/>

  <property name="interfaces.dir" value="../base"/>
  <property name="src.interfaces.dir" value="../base/src"/>


  <target name="adempiereRootInit">
    <echo message="=========== Build Server Root"/>

    <tstamp/>
    <uptodate property="interfaces.uptodate"
		targetfile="${interfaces.dir}/Interfaces.jar">
      <srcfiles dir="${src.ejb.dir}" includes="**/*.java"/>
      <srcfiles dir="${src.interfaces.dir}" includes="**/interfaces/*.java"/>
    </uptodate>
  	
  </target>


  <path id="xdoclet.path">
    <pathelement location="${xdoclet.home}/lib/ant.jar" />
    <pathelement location="${xdoclet.home}/lib/log4j.jar" />
    <pathelement location="${xdoclet.home}/lib/commons-logging.jar" />
    <pathelement location="${xdoclet.home}/lib/xdoclet-1.2.3.jar" />
    <pathelement location="${xdoclet.home}/lib/xdoclet-web-module-1.2.3.jar" />
    <pathelement location="${xdoclet.home}/lib/xdoclet-ejb-module-1.2.3.jar" />
    <pathelement location="${xdoclet.home}/lib/xjavadoc-1.1.jar" />
    <pathelement location="${xdoclet.home}/lib/xdoclet-xdoclet-module-1.2.3.jar" />
    <pathelement location="${xdoclet.home}/lib/xdoclet-jboss-module-1.2.3.jar" />
  	<pathelement location="${xdoclet.home}/lib/xdoclet-jmx-module-1.2.3.jar" />
    <pathelement location="${xdoclet.home}/lib/commons-collections-3.1.jar" />
  </path>

  <path id="base.path">
    <path refid="xdoclet.path"/>
    <pathelement location="../lib/Adempiere.jar" />
    <pathelement location="../lib/CSTools.jar" />
    <pathelement location="../tools/lib/j2ee.jar" />
	<pathelement location="../tools/lib/jnlp.jar" />
	<pathelement location="../tools/lib/servlet-api.jar" />
	<pathelement location="../tools/lib/mail.jar" />
	<pathelement location="../tools/lib/bsh-1.3.0.jar" />
	<pathelement location="../tools/lib/junit.jar" />
	<pathelement location="../lib/oracle.jar" />
	<pathelement location="../lib/jboss.jar" />
	<pathelement location="../lib/postgresql.jar" />
    <pathelement location="${build.classes.dir}" />
  </path>


  <!-- =================================================================== -->
  <!-- Generates the necessary EJB classes and deployment descriptors      -->
  <!-- =================================================================== -->
  <target name="adempiereRootXdoclet" depends="adempiereRootInit">
    <echo message="XDoclet=${xdoclet.home}"/>
    <echo message="UpToDate=${interfaces.uptodate}"/>
    
    <taskdef
	  name="ejbdoclet"
	  classname="xdoclet.modules.ejb.EjbDocletTask"
	  classpathref="base.path"/>

  	<delete file="${build.dir}/META-INF/jboss.xml"/>
    <ejbdoclet
	  destdir="${src.interfaces.dir}"
	  excludedTags="@version,@author"
	  ejbspec="${ejb.version}"
	  mergedir="${src.resources.dir}/xdoclet"
	  force="${xdoclet.force}">
      <fileset dir="${src.ejb.dir}">
        <include name="**/*Bean.java"/>
      </fileset>
      <packageSubstitution packages="session,entity" substituteWith="interfaces"/>
      <homeinterface/>
      <localinterface/>
      <localhomeinterface/>
      <remoteinterface/>
      <jboss 
      	securityDomain="java:/jaas/adempiere"
      	destdir="${build.dir}/META-INF"/>
      <deploymentdescriptor destdir="${build.dir}/META-INF"/>
    </ejbdoclet>
  	
  	<replace file="${build.dir}/META-INF/jboss.xml">
  		<replacetoken><![CDATA[<local-jndi-name>adempiere/ServerLocal</local-jndi-name>]]></replacetoken>
  		<replacevalue><![CDATA[
  			<local-jndi-name>adempiere/ServerLocal</local-jndi-name>
  			<invoker-bindings>
  			    <invoker>
  			        <invoker-proxy-binding-name>
  			            stateless-http-invoker
  			        </invoker-proxy-binding-name>
  			    </invoker>
  			</invoker-bindings>
  		]]></replacevalue>
  	</replace>
  	
  	<replace file="${build.dir}/META-INF/jboss.xml">
  		<replacetoken><![CDATA[<local-jndi-name>adempiere/StatusLocal</local-jndi-name>]]></replacetoken>
  		<replacevalue><![CDATA[
  			<local-jndi-name>adempiere/StatusLocal</local-jndi-name>
  			<invoker-bindings>
  			    <invoker>
  			        <invoker-proxy-binding-name>
  			            stateless-http-invoker
  			        </invoker-proxy-binding-name>
  			    </invoker>
  			</invoker-bindings>
  		]]></replacevalue>
  	</replace>
  </target>


  <!-- =========================================== -->
  <!-- Compiles the source code                    -->
  <!-- =========================================== -->
  <target name="adempiereRootCompile" depends="adempiereRootXdoclet">
    <mkdir dir="${build.classes.dir}"/>

    <!-- Compile interface -->
    <javac
	  destdir="${build.classes.dir}"
	  debug="on"
	  deprecation="off"
	  optimize="on"
        encoding="UTF-8"
	  classpathref="base.path">
      <src path="${src.interfaces.dir}"/>
	<include name="org/compiere/interfaces/*"/>
    </javac>

    <!--	Compile all -->
    <javac
	  destdir="${build.classes.dir}"
	  debug="on"
	  deprecation="off"
	  optimize="on"
      classpathref="base.path">
      <src path="${src.ejb.dir}"/>
      <src path="${src.servlet.dir}"/>
      <src path="${src.server.dir}"/>
    </javac>

  </target>


  <!-- =========================================== -->
  <!-- Creates the jar archives                    -->
  <!-- =========================================== -->
  <target name="adempiereRootJar" depends="adempiereRootCompile">
    <mkdir dir="${build.deploy.dir}"/>

    <!--	Jar -->
    <jar
	  jarfile="${build.deploy.dir}/adempiereRoot.jar">
      <fileset
	    dir="${build.classes.dir}">
      </fileset>
      <fileset
	    dir="${build.dir}"
	    includes="META-INF/**">
      </fileset>
      <manifest>
		<attribute name="Specification-Title" value="AdempiereRoot"/>
		<attribute name="Specification-Version" value="${env.ADEMPIERE_VERSION}"/>
		<attribute name="Specification-Vendor" value="Adempiere"/>
		<attribute name="Implementation-Title" value="AdempiereRoot ${env.ADEMPIERE_VERSION}"/>
		<attribute name="Implementation-Version" value="${env.ADEMPIERE_VERSION} ${DSTAMP}-${TSTAMP}"/>
		<attribute name="Implementation-Vendor" value="${env.ADEMPIERE_VENDOR}"/>
		<attribute name="Implementation-URL" value="http://www.adempiere.com"/>
		<attribute name="Class-Path" value="Adempiere.jar AdempiereSLib.jar"/>
      </manifest>
    </jar>

  </target>

  <!-- =========================================== -->
  <!-- Creates the war archives                    -->
  <!-- =========================================== -->
  <target name="adempiereRootWar" depends="adempiereRootJar">
    <war
	  warfile="${build.deploy.dir}/adempiereRootBase.war"
	  webxml="${src.web.dir}/WEB-INF/web.xml">
	  <!-- copy from web		-->
      <fileset dir="${src.web.dir}" excludes="**/web.xml,**/lib/**,**/classes/**"/>
      <!-- WEB-INF/lib			-->
      <lib dir="${src.web.dir}/WEB-INF/lib"/>
      <manifest>
		<attribute name="Specification-Title" value="AdempiereRootWar"/>
		<attribute name="Specification-Version" value="${env.ADEMPIERE_VERSION}"/>
		<attribute name="Specification-Vendor" value="Adempiere"/>
		<attribute name="Implementation-Title" value="AdempiereRootWar ${env.ADEMPIERE_VERSION}"/>
		<attribute name="Implementation-Version" value="${env.ADEMPIERE_VERSION} ${DSTAMP}-${TSTAMP}"/>
		<attribute name="Implementation-Vendor" value="${env.ADEMPIERE_VENDOR}"/>
		<attribute name="Implementation-URL" value="http://www.adempiere.com"/>
		<attribute name="Class-Path" value="Adempiere.jar AdempiereSLib.jar"/>
      </manifest>
    </war>
  </target>


  <!-- =========================================== -->
  <!-- Deploy Server Files		                   -->
  <!-- =========================================== -->
  <target name="adempiereRootDeployServer" depends="adempiereRootJar,adempiereRootWar,adempiereRootCompile">
	<copy todir="../lib">
		<fileset dir="${build.deploy.dir}"/>
	</copy>
	<copy file="${src.ear.dir}/application.xml" 
		tofile="../lib/adempiereRoot.xml"/>
  </target>


  <!-- =========================================== -->
  <!-- Creates the binary structure                -->
  <!-- =========================================== -->
  <target name="main" depends="adempiereRootDeployServer">
  </target>


  <!-- =========================================== -->
  <!-- Cleans up the current build                 -->
  <!-- =========================================== -->
  <target name="clean">
    <delete dir="${build.dir}" failonerror="false"/>
    <delete file="../lib/adempiereRootBase.war"/>
    <delete file="../lib/adempiereRoot.jar"/>
    <delete file="../lib/adempiereRoot.xml"/>
  </target>

</project>