
<!-- ===================================================================

   Build file for PRM - for use with the Jakarta Ant java build tool
   Requires Ant 1.5 or greater

Build Instructions:
   To build, run
     build.bat - optionally with a target arg as indicated below -
                 in the directory where this file is located.

   The batch/shell file sets up your classpath and calls java org.apache.tools.ant.Main

Authors:
  Tim Morrow <tim@project.net>

   $Id: build.xml,v 1.80.2.14 2004/01/17 00:43:54 tim Exp $

==================================================================== -->

<project name="prm" default="build">

  <!-- Print Usage of this build file -->
  <target name="usage">
    <echo>
build [target]

Where target is one of the following:
-------------------
Compilation Targets
-------------------
  build               (default) compiles, builds and copies all files
  compile             compiles java sources, jsp sources and pnet patch to
                        output directories
  compile-java        compiles java classes in the following packages:
                        com, pnet, net.project
  compile-jsp         compiles jsp sources only
  compile-java-com    compiles java com.* classes only (including rmi classes)
  compile-java-pnet   compiles java pnet.* classes only
  compile-java-net    compiles java net.* classes only
  compile-pnetpatch   compiles pnet patch and builds jar file
  compile-version     compiles Version.java

  javadoc             generates javadoc; for internal use only
  resource            builds resources (images etc.) and copies to web root
  xsl                 copies XSL files to output directories
  etc                 copies application files (e.g. crypto/key.txt) to output
                        directories
  bin                 copies bin files (e.g. start_listeners.bat) to output
                        directories

  clean               purges the output tree

------------------
Deployment Targets
------------------
  deploy              Deploys application; executes build target then executes
                        all of the following deploy targets:
                        (Note: All targets perform incremental builds)
  deploy-prm
  deploy-xsl
  deploy-etc
  deploy-jars
  deploy-bin
  deploy-resource
  deploy-database
  deploy-docs

  deploy-src          Deploys application; executes "deploy" target then
                        executes these:
  deploy-src-jsp
  deploy-src-javadoc

  deploy-clean        Purges the output and deployment tree; suitable for use
                        before either "deploy" or "deploy-src"

-----------------
Packaging Targets
-----------------
  installer           Generates an installer; executes the "deploy" target and
                        the "zip" target (incremental)
  installer-clean     Purges the output and deployment tree then generates an
                        installer (from clean)
  installer-src       Generates an installer; executes the "deploy-src" target
                        and the "zip-src" target
  installer-src-clean Purges the output and deployment tree then generates an
                        installer with source (from clean)
  zip                 Creates a zip file in releases directory based on the
                        current deployment (incremental)
  zip-src             Creates a zip file in deployment directory, including
                        the source (incremental)
  create-escrow-source Creates a zip file containing escrow software

-----------------
Unit Test Targets
-----------------
   compile-unit-test    Compiles unit test stubs and all unit test classes
   unit-test            Compiles and executes all unit tests
   run-single-unit-test Runs a single unit test.  The unit test class to run
                          is passed on the command line as follows:

                          build run-single-unit-test
                              -Dunittest.to.run=fullyqualifiedclassname

                          where fullyqualifiedclassname is a unit test class

-----------------
Other Targets
-----------------
   run                Run an application server instance

    </echo>
  </target>


  <!--
       This target constructs the properties required for building the product.
    -->
  <target name="-init" depends="-init-base-directories, -init-directories, -init-classpath, -debug-on">

      <!-- Set compilation properties -->
      <property name="build.compiler" value="jikes"/>
      <property name="build.rmic" value="sun"/>
      <property name="deprecation" value="off"/>

      <!-- Version Properties contains properties:
               product.version
	           product.version.codename
	           autogenerate.warning
      -->
      <property file="${config.src.dir}/version.properties" />

      <echo message="Compilation debug setting is ${debug}" />
  </target>

  <!-- Allows compilation debug info to be turned off via a dependency -->
  <target name="-debug-off">
      <property name="debug" value="off"/>
  </target>

  <!--
        Allows compilation debug info to be turned on via a dependency.
        This should be set ahead of the "init" target
    -->
  <target name="-debug-on">
      <property name="debug" value="on"/>
  </target>

  <!-- Checks for presence of build.properties; sets build-properties-present -->
  <target name="-check-build-properties">
     <condition property="build-properties-present">
          <available file="build.properties" />
     </condition>
  </target>

  <!-- Copies build.properties.example to build.properties if build.properties
       is not present -->
  <target name="-ensure-build-properties" depends="-check-build-properties" unless="build-properties-present" >
    <echo>No build.properties file found; creating default properties file</echo>
    <copy file="build.properties.example" tofile="build.properties" />
    <fail>Created build.properties.  Please review its contents before restarting build.</fail>
  </target>

  <!--
       Setup base directories from properties file.
       These include:
           bluestone.dir - bluestone installation
           website.dir - website root
           output.dir  - prm directory in output
           deploy.dir  - prm directory in deploy

           source.dir  - prm directory in source
           devroot.dir - parent of all module directories in source
    -->
  <target name="-init-base-directories" depends="-ensure-build-properties">

      <!-- Set properties from build.properties file -->
      <property file="build.properties"/>

      <!-- Set a flag if required directories do not exist -->
      <condition property="error.cannot-find-default-directories">
        <not>
          <and>
            <available file="${bluestone.dir}"/>
          </and>
        </not>
      </condition>

      <!-- Fail if above condiition is true -->
      <fail if="error.cannot-find-default-directories">
One or more required properties was not set in build.properties.  Current
values are:
    bluestone.dir: ${bluestone.dir}
    website.dir:   ${website.dir}
      </fail>

      <!-- Set the source directory which is really the base directory -->
      <property name="source.dir" value="${basedir}" />

      <!-- Set a development root property to the parent directory of the
           base directory -->
      <property name="devroot.dir" location="${basedir}/.." />

  </target>

  <!--
       Set all properties that specify directories.
    -->
  <target name="-init-directories" depends="-init-base-directories">

      <!-- Source directories -->
      <property name="tools.dir" location="${devroot.dir}/tools" />
      <property name="optional.dir" location="${devroot.dir}/optional" />
      <property name="database.src.dir" location="${optional.dir}/database" />
      <property name="config.src.dir" location="${source.dir}/Config" />
      <property name="jdiff.src.dir" location="${config.src.dir}/JDiff" />
      <property name="bin.src.dir" location="${source.dir}/bin" />
      <property name="java.src.dir" location="${source.dir}/Java" />
      <property name="jsp.packagename" value="pnet" />
      <property name="jsp.src.dir" location="${source.dir}/Jsp" />
      <property name="jsp.src.package.dir" location="${jsp.src.dir}/${jsp.packagename}" />
      <property name="resource.src.dir" location="${source.dir}/Resources" />
      <property name="docs.src.dir" location="${source.dir}/Docs/product" />
      <property name="test.dir" location="${tools.dir}/test"/>

      <!-- Output directories -->
      <property name="resource.dest" location="${website.dir}" />
      <property name="etc.dest" location="${output.dir}/etc"/>
      <property name="bin.dest" location="${output.dir}/bin"/>
      <property name="compile.dest" location="${output.dir}/java"/>
      <property name="jars.dest" location="${output.dir}/jars"/>
      <property name="javadoc.dest" location="${output.dir}/docs/api"/>
      <property name="pnetpatch.dest" location="${output.dir}/pnetpatch"/>
      <property name="rmic.dest" location="${output.dir}/rmic"/>

      <!-- Deploy directories -->
      <property name="etc.deploy.dest" location="${deploy.dir}/etc" />
      <property name="lib.deploy.dest" location="${deploy.dir}/lib" />
      <property name="bin.deploy.dest" location="${deploy.dir}/bin" />
      <property name="classes.deploy.dest" location="${deploy.dir}/classes" />
      <property name="xsl.deploy.dest" location="${deploy.dir}/app" />
      <property name="resource.deploy.dest" location="${deploy.dir}/resource" />
      <property name="database.deploy.dest" location="${deploy.dir}/database"/>
      <property name="docs.deploy.dest" location="${deploy.dir}/docs" />
      <property name="src.deploy.dest" location="${deploy.dir}/src" />
      <property name="jdiff.deploy.dest" location="${src.deploy.dest}/apidiff"/>
      <property name="javadoc.deploy.dest" location="${src.deploy.dest}/apiDocs" />

  </target>

  <!--
       Sets all properties that specify classpaths
    -->
  <target name="-init-classpath" depends="-init-directories">

      <!-- Grab the environment to get JAVA_HOME -->
      <property environment="env" />

      <condition property="error.missing-java-home">
        <not>
            <available file="${env.JAVA_HOME}" type="dir" />
        </not>
      </condition>

      <!-- Fail if above condiition is true -->
      <fail if="error.missing-java-home">
The environment variable JAVA_HOME is not set or does not represent a valid
directory.  JAVA_HOME is required to locate additional JAR files required
for compilation with Jikes.
Current value: ${env.JAVA_HOME}
      </fail>

      <!-- Constructs the base classpath -->
      <path id="prm.classpath">
          <pathelement location="${jars.dest}\pnetpatch.jar"/>
          <pathelement location="${jars.dest}\activation.jar"/>
          <pathelement location="${jars.dest}\mail.jar"/>
          <pathelement location="${jars.dest}\jdom.jar"/>
          <pathelement location="${jars.dest}\cos.jar"/>
          <pathelement location="${jars.dest}\chart.jar"/>
          <pathelement location="${jars.dest}\iTextXML.jar"/>
          <pathelement location="${jars.dest}\itext.jar"/>
          <pathelement location="${jars.dest}\commons-validator.jar"/>
          <pathelement location="${jars.dest}\commons-collections.jar"/>
          <pathelement location="${jars.dest}\jakarta-oro-2.0.6.jar"/>
          <pathelement location="${jars.dest}\ojdbc14.jar"/>
          <pathelement location="${jars.dest}\xerces.jar"/>
          <pathelement location="${jars.dest}\Verisign.jar"/>
          <pathelement location="${jars.dest}\log4j-1.2.8.jar"/>
          <pathelement location="${bluestone.dir}\jars\ubs.jar"/>
          <pathelement location="${bluestone.dir}\jars\jta-spec1_0_1.jar"/>
          <pathelement location="${bluestone.dir}\jars\bullejb.jar"/>
          <pathelement location="${compile.dest}"/>
          <pathelement location="${env.JAVA_HOME}\jre\lib\jce.jar" />
          <pathelement location="${env.JAVA_HOME}\jre\lib\jsse.jar" />
      </path>

      <!-- Constructs the runtime classpath -->
      <path id="run.classpath">
          <path refid="prm.classpath"/>
      </path>

      <!-- Constructs the compilation classpath -->
      <path id="src.compile.classpath">
          <pathelement location="c:\java"/>
          <path refid="prm.classpath"/>
          <pathelement location="${test.dir}\lib\junit.jar"/>
      </path>

      <path id="jdiff.classpath">
          <path refid="src.compile.classpath"/>
          <pathelement location="${java.src.dir}/jdiff/jdiff.jar"/>
          <pathelement location="${java.src.dir}/jdiff/xerces.jar"/>
      </path>

      <path id="unittest.compile.classpath">
          <pathelement location="c:\java"/>
          <pathelement location="${test.dir}\mockobjects\output"/>
          <path refid="prm.classpath"/>
          <pathelement location="${test.dir}\lib\junit.jar"/>
          <pathelement location="${test.dir}\lib\junit-addons-1.4.jar"/>
      </path>

      <!-- Constructs the JSP compilation classpath -->
      <path id="jsp.src.compile.classpath">
          <pathelement location="${tools.dir}\bluestone"/>
          <path refid="src.compile.classpath"/>
      </path>

  </target>


  <!-- =========================================================================

		TARGET PREPARES

		These targets simply prepare output directories for builds

       ===================================================================== -->

  <!-- ===================================================================
       Prepares the output build directory
       =================================================================== -->
  <target name="-prepare" depends="-init">
    <mkdir dir="${output.dir}"/>
  </target>

  <!-- ===================================================================
       Prepares the output directories for compile targets
       =================================================================== -->
  <target name="prepare-compile" depends="-prepare">
    <mkdir dir="${compile.dest}"/>
  </target>

  <!-- ===================================================================
       Prepares the output directories for application files
       =================================================================== -->
  <target name="prepare-etc" depends="-prepare">
    <mkdir dir="${etc.dest}"/>
  </target>

  <!-- ===================================================================
       Prepares the output directories bin fules
       =================================================================== -->
  <target name="prepare-bin" depends="-prepare">
    <mkdir dir="${bin.dest}"/>
  </target>

  <!-- ===================================================================
       Prepares the output directories for jars
       =================================================================== -->
  <target name="prepare-jars" depends="-prepare">
    <mkdir dir="${jars.dest}"/>
  </target>

  <!-- ===================================================================
       Prepares the output directories for pnet patch
       =================================================================== -->
  <target name="prepare-pnetpatch" depends="-prepare">
    <mkdir dir="${pnetpatch.dest}"/>
  </target>

  <!-- ===================================================================
       Prepares the output directories for com classes
       =================================================================== -->
  <target name="prepare-com" depends="prepare-compile">
    <mkdir dir="${rmic.dest}"/>
  </target>

  <!-- ===================================================================
       Prepares the output directories for javadoc targets
       =================================================================== -->
  <target name="prepare-javadoc" depends="-prepare">
    <mkdir dir="${javadoc.dest}"/>
  </target>

  <!-- ===================================================================
       Prepares the resource directory
       =================================================================== -->
  <target name="prepare-resource" depends="-init">
    <mkdir dir="${resource.dest}/styles"/>
    <mkdir dir="${resource.dest}/src"/>
  </target>

  <!-- ===================================================================
       Prepares for version stuff.
       =================================================================== -->
  <target name="prepare-update-version" depends="prepare-compile">
	<property name="version.java.pre" value="net/project/util/Version.java.pre" />
	<property name="version.java" value="net/project/util/Version.java" />

        <!-- Set property if Version.java.pre exists -->
	<available file="${java.src.dir}/${version.java.pre}" property="version.java.pre.present"/>

	<!-- Determine whether translated java source is up to date: Source needs
	     regenerated if version.properties of Version.java.pre file changes -->
	<uptodate targetfile="${java.src.dir}/${version.java}" property="version.java.uptodate" >
            <srcfiles dir="${config.src.dir}" includes="version.properties"/>
            <srcfiles dir="${java.src.dir}" includes="${version.java.pre}"/>
        </uptodate>
  </target>


  <!-- =========================================================================

		TARGET BUILDS

		These targets build, compile or copy files

       ===================================================================== -->

  <!-- ===================================================================
       Compile any unit test stubs
       =================================================================== -->
  <target name="compile-unit-test-stubs" depends="-init">
      <mkdir dir="${test.dir}/mockobjects/output"/>
      <javac destdir="${test.dir}/mockobjects/output" debug="true" source="1.4">
          <classpath refid="src.compile.classpath"/>
          <src location="${test.dir}/mockobjects/src"/>
      </javac>
  </target>

  <!-- ===================================================================
       Compiles the PRM java source tree
       =================================================================== -->
  <target name="compile-java" depends="compile-java-com,compile-java-pnet,compile-java-net" description="Compile all non-JSP Java files."/>

  <!-- ===================================================================
       Compiles com classes
	   =================================================================== -->
  <target name="compile-java-com" depends="prepare-compile,jars">

	<!-- Compile com sources -->
	<javac srcdir="${java.src.dir}"
	       destdir="${compile.dest}"
		   debug="${debug}"
           deprecation="${deprecation}"
           nowarn="on"
           source="1.4">
      <classpath refid="src.compile.classpath"/>
	  <include name="com/**" />
	</javac>

	<!-- RMI compile certain files -->
	<rmic base="${compile.dest}">
	  <include name="com/**/PublisherImpl.class" />
	  <include name="com/**/MonitorConnectionImpl.class" />
	  <include name="com/**/Logger.class" />
      <classpath refid="src.compile.classpath"/>
    </rmic>

  </target>

  <!-- ===================================================================
       Compiles the pnet class
       =================================================================== -->
  <target name="compile-java-pnet" depends="prepare-compile,jars">
    <javac srcdir="${java.src.dir}"
           destdir="${compile.dest}"
           debug="${debug}"
           deprecation="${deprecation}"
           nowarn="on"
           source="1.4">
      <classpath refid="src.compile.classpath"/>
	  <include name="pnet/**" />
	</javac>
  </target>

  <!-- ===================================================================
       Compiles the net.project classes
       =================================================================== -->
  <target name="compile-java-net" depends="prepare-compile,jars">
    <javac srcdir="${java.src.dir}"
           destdir="${compile.dest}"
           debug="${debug}"
           deprecation="${deprecation}"
           nowarn="on"
           source="1.4">
      <classpath refid="src.compile.classpath"/>
	  <include name="net/project/**" />

      <!-- Don't compile unit tests -->
      <exclude name="**/*Test.java" />

      <!-- Don't compile J2EE 1.3 sources (they are for Weblogic build only) -->
      <exclude name="net/project/security/SessionAccessFilter.java" />
      <exclude name="net/project/security/SecurityFilter.java" />
	</javac>
  </target>

  <!-- ===================================================================
       Compiles the jsp source tree
       Process JSPs to Java level - note runs in separate fork to allow for
       switching of directory and to avoid dying on System.exit() in processor.
       Also, inserts tools/bluestone in front of Classpath to pick up
       tweaked JSP compiler (which actually avoids compiling unchanged files)

       IMPORTANT:
         1)  The directory that is passed here is very specific.  It MUST be
             the JSP package directory to make the modification checking work.
             This is a quirk of the Bentley timestamp-compare hack.
             If none of your JSPs are compiling, this is why.
             E.g. c:/pnet/src/pnet-main/prm/jsp/prm  or
                  c:/pnet/src/pnet-main/prm/jsp/pnet  would work
       =================================================================== -->
  <target name="compile-jsp-only" depends="prepare-compile" description="Compiles JSP files with no dependency checks">

    <java classname="SaApi.servlet.jsp.SaJspProcessor"
          dir="${jsp.src.package.dir}"
          fork="yes"
          failonerror="yes">
      <classpath refid="jsp.src.compile.classpath"/>
      <arg line="-app ${jsp.packagename}.class -level java -recurse -quiet -packageName ${jsp.packagename} -compilePath ${compile.dest} ${jsp.src.package.dir}" />
    </java>

    <!-- Now compile java versions of jsps (only those in JSP package directory and below -->
    <javac srcdir="${compile.dest}"
           destdir="${compile.dest}"
           debug="${debug}"
           deprecation="${deprecation}"
           includes="${jsp.packagename}/**"
           nowarn="on"
           source="1.4">
      <classpath refid="src.compile.classpath"/>
    </javac>

  </target>

  <target name="compile-jsp" depends="compile-java-net,compile-pnetpatch,compile-jsp-only" description="Compiles JSP files" />

  <target name="-check-jsp-specified" unless="jsp.to.compile">
      <fail>
          Please set the jsp.to.compile property before calling this target.
      </fail>
  </target>

  <target name="compile-single-jsp" depends="-check-jsp-specified, prepare-compile" description="Compile a single JSP file without compiling everything else">
      <echo message="Compiling file ${jsp.to.compile}"/>

      <java classname="SaApi.servlet.jsp.SaJspProcessor"
            dir="${jsp.src.package.dir}"
            fork="yes"
            failonerror="yes">
        <classpath refid="jsp.src.compile.classpath"/>
        <arg line="-app ${jsp.packagename}.class -level java -recurse -quiet -packageName ${jsp.packagename} -compilePath ${compile.dest} ${jsp.to.compile}" />
      </java>

      <!-- Now compile java versions of jsps (only those in JSP package directory and below -->
      <javac srcdir="${compile.dest}"
             destdir="${compile.dest}"
             debug="${debug}"
             deprecation="${deprecation}"
             includes="${jsp.packagename}/**"
             nowarn="on"
             source="1.4>
        <classpath refid="src.compile.classpath"/>
      </javac>
  </target>

  <!-- ===================================================================
       Unit Test Targets
       =================================================================== -->

    <target name="-test-format-plain">
        <property name="test.format" value="plain" />
    </target>

    <target name="-test-format-xml">
        <property name="test.format" value="xml" />
    </target>

    <!-- Compile unit test classes -->
    <target name="compile-unit-test" depends="compile-unit-test-stubs, compile-java">
        <javac srcdir="${java.src.dir}"
               destdir="${compile.dest}"
               debug="${debug}"
               deprecation="${deprecation}"
               nowarn="on"
               source="1.4">
          <classpath refid="unittest.compile.classpath"/>
          <include name="net/project/**/*Test.java" />
        </javac>
    </target>

    <!-- Run unit tests only; PLAIN format -->
    <target name="run-unit-test" depends="-init, -test-format-plain, run-single-unit-test, run-all-unit-tests" description="Run unit tests without compiling first"/>

    <target name="run-single-unit-test" if="unittest.to.run">
        <junit printsummary="yes">
            <classpath refid="unittest.compile.classpath"/>
            <formatter type="${test.format}"/>
            <sysproperty key="mockobject.properties.location" value="${test.dir}\mockobjects.properties"/>
            <jvmarg value="-ea"/>
            <!-- Even though the next line shows up as an error, it isn't.  The
                 property is intended to be supplied on the command line in the
                 form "make unit-test -Dunittest.to.run=net.project.schedule.TaskEndpointCalculationTest" -->
            <test name="${unittest.to.run}" haltonfailure="false"/>
        </junit>
    </target>

    <target name="run-all-unit-tests" unless="unittest.to.run">
        <junit printsummary="yes">
            <classpath refid="unittest.compile.classpath"/>
            <formatter type="${test.format}"/>
            <sysproperty key="mockobject.properties.location" value="${test.dir}\mockobjects.properties"/>
            <!-- 05/06/2003 - Tim
                 Enabling assertions when using batchtest appears to cause
                 all assertions to fail.  Commenting it out for now. -->
            <!--<jvmarg value="-ea"/>-->
            <batchtest fork="yes">
              <fileset dir="${java.src.dir}">
                <include name="**/*Test.java"/>
              </fileset>
            </batchtest>
        </junit>
    </target>

    <!-- Run unit test after compile; PLAIN format -->
    <target name="unit-test" depends="compile-unit-test, -test-format-plain, run-unit-test" description="Run all unit tests" />

    <!-- Run unit test after compile; XML format -->
    <target name="unit-test-xml" depends="-test-format-xml, unit-test" />

    <!-- Run unit test only; XML format -->
    <target name="run-unit-test-xml" depends="-test-format-xml, run-unit-test" />


  <!-- ===================================================================
       Copies the xml files to output
       =================================================================== -->
  <target name="xsl" depends="prepare-compile">
    <!-- Copy all XSL files from JSP src to output -->
    <copy todir="${compile.dest}">
        <fileset dir="${jsp.src.dir}" >
			<exclude name="**/.#*" />
            <include name="**/*.xsl" />
        </fileset>
    </copy>
  </target>

  <!-- ===================================================================
       Version update
       =================================================================== -->
  <!-- Fail unless required files are present -->
  <target name="-update-version-check" depends="prepare-update-version" unless="version.java.pre.present">
	<fail message="Version check failed.  File: '${java.src.dir}/${version.java.pre}' not present." />
  </target>

  <!-- Regenerate Version.java unless up-to-date -->
  <target name="update-version-regenerate" unless="version.java.uptodate" depends="-update-version-check">
    <filter filtersfile="${config.src.dir}/version.properties" />
	<copy file="${java.src.dir}/${version.java.pre}" tofile="${java.src.dir}/${version.java}"
	      filtering="true" overwrite="true" />
  </target>

  <!-- Compile Version.java -->
  <target name="compile-version" depends="-update-version-check, update-version-regenerate">
    <javac srcdir="${java.src.dir}"
           destdir="${compile.dest}"
           debug="${debug}"
           deprecation="${deprecation}"
           nowarn="on"
           source="1.4">
      <classpath refid="src.compile.classpath"/>
	  <include name="${version.java}" />
	</javac>
  </target>


  <!-- ===================================================================
       Makes the pnet patch
       =================================================================== -->
  <target name="compile-pnetpatch" depends="prepare-pnetpatch,jars,compile-java-com">

    <!--

		UBS_7 patch

		Aplication server patches

	-->

    <!-- Copy class files which have no source to pnetpatch output dir -->
	<copy todir="${pnetpatch.dest}">
		<fileset dir="${config.src.dir}/Bluestone/patches/UBS_7">
			<exclude name="**/.#*" />
			<include name="**/*.class" />
		</fileset>
	</copy>

	<!-- Compile java sources to pnetpatch output dir -->
	<javac srcdir="${config.src.dir}/Bluestone/patches/UBS_7"
	       destdir="${pnetpatch.dest}"
		   debug="${debug}"
           deprecation="${deprecation}"
           nowarn="on"
           source="1.4">
      <classpath refid="src.compile.classpath"/>
    </javac>

    <!--

		UBS_72GA patch

		Character encoding patches

	-->

	<!-- Compile java sources to pnetpatch output dir -->
	<javac srcdir="${config.src.dir}/Bluestone/patches/UBS_72GA"
	       destdir="${pnetpatch.dest}"
		   debug="${debug}"
           deprecation="${deprecation}"
           nowarn="on"
           source="1.4">
      <classpath refid="src.compile.classpath"/>
    </javac>

	<!-- Jar it up -->
	<jar jarfile="${jars.dest}/pnetpatch.jar"
	     basedir="${pnetpatch.dest}" />

  </target>

  <!-- ===================================================================
       Copies jars to output
       =================================================================== -->
  <target name="jars" depends="prepare-jars">
    <copy todir="${jars.dest}">
        <fileset dir="${java.src.dir}/javax">
			<exclude name="**/.#*" />
			<include name="*.jar" />
			<include name="*.zip" />
		</fileset>
        <fileset dir="${java.src.dir}/jars">
			<exclude name="**/.#*" />
			<include name="*.jar" />
			<include name="*.zip" />
		</fileset>
        <fileset dir="${java.src.dir}/jars/jdbc">
			<exclude name="**/.#*" />
			<include name="*.jar" />
			<include name="*.zip" />
		</fileset>




        <fileset dir="${java.src.dir}/jars/jdbc">
			<exclude name="**/.#*" />
			<include name="*.jar" />
			<include name="*.zip" />
		</fileset>
        <fileset dir="${java.src.dir}/jars/jdbc">
			<exclude name="**/.#*" />
			<include name="*.jar" />
			<include name="*.zip" />
		</fileset>
        <fileset dir="${java.src.dir}/jars/jdbc">
			<exclude name="**/.#*" />
			<include name="*.jar" />
			<include name="*.zip" />
		</fileset>
        <fileset dir="${java.src.dir}/jars/jdbc">
			<exclude name="**/.#*" />
			<include name="*.jar" />
			<include name="*.zip" />
		</fileset>
    </copy>
  </target>

  <!-- ===================================================================
       Build javadoc
       =================================================================== -->
  <target name="javadoc" depends="prepare-javadoc" description="Generates JavaDoc for internal use">
    <javadoc sourcepath="${java.src.dir}"
              destdir="${javadoc.dest}"
              packagenames="net.*"
              windowtitle="Project.net PRMServer v${product.version} (${product.version.codename})"
              maxmemory="256M"
              verbose="false"
              additionalparam="-source 1.4"
              private="true">
        <bottom>&lt;div align=&quot;center&quot;> &lt;a href=&quot;http://www.project.net/&quot; target=&quot;_top&quot;>&#169;2000-2003 Project.net, Inc.&lt;/a> All Rights Reserved.&lt;div></bottom>
        <link href="http://java.sun.com/j2se/1.4.1/docs/api/"/>
        <link href="http://java.sun.com/j2ee/sdk_1.2.1/techdocs/api/"/>
        <link href="http://www.jdom.org/docs/apidocs/"/>
        <link href="http://itext.sourceforge.net/docs/"/>
    </javadoc>

  </target>

  <!-- ===================================================================
       Build the resources
       =================================================================== -->
  <target name="resource" depends="prepare-resource">

	<!-- Images -->
    <copy todir="${resource.dest}/images">
      <fileset dir="${resource.src.dir}/Images">
		<exclude name="**/.#*" />
		<exclude name="tabs/src/*" />
		<exclude name="toolbar/src/*" />
	  </fileset>
    </copy>

	<!-- Javascript Source -->
    <copy todir="${resource.dest}/src">
        <javadoc sourcepath="${java.src.dir}"
                  destdir="${javadoc.dest}"
                  packagenames="net.*"
                  windowtitle="Project.net PRMServer v${product.version} (${product.version.codename})"
                  maxmemory="256M"
                  verbose="false"
                  additionalparam="-source 1.4"
                  private="true">
            <bottom>&lt;div align=&quot;center&quot;> &lt;a href=&quot;http://www.project.net/&quot; target=&quot;_top&quot;>&#169;2000-2003 Project.net, Inc.&lt;/a> All Rights Reserved.&lt;div></bottom>
            <link href="http://java.sun.com/j2se/1.4.1/docs/api/"/>
            <link href="http://java.sun.com/j2ee/sdk_1.2.1/techdocs/api/"/>
            <link href="http://www.jdom.org/docs/apidocs/"/>
            <link href="http://itext.sourceforge.net/docs/"/>
        </javadoc>

      <fileset dir="${resource.src.dir}/src" excludes="**/.#*" />
    </copy>

	<!-- CSS -->
    <copy todir="${resource.dest}/styles">

      <fileset dir="${resource.src.dir}/styles" excludes="**/.#*" />
    </copy>

	<!-- HTML files and other resources -->
    <copy todir="${resource.dest}">
      <fileset dir="${resource.src.dir}">
		<exclude name="**/.#*" />
		<include name="**/*.html" />
		<include name="**/*.htm" />
		<include name="**/*.ico" />
		<include name="hosted" />
	  </fileset>
    </copy>

  </target>

  <!-- ===================================================================
       Builds etc files
       =================================================================== -->
  <target name="etc" depends="prepare-etc">

	<copy todir="${etc.dest}">
        <fileset dir="${config.src.dir}/crypto" excludes="**/.#*" />
    </copy>

    <!-- Project.net Scheduler files -->
	<copy todir="${etc.dest}">
        <fileset dir="${config.src.dir}/scheduler">
			<exclude name="**/.#*" />
			<include name="*.properties" />
		</fileset>
    </copy>

	<!-- Bluestone config files -->
	<copy todir="${etc.dest}/ubs/config">
		<fileset dir="${config.src.dir}/Bluestone/ubs">
			<exclude name="**/.#*" />
		</fileset>
	</copy>

  	<!-- Bluestone lbb files -->
	<copy todir="${etc.dest}/ubs/lbb">
		<fileset dir="${config.src.dir}/Bluestone/lbb">
			<exclude name="**/.#*" />
		</fileset>
	</copy>

    <!-- Log4j configuration files -->
	<copy todir="${etc.dest}">
        <fileset dir="${config.src.dir}/log4j">
			<exclude name="**/.#*" />
			<include name="*.xml" />
		</fileset>
    </copy>

  </target>

  <!-- ===================================================================
       Copies bin files to output
       =================================================================== -->
  <target name="bin" depends="prepare-bin">
    <!-- Copy and fix Unix scripts -->
    <fixcrlf srcdir="${bin.src.dir}"
             destdir="${bin.dest}"
             eol="lf"
             eof="remove">
        <exclude name="**/.#*" />
    	<include name="*.sh" />
    	<include name="pnet-init" />
    </fixcrlf>

    <!-- Copy and fix DOS scripts -->
    <fixcrlf srcdir="${bin.src.dir}"
             destdir="${bin.dest}"
             eol="crlf"
             eof="add">
        <exclude name="**/.#*" />
			<include name="*.bat" />
    </fixcrlf>

    <!-- Copy remaining bin items -->
    <copy todir="${bin.dest}">
        <fileset dir="${bin.src.dir}">
			<exclude name="**/.#*" />
			<include name="*.exe" />
  		</fileset>
    </copy>

  </target>

  <!-- ===================================================================
       Compiles the ALL source
       =================================================================== -->
  <target name="compile" depends="compile-java,compile-pnetpatch,compile-jsp,xsl,compile-version,compile-unit-test" />

  <!-- ===================================================================
       Builds output
       =================================================================== -->
  <target name="build" depends="jars,compile,etc,bin,resource" description="Builds all of the files in the output directory"/>

  <!-- Builds after updating from cvs -->
  <target name="cvs-build" depends="cvs-update-source, build" />
  <target name="cvs-build-clean" depends="cvs-update-source, clean, build" />
  <target name="cvs-build-test" depends="cvs-build, unit-test-xml" />
  <target name="cvs-build-clean-test" depends="cvs-build-clean, unit-test-xml" />


  <!-- =========================================================================

	   Deploys the application

       ===================================================================== -->

    <target name="prepare-deploy" depends="-prepare">
	   <echo message="Preparing to deploy product: ${product.version.codename} (${product.version})" />
       <mkdir dir="${deploy.dir}" />
    </target>

    <!-- Deletes deployment directory -->
    <target name="prepare-deploy-clean" depends="-init">
        <delete dir="${deploy.dir}" />
    </target>

	<target name="prepare-deploy-src" depends="prepare-deploy">
        <mkdir dir="${src.deploy.dest}" />
    </target>

    <target name="prepare-deploy-prm" depends="prepare-deploy">
        <mkdir dir="${lib.deploy.dest}" />
        <mkdir dir="${classes.deploy.dest}" />
    </target>

    <target name="prepare-deploy-xsl" depends="prepare-deploy">
        <mkdir dir="${xsl.deploy.dest}" />
    </target>

    <target name="prepare-deploy-etc" depends="prepare-deploy">
        <mkdir dir="${etc.deploy.dest}" />
    </target>

    <target name="prepare-deploy-bin" depends="prepare-deploy">
        <mkdir dir="${bin.deploy.dest}" />
    </target>

    <target name="prepare-deploy-resource" depends="prepare-deploy">
        <mkdir dir="${resource.deploy.dest}" />
    </target>

    <target name="prepare-deploy-database" depends="prepare-deploy">
        <mkdir dir="${database.deploy.dest}" />
    </target>

    <target name="prepare-deploy-docs" depends="prepare-deploy">
        <mkdir dir="${docs.deploy.dest}" />
    </target>

	<target name="prepare-deploy-src-javadoc" depends="prepare-deploy-src">
        <mkdir dir="${javadoc.deploy.dest}" />
    </target>

    <target name="prepare-deploy-api-diff" depends="prepare-deploy">
        <mkdir dir="${jdiff.deploy.dest}"/>
    </target>

	<!--
		Deploy targets
	-->

    <target name="deploy-prm" depends="build, prepare-deploy-prm">

            <jar jarfile="${lib.deploy.dest}/prm.jar"
                basedir="${compile.dest}">

				<exclude name="**/.#*" />
				<exclude name="**/*.java" />
				<exclude name="**/*.xsl" />
				<exclude name="**/xsl/**" />
				<exclude name="**/*.jsp" />
            </jar>
    </target>

	<!-- Deploy XSL files -->
    <target name="deploy-xsl" depends="xsl, prepare-deploy-xsl">
        <copy todir="${xsl.deploy.dest}">
            <fileset dir="${compile.dest}" >
			    <exclude name="**/.#*" />
                <include name="**/*.xsl" />
				<!-- Must specify possible empty directories here -->
                <include name="**/include" />
            </fileset>
        </copy>
    </target>


  <!-- Deploy JAR files -->
  <target name="deploy-jars" depends="jars, prepare-deploy-prm">
    <copy todir="asdgjagsd" asdh="${lib.deploy.dest}" asgd="">
        <fileset>
            <and>
                ajshdkjhaskjdh
    <type description="sdad"/>
            </and>
        </fileset>
        <fileset dir="${jars.dest}">
			<exclude name="**/.#*" />
			<include name="*.jar" />
			<include name="*.zip" />
   	</fileset>
    </copy>
  </target>

    <!-- Deploy license.txt file -->
    <target name="deploy-jars-license" depends="prepare-deploy-prm,prepare-deploy-docs,-init">
        <copy todir="${lib.deploy.dest}">
            <fileset dir="${java.src.dir}/jars">
                <include name="License.txt"/>
            </fileset>
        </copy>

        <copy todir="${docs.deploy.dest}">
            <fileset dir="${java.src.dir}/jars">
                <include name="License.txt"/>
            </fileset>
        </copy>
    </target>


    <!-- Updates source from cvs -->
	<target name="cvs-update-source" depends="-init">
        <exec dir="${devroot.dir}" executable="cvs">
			<arg line="-q update -dP prm tools" />
		</exec>
	</target>

	<!-- Deploy etc files
         Note - These are deployed form the source directory, as the files
         in the output directory have already had tokens replaced, etc.
      -->
    <target name="deploy-etc" depends="prepare-deploy-etc">

		<copy todir="${etc.deploy.dest}">
			<fileset dir="${config.src.dir}/crypto" excludes="**/.#*" />
        </copy>

        <!-- Project.net Scheduler files -->
        <copy todir="${etc.deploy.dest}">
            <fileset dir="${config.src.dir}/scheduler">
			    <exclude name="**/.#*" />
			    <include name="*.properties" />
		    </fileset>
        </copy>

        <!-- UBS config files -->
		<copy todir="${etc.deploy.dest}/ubs/config">
			<fileset dir="${etc.dest}/ubs/config">
			    <exclude name="**/.#*" />
			</fileset>
        </copy>

        <!-- LBB Plugins -->
		<copy todir="${etc.deploy.dest}/ubs/lbb">
			<fileset dir="${etc.dest}/ubs/lbb">
			    <exclude name="**/.#*" />
			</fileset>
        </copy>

		<copy todir="${etc.deploy.dest}">
			<fileset dir="${config.src.dir}/log4j" excludes="**/.#*" />
        </copy>

    </target>

	<!-- Deploy bin files -->
    <target name="deploy-bin" depends="prepare-deploy-bin, bin">
        <copy todir="${bin.deploy.dest}">
			<fileset dir="${bin.dest}" excludes="**/.#*" />
        </copy>
    </target>

  <!-- Deploy web server resources -->
  <target name="deploy-resource" depends="resource, prepare-deploy-resource">

	<!-- Images -->
    <copy todir="${resource.deploy.dest}/images">
      <fileset dir="${resource.src.dir}/images">
		<exclude name="**/.#*" />
		<exclude name="tabs/src/*" />
		<exclude name="toolbar/src/*" />
	  </fileset>
    </copy>

	<!-- Javascript Source -->
    <copy todir="${resource.deploy.dest}/src">
      <fileset dir="${resource.src.dir}/src" excludes="**/.#*" />
    </copy>

	<!-- CSS -->
    <copy todir="${resource.deploy.dest}/styles">
      <fileset dir="${resource.src.dir}/styles" excludes="**/.#*" />
    </copy>

	<!-- HTML files and other resources -->
    <copy todir="${resource.deploy.dest}">
      <fileset dir="${resource.src.dir}">
		<exclude name="**/.#*" />
		<include name="**/*.html" />
		<include name="**/*.htm" />
		<include name="**/*.ico" />
		<include name="hosted" />
	  </fileset>
        <fileset></fileset>
    </copy>

  </target>

	<!-- Deploy database files -->
    <target name="deploy-database" depends="prepare-deploy-database">
        <copy todir="${database.deploy.dest}">
			<fileset dir="${database.src.dir}">
			  <exclude name="**/.#*" />
			  <include name="CreateScripts/**" />
			</fileset>
        </copy>


      <!-- Images -->
      <copy todir="${resource.deploy.dest}/images">
        <fileset dir="${resource.src.dir}/images">
          <exclude name="**/.#*" />
          <exclude name="tabs/src/*" />
          <exclude name="toolbar/src/*" />
        </fileset>
      </copy>

      <!-- Javascript Source -->
      <copy todir="${resource.deploy.dest}/src">
        <fileset dir="${resource.src.dir}/src" excludes="**/.#*" />
      </copy>

      <!-- CSS -->
      <copy todir="${resource.deploy.dest}/styles">
        <fileset dir="${resource.src.dir}/styles" excludes="**/.#*" />
      </copy>

      <!-- HTML files and other resources -->
      <copy todir="${resource.deploy.dest}">
        <fileset dir="${resource.src.dir}">
          <exclude name="**/.#*" />
          <include name="**/*.html" />
          <include name="**/*.htm" />
          <include name="**/*.ico" />
          <include name="hosted" />
        </fileset>
          <fileset></fileset>
      </copy>



      <!-- Images -->
      <copy todir="${resource.deploy.dest}/images">
        <fileset dir="${resource.src.dir}/images">
          <exclude name="**/.#*" />
          <exclude name="tabs/src/*" />
          <exclude name="toolbar/src/*" />
        </fileset>
      </copy>

      <!-- Javascript Source -->
      <copy todir="${resource.deploy.dest}/src">
        <fileset dir="${resource.src.dir}/src" excludes="**/.#*" />
      </copy>

      <!-- CSS -->
      <copy todir="${resource.deploy.dest}/styles">
        <fileset dir="${resource.src.dir}/styles" excludes="**/.#*" />
      </copy>

      <!-- HTML files and other resources -->
      <copy todir="${resource.deploy.dest}">
        <fileset dir="${resource.src.dir}">
          <exclude name="**/.#*" />
          <include name="**/*.html" />
          <include name="**/*.htm" />
          <include name="**/*.ico" />
          <include name="hosted" />
        </fileset>
          <fileset></fileset>
      </copy>


    </target>

	<!-- Deploy docs -->
    <target name="deploy-docs" depends="prepare-deploy-docs">

		<!-- Copy all docs except for Word Documents to deployment area
		     Assumes Word documents are created as PDF files -->
		<copy todir="${docs.deploy.dest}">
			<fileset dir="${docs.src.dir}">
			    <exclude name="**/.#*" />
				<exclude name="**/*.doc" />
			</fileset>
        </copy>

    </target>

  <!-- ===================================================================
       Deployments for Source releases
       =================================================================== -->

	<!-- Deploy JSP files -->
    <target name="deploy-src-jsp" depends="compile-jsp, prepare-deploy-src">
        <copy todir="${src.deploy.dest}/jsp">
            <fileset dir="${jsp.src.dir}" >
			    <exclude name="**/.#*" />
            </fileset>
        </copy>
    </target>

	<!-- Deploy api docs -->
	<!--packagenames="net.project.*"-->
	<target name="deploy-src-javadoc" depends="prepare-deploy-src-javadoc">
		<javadoc packagenames="net.*"
                 sourcepath="${java.src.dir}"
			     destdir="${src.deploy.dest}/apiDocs"
			     author="false"
			     public="true"
                 maxmemory="256M"
                 additionalparam="-source 1.4"
                 defaultexcludes="yes"
			     windowtitle="Project.net PRMServer v${product.version} (${product.version.codename})">
            <bottom>&lt;div align=&quot;center&quot;> &lt;a href=&quot;http://www.project.net/&quot; target=&quot;_top&quot;>&#169;2000-2003 Project.net, Inc.&lt;/a> All Rights Reserved.&lt;div></bottom>
            <link href="http://java.sun.com/j2se/1.4.1/docs/api/"/>
            <link href="http://java.sun.com/j2ee/sdk_1.2.1/techdocs/api/"/>
            <link href="http://www.jdom.org/docs/apidocs/"/>
            <link href="http://itext.sourceforge.net/docs/"/>
        </javadoc>
	</target>

    <target name="generate-new-api-diff" depends="-init">

        <!-- The name of apis, used for naming files -->
        <property name="newapiname" value="${product.version.codename}" />

        <!-- Produce XML for this version's Javadoc -->
		<javadoc packagenames="net.project.*"
                 sourcepath="${java.src.dir}"
			     destdir=""
			     author="false"
			     public="true"
                 maxmemory="256M"
                 defaultexcludes="yes"
			     windowtitle="Project.net PRMServer v${product.version} (${product.version.codename})"
                 additionalparam="-source 1.4">
            <classpath refid="jdiff.classpath"/>
            <doclet name="jdiff.JDiff" path="${java.src.dir}/jdiff/jdiff.jar:${java.src.dir}/diff/xerces.jar">
                <param name="-apidir" value="${jdiff.src.dir}"/>
                <param name="-apiname" value="${newapiname}"/>
            </doclet>
        </javadoc>
    </target>

    <!-- Produce a report which will outline the API differences between this
         version and the previous one. -->
	<target name="deploy-api-diff" depends="prepare-deploy-api-diff,generate-new-api-diff" description="Produce an API difference report between this version and the previous one." >

        <!-- The name of apis, used for naming files -->
        <property name="oldapiname" value="7_5_1_release" />
        <property name="newapiname" value="${product.version.codename}" />

        <!-- Produce the diff between this and last version's Javadoc -->
		<javadoc packagenames="net.project.*"
                 sourcepath="${java.src.dir}"
			     destdir=""
			     author="false"
			     public="true"
                 maxmemory="256m"
                 additionalparam="-source 1.4"
                 defaultexcludes="yes"
			     windowtitle="Project.net PRMServer v${product.version} (${product.version.codename})">
            <doclet name="jdiff.JDiff" path="${java.src.dir}/jdiff/jdiff.jar:${java.src.dir}/jdiff/xerces.jar">
                <param name="-d" value="${jdiff.deploy.dest}"/>
                <param name="-oldapi" value="${oldapiname}"/>
                <param name="-oldapidir" value="${jdiff.src.dir}"/>
                <param name="-newapi" value="${newapiname}"/>
                <param name="-newapidir" value="${jdiff.src.dir}"/>
                <param name="-javadocold" value="../../oldapiDocs/"/>
                <param name="-javadocnew" value="../../apiDocs/"/>
            </doclet>
        </javadoc>

        <!-- Delete some files that shouldn't be shipped to the user. -->
        <delete file="${jdiff.deploy.dest}/missingSinces.txt"/>
        <delete file="${jdiff.deploy.dest}/user_comments_for_${oldapiname}_to_${newapiname}.xml"/>
    </target>

    <!-- Makes a deployment; incrementally (does not clean first) -->
    <target name="deploy" depends="-debug-off, prepare-deploy, deploy-prm, deploy-jars, deploy-jars-license, deploy-xsl, deploy-resource, deploy-etc, deploy-bin, deploy-docs, deploy-database" />

    <!-- Makes a source deployment; incrementally (does not clean first) -->
    <target name="deploy-src" depends="-debug-off, deploy, deploy-src-jsp, deploy-src-javadoc, deploy-api-diff" />

    <!-- Makes a source deployment; incrementally (does not clean first) -->
    <target name="deploy-src-no-javadoc" depends="-debug-off, deploy, deploy-src-jsp" />

    <!-- Cleans pending a deployment -->
    <target name="deploy-clean" depends="-debug-off, prepare-deploy-clean, clean" description="Deletes all of the files from the deploy directory" />

  <!-- ===================================================================
       Run the application
       =================================================================== -->
    <target name="copy-runtime-config-file" depends="-init" description="Customizes the sajava.ini file in the bluestone configuration directory based on your local runtime configuration.">
        <filter filtersfile="./runtime.properties"/>
        <copy todir="${bluestone.dir}/config" filtering="true" overwrite="true" >
            <fileset dir="${config.src.dir}/Bluestone/ubs" includes="sajava.ini SaLBB.ini"/>
        </copy>
        <copy file="${config.src.dir}/Bluestone/ubs/apserver.txt.noproxy.example" tofile="${bluestone.dir}/config/apserver.txt" filtering="true" overwrite="true" />
    </target>

    <target name="run" depends="-init">
        <java classname="SaApi.SaAppServController" fork="yes" classpathref="run.classpath">
            <arg value="-port"/>
            <arg value="20000"/>
            <arg value="-debug"/>
            <arg value="true"/>
        </java>

    </target>

  <!-- ===================================================================
       Escrow creation target
       =================================================================== -->
  <target name="create-escrow-source" depends="-init" description="Create full source zip for escrow account">
      <zip zipfile="../prm_${product.version.codename}_full_src.zip">
          <zipfileset dir="../prm" prefix="prm">
              <exclude name="**/CVS"/>
              <exclude name="**/CVS/*"/>
          </zipfileset>
          <zipfileset dir="../optional" prefix="optional">
              <exclude name="**/CVS"/>
              <exclude name="**/CVS/*"/>
          </zipfileset>
          <zipfileset dir="../tools" prefix="tools">
              <exclude name="**/CVS"/>
              <exclude name="**/CVS/*"/>
          </zipfileset>
      </zip>
      <echo>
          Now, manually add the contents of the \\lion\\Development\Development Documentation\
          directory to the zip file.  The zip file creation will be complete then.
      </echo>
  </target>

  <!-- ===================================================================
       Installer
       =================================================================== -->

  <!-- Build Zip file -->
  <target name="zip" depends="prepare-deploy">
	<!-- Zip file placed in root of deployment directory -->
	<zip zipfile="${deploy.dir}/../prm_${product.version.codename}.zip">
      <zipfileset dir="${deploy.dir}" prefix="prm"
	      excludes="src/**" />
	</zip>
  </target>

  <!-- Build Zip file including source -->
  <target name="zip-src" depends="prepare-deploy-src">
	<!-- Zip file placed in deploy directory with product version -->
	<zip zipfile="${deploy.dir}/../prm_${product.version.codename}-src.zip">
      <zipfileset dir="${deploy.dir}" prefix="prm" />
	</zip>
  </target>

  <!-- Builds the Installer (which is currently a Zip) -->
  <target name="installer" depends="deploy, zip" />

  <!-- Builds the Installer from clean (which is currently a Zip) -->
  <target name="installer-clean" depends="deploy-clean, installer" description="Builds the entire product from scratch into an installer"/>

  <!-- Builds the Installer from source (which is currently a Zip) -->
  <target name="installer-src" depends="deploy-src, zip-src" />

  <!-- Builds the Installer from clean (which is currently a Zip) -->
  <target name="installer-src-clean" depends="deploy-clean, installer-src" description="Builds the entire product with sources from scratch into an installer"/>

    <target name="-prepare-patch" depends="-init">
        <property name="patch.output.dir" value="${output.dir}/../patch" />
        <mkdir dir="${patch.output.dir}"/>
    </target>

    <!-- This patch has been delivered to: ST -->
    <target name="create-7.6.3-patch-1" depends="-prepare-patch" description="Create Patch 1 for 7.6.3">
        <property name="currentpatch.output.dir" value="${patch.output.dir}/patch1" />
        <mkdir dir="${currentpatch.output.dir}"/>

        <delete file="${currentpatch.output.dir}/763Patch1-classes.zip"/>
        <zip zipfile="${currentpatch.output.dir}/763Patch1-classes.zip">
            <zipfileset dir="${output.dir}/java/" prefix="classes">
                <include name="pnet/schedule/fixoverallocations_sjsp.class"/>
                <include name="net/project/schedule/ScheduleEntry.class"/>
                <include name="net/project/schedule/ScheduleEntry$*.class"/>
                <include name="net/project/schedule/TaskEndpointCalculation.class"/>
                <include name="net/project/schedule/TaskEndpointCalculation$*.class"/>
                <include name="net/project/schedule/Schedule.class"/>
                <include name="net/project/schedule/Schedule$*.class"/>
                <include name="net/project/space/SpaceFactory.class"/>
                <include name="net/project/space/SpaceFactory$*.class"/>
                <include name="net/project/base/finder/Finder.class"/>
                <include name="net/project/base/finder/Finder$*.class"/>
                <include name="net/project/schedule/TaskFinder.class"/>
                <include name="net/project/schedule/TaskFinder$*.class"/>
                <include name="net/project/persistence/PersistenceException.class"/>
                <include name="net/project/persistence/PersistenceException$*.class"/>
                <!--<include name=""/>-->
            </zipfileset>
        </zip>

        <delete file="${currentpatch.output.dir}/763Patch1-database.zip"/>
        <zip zipfile="${currentpatch.output.dir}/763Patch1-database.zip">
            <zipfileset dir="${source.dir}/patch/">
                <include name="patch1.sql"/>
            </zipfileset>
        </zip>

        <copy file="${source.dir}/patch/7.6.3-Patch1-ReleaseNotes.txt"
              todir="${currentpatch.output.dir}"/>
    </target>

    <!-- ENW Bugs -->
    <target name="create-7.6.3-patch-2" depends="-prepare-patch" description="Create Patch 2 for 7.6.3">
        <property name="currentpatch.output.dir" value="${patch.output.dir}/patch2" />
        <mkdir dir="${currentpatch.output.dir}"/>

        <delete file="${currentpatch.output.dir}/763Patch2-classes.zip"/>
        <zip zipfile="${currentpatch.output.dir}/763Patch2-classes.zip">
            <zipfileset dir="${output.dir}/java/" prefix="classes">
                <include name="pnet/channel/customizechannels_sjsp.class"/>
                <include name="pnet/document/documentaddlink_sjsp.class"/>
                <include name="pnet/discussion/postnewprocessing_sjsp.class"/>
                <include name="pnet/schedule/main_sjsp.class"/>
                <include name="pnet/schedule/workingtime/edit_sjsp.class"/>
                <include name="pnet/schedule/workingtime/list_sjsp.class"/>
                <include name="net/project/discussion/DiscussionGroup.class"/>
                <include name="net/project/discussion/DiscussionGroup$*.class"/>
                <include name="net/project/discussion/Post.class"/>
                <include name="net/project/discussion/Post$*.class"/>
                <include name="net/project/notification/EventCodes.class"/>
                <include name="net/project/notification/EventCodes$*.class"/>
                <include name="net/project/resource/ResourceAllocationCalendar.class"/>
                <include name="net/project/resource/ResourceAllocationCalendar$*.class"/>
                <include name="net/project/schedule/mvc/ScheduleHandlerMapping.class"/>
                <include name="net/project/schedule/mvc/ScheduleHandlerMapping$*.class"/>
            </zipfileset>

            <!-- BFD-1900
                Java/net/project/news/News.java
                Java/net/project/news/NewsManager.java
                Java/net/project/util/XSLFormat.java
                Java/net/project/util/XSLFormatTest.java
                Jsp/pnet/news/include/NewsChannel.jsp
                Jsp/pnet/news/xsl/news-channel.xsl
            -->
            <zipfileset dir="${output.dir}/java/" prefix="classes">
                <include name="net/project/news/News.class"/>
                <include name="net/project/news/News$*.class"/>
                <include name="net/project/news/NewsManager.class"/>
                <include name="net/project/news/NewsManager$*.class"/>
                <include name="net/project/util/XSLFormat.class"/>
                <include name="net/project/util/XSLFormat$*.class"/>
                <include name="pnet/news/include/newschannel_sjsp.class"/>

            </zipfileset>
            <zipfileset dir="${output.dir}/java/" prefix="app">
                <include name="pnet/news/xsl/news-channel.xsl"/>

            </zipfileset>

            <!-- BFD-1906
                Jsp/pnet/schedule/MPXImportResult.jsp
                Jsp/pnet/workflow/envelope/EnvelopeWizardPage2.jsp
            -->
            <zipfileset dir="${output.dir}/java/" prefix="classes">
                <include name="pnet/schedule/mpximportresult_sjsp.class"/>
                <include name="pnet/workflow/envelope/envelopewizardpage2_sjsp.class"/>
            </zipfileset>
            <!-- BFD-1907
                Jsp/pnet/business/Setup.jsp
                Jsp/pnet/methodology/Actions.jsp
                Jsp/pnet/methodology/TemplifySpace.jsp
            -->
            <zipfileset dir="${output.dir}/java/" prefix="classes">
                <include name="pnet/business/setup_sjsp.class"/>
                <include name="pnet/methodology/actions_sjsp.class"/>
                <include name="pnet/methodology/templifyspace_sjsp.class"/>
            </zipfileset>
        </zip>

        <delete file="${currentpatch.output.dir}/763Patch2-database.zip"/>
        <zip zipfile="${currentpatch.output.dir}/763Patch2-database.zip">
            <zipfileset dir="${source.dir}/patch/">
                <include name="Patch2.sql"/>
            </zipfileset>
        </zip>

        <copy file="${source.dir}/patch/7.6.3-Patch2-ReleaseNotes.txt"
              todir="${currentpatch.output.dir}"/>
    </target>

    <target name="create-7.6.3-patch-3" depends="-prepare-patch" description="Create Patch 3 for 7.6.3">
        <property name="currentpatch.output.dir" value="${patch.output.dir}/patch3" />
        <mkdir dir="${currentpatch.output.dir}"/>

        <delete file="${currentpatch.output.dir}/763Patch3-classes.zip"/>
        <zip zipfile="${currentpatch.output.dir}/763Patch3-classes.zip">
            <zipfileset dir="${output.dir}/java/" prefix="classes">
                <include name="pnet/document/documentaddlink_sjsp.class"/>
                <include name="net/project/schedule/ScheduleEntry.class"/>
                <include name="net/project/schedule/ScheduleEntry$*.class"/>
                <!--<include name=""/>-->
            </zipfileset>
        </zip>

        <delete file="${currentpatch.output.dir}/763Patch1-database.zip"/>
        <zip zipfile="${currentpatch.output.dir}/763Patch1-database.zip">
            <zipfileset dir="${source.dir}/patch/">
                <include name="patch1.sql"/>
            </zipfileset>
        </zip>

        <copy file="${source.dir}/patch/7.6.3-Patch3-ReleaseNotes.txt"
              todir="${currentpatch.output.dir}"/>
    </target>

  <!-- ===================================================================
       Cleans everything: build tree
               - build tree
       =================================================================== -->
  <target name="clean" depends="-init" description="Delete all of the files from the resource and output directories">
    <delete dir="${output.dir}" />
	<delete dir="${resource.dest}" />
  </target>


</project>
