<project name="benow-repository" default="compile" basedir=".">

	<property name="app.name" value="benow-repository" />
	<property name="app.version" value="1.0" />

	<!-- deploy should be the webapps directory for the servlet container -->
	<property file="/etc/benow/build.properties" />
	<property file="etc/build.properties" />


	<path id="compile.classpath">

		<!-- Include all JAR files that will be included in /WEB-INF/lib -->
		<!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->

		<!-- Include all needed jars -->
		<fileset dir="${lib.home}">
			<include name="*.jar" />
		</fileset>
		<pathelement path="${build.home}" />
    <pathelement location="${java.home}/../lib/tools.jar"/>
	</path>

	<target name="all" depends="clean,jar" description="Clean build and dist, then compile" />

	<target name="clean" description="Delete old build directories">
		<delete dir="${build.home}" quiet="yes" />
		<delete quiet="yes">
			<fileset dir="." includes="**/*~" defaultexcludes="no" />
		</delete>

		<delete dir="${dist.home}" />
	</target>

	<target name="compile" depends="prepare" description="Compile Java sources">
		<echo message="Java Home ${java.home}" />
		<!-- Compile Java classes as necessary -->
		<javac srcdir="src/java" destdir="${build.home}" debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}">
			<classpath refid="compile.classpath" />
		</javac>

	</target>

	<target name="setup">
		<exec executable="java">
			<arg value="-jar" />
			<arg value="lib/java/benow-launch.jar" />
			<arg value="Launcher" />
			<arg value="--make-script" />
		</exec>
	</target>

	<!-- ==================== Deploy Target =================================== -->

	<!--

  The "deploy" target copies the contents of the build directory into a
  location required by our servlet container, and picks up any external
  dependencies along the way.  AFter restarting the servlet container, you
  can now test your web application.

-->
	<target name="deploy_support" depends="dist" description="Deploy support files (xsl,mapping,etc) to servlet container">

		<available file="${deploy.home}" property="deployExists" />
		<fail unless="deployExists">A deploy directory (${deploy.home}) must be created for deployment to the app server (tomcat, etc).  Please change the deploy.home property in build.properties or, For tomcat, create a $TOMCAT_HOME/webapps/benow directory and create a symbolic link to it by 'ln -s $TOMCAT_HOME/webapps/benow ${deploy.home}'</fail>


	</target>

	<target name="deploy" depends="compile,deploy_support" description="Deploy application to servlet container">
	</target>


	<target name="dist" depends="jar" description="Create binary distribution">
	</target>

	<target name="jar" depends="compile" description="Create binary distribution">
		<echo message="Java Home ${java.home}" />
	    <java classname="org.benow.java.packager.Packager" failonerror="true" fork="true">
	      <classpath refid="compile.classpath"/>
	    </java>

	    <delete file="${app.name}.jar"/>
	    <jar jarfile="${app.name}.jar" basedir="${build.home}" manifest="${build.home}/META-INF/MANIFEST.MF"/>
  
    <antcall target="dev-jar"/>
	</target>


  <target name="dev-jar">
		<mkdir dir="${build.home}/t/lib/java" />
		<copy todir="${build.home}/t/lib/java">
			<fileset file="${app.name}.jar" />
		</copy>
		<mkdir dir="${build.home}/t/etc/config" />
		<copy todir="${build.home}/t/etc/config">
			<fileset file="org.benow.repository.jdbc.xml" />
		</copy>
		<mkdir dir="${build.home}/t/run" />
		<copy todir="${build.home}/t/run">
			<fileset dir="run">
				<include name="*.env" />
			</fileset>
		</copy>
		<mkdir dir="${build.home}/t/run" />
		<copy todir="${build.home}/t/run">
			<fileset file="test_ConnectionTester.env" />
		</copy>
		<mkdir dir="${build.home}/t/src/java/test/org/benow/repository" />
		<copy todir="${build.home}/t/src/java/test/org/benow/repository">
			<fileset file="src/java/test/org/benow/repository/Tutorial.java" />
			<fileset file="src/java/test/org/benow/repository/Person.java" />
		</copy>
		<mkdir dir="${build.home}/t/build/java/test/org/benow/repository" />
		<copy todir="${build.home}/t/build/java/test/org/benow/repository">
			<fileset file="build/java/test/org/benow/repository/Tutorial.class" />
		</copy>
		<mkdir dir="${build.home}/t/src/java/test/org/benow/repository/sample" />
		<copy todir="${build.home}/t/src/java/test/org/benow/repository/sample">
			<fileset dir="src/java/test/org/benow/repository/sample">
				<include name="*.java" />
			</fileset>
		</copy>
		<mkdir dir="${build.home}/t/build/java/test/org/benow/repository/sample" />
		<copy todir="${build.home}/t/build/java/test/org/benow/repository/sample">
			<fileset dir="build/java/test/org/benow/repository/sample">
				<include name="*.class" />
			</fileset>
		</copy>
		<mkdir dir="${build.home}/t/lib" />
		<copy todir="${build.home}/t/lib">
			<fileset dir="lib" />
		</copy>
		<jar jarfile="${app.name}-base.jar" basedir="${build.home}/t" />
		<delete dir="${build.home}/t" />

  </target>

	<!-- ==================== Javadoc Target ================================== -->

	<!--

  The "javadoc" target creates Javadoc API documentation for the Java
  classes included in your application.  Normally, this is only required
  when preparing a distribution release, but is available as a separate
  target in case the developer wants to create Javadocs independently.

-->

	<target name="javadoc" depends="compile" description="Create Javadoc API documentation">

		<delete dir="docs/api" />
		<mkdir dir="docs/api" />
		<javadoc sourcepath="src/java" destdir="docs/api" windowtitle="BeNOW Documentation" doctitle="BeNOW Documentation" packagenames="org.benow.*,test.*">
			<link href="http://benow.ca/docs/jdk1.4/api/" />
			<link href="http://benow.ca/docs/xalan-j_2_0_D5/" />
			<link href="http://benow.ca/docs/xerces-1_2_3/" />
			<link href="http://benow.ca/docs/xerces-1_2_3/" />
			<link href="http://benow.ca/docs/jsdk2.2b/" />
			<classpath refid="compile.classpath" />
		</javadoc>

	</target>



	<!-- ==================== Prepare Target ================================== -->

	<!--

  The "prepare" target is used to create the "build" destination directory,
  and copy the static contents of your web application to it.  If you need
  to copy static files from external dependencies, you can customize the
  contents of this task.

  Normally, this task is executed indirectly when needed.

-->

	<target name="prepare">

		<!-- Create build directory and copy static content -->
		<mkdir dir="${build.home}" />

		<!-- Copy static files from external dependencies as needed -->

	</target>



</project>

