<?xml version="1.0"?>

<!--
	Build file to compile, and package all of the examples
        and servlets for the example code described in
	"Developing for Wireless Devices using J2ME(tm)"
-->
<project name="BookExamples" default="all" basedir=".">

	<!-- External path of the MIDP Emulator and libraries -->
	<property name="J2MEWTK.HOME"   value="d:/j2mewtk"/>
	<property name="midp.classpath"	value="${J2MEWTK.HOME}/lib/midpapi.zip"/>
	<property name="preverifier"    value="${J2MEWTK.HOME}/bin/preverify.exe"/>
	<property name="emulator"	value="${J2MEWTK.HOME}/bin/runMIDlet.exe"/>

	<!-- External path of the Web server and Servlet libraries -->
	<property name="TOMCAT.HOME"	value="d:/jakarta-tomcat-3.2.2"/>
	<property name="servlet.lib" 	value="${TOMCAT.HOME}/lib/servlet.jar"/>
	<property name="servlet.dir"	value="Book"/>
	<property name="servlet.home"	value="${TOMCAT.HOME}/webapps/${servlet.dir}"/>


	<!-- Paths within the examples -->
	<property name="src.dir"        value="src"/>
	<property name="out.dir"        value="lib"/>
	<property name="classes.dir"    value="classes"/>
	<property name="servletWarFile" value="Book.war"/>

	<!-- Compiler flag defaults -->

	<property name="debug" value="off"/>
	<property name="deprecation" value="off"/>
	<property name="optimize" value="off"/>
	<property name="verbose" value= "off"/>

	<!-- The FileSizeTask must be built first using
		ant -buildfile buildtask.xml
	-->
	<taskdef name="filesize" 
		classname="ant.FileSizeTask"
		classpath="lib"/>

	<!-- Default target to build everything in the examples -->
	<target name="all" 
		depends="prepare, compile-midlets,
			helloworld, addressbook, animation, netclient,
			photoalbum, sample, sokoban, timermidlet,
			installmidlets, servlets, Book.war"/>

	<!-- Create any necessary directories -->
	<target name="prepare">
		<mkdir dir="${out.dir}"/>
		<mkdir dir="${classes.dir}"/>
		<mkdir dir="${servlet.home}/WEB-INF/classes"/>
		<tstamp/>
	</target>

	<!-- Compile and preverify a bunch of MIDP source files -->
	<target name="compile-midlets" depends="prepare">
		<javac
			srcdir="${src.dir}"
			destdir="${classes.dir}"
			bootclasspath="${midp.classpath}"
			includes="examples/**/*.java"
			excludes="**/SCCS/"
			verbose="${verbose}"
			optimize="${optimize}"
			debug="${debug}"
			deprecation="${deprecation}">
		</javac>

		<exec
			executable="${preverifier}">
			    <arg line="-classpath ${classes.dir};${midp.classpath} -d ${classes.dir} ${classes.dir} "/>
		</exec>
	</target>


	<target name="preverify">
		<exec
			dir="${classes.dir}"
			executable="${preverifier}">
			    <arg line="-classpath ${midp.classpath} -d ${subdir} ${subdir}"/>
		</exec>
	</target>



	<!-- Assemble the contents of the jar file and create it -->
	<target name="make-jar" >
		<copy todir="${classes.dir}">
			<fileset dir="${src.dir}"
				includes="${subdir}/**"
				excludes="**/SCCS/,**/*.java,**/*.xml,
					**/*.mf,**/*.jad" />
		</copy>
		<jar	manifest="${src.dir}/${subdir}/Manifest.mf"
	      		basedir="${classes.dir}"
			includes="${subdir}/**"
      			jarfile="${out.dir}/${jarFile}"
      			compress="yes"/>
		<!-- Copy the Descriptor file to the lib directory
			and update the jarSize in the descriptor  -->
		<filesize file="${out.dir}/${jarFile}" property="jarSize"/>
		<filter token="jarSize" value="${jarSize}"/>
		<filter token="jarURL" value="http://localhost:8080/Book/" />
		<copy todir="${out.dir}" filtering="true" overwrite="true">
			<fileset dir="${src.dir}/${subdir}"
				includes="*.jad"/>
		</copy>
	</target>


	<!-- Remove everything generated by this build file -->
	<target name="clean">
		<delete>
			<fileset dir="${out.dir}"
				includes="*.jar,*.jad,*.war" />
			<fileset dir="${classes.dir}" />
	  		<fileset defaultexcludes="no" dir="${basedir}">
				<include name="**/*~"/>
				<include name="**/LOG"/>
				<include name="**/*.bak"/>
	  		</fileset>
			<fileset dir="${servlet.home}"/>
		</delete>
	</target>

	<!--  Targets to build individual jar files -->
	<target name="helloworld">
		<antcall target="make-jar">
			<param name="subdir" value="examples/helloworld"/>
			<param name="jarFile" value="HelloWorld.jar"/>
		</antcall>
	</target>
	
	<target name="addressbook">
		<antcall target="make-jar">
			<param name="subdir" value="examples/addressbook"/>
			<param name="jarFile" value="AddressBook.jar"/>
		</antcall>
	</target>
	
	<target name="animation">
		<antcall target="make-jar">
			<param name="subdir" value="examples/animation"/>
			<param name="jarFile" value="Animation.jar"/>
		</antcall>
	</target>
	
	<target name="netclient">
		<antcall target="make-jar">
			<param name="subdir" value="examples/netclient"/>
			<param name="jarFile" value="NetClient.jar"/>
		</antcall>
	</target>

	<target name="photoalbum">
		<antcall target="make-jar">
			<param name="subdir" value="examples/photoalbum"/>
			<param name="jarFile" value="PhotoAlbum.jar"/>
		</antcall>
	</target>

	<target name="sample">
		<antcall target="make-jar">
			<param name="subdir" value="examples/sample"/>
			<param name="jarFile" value="Sample.jar"/>
		</antcall>
	</target>

	<target name="sokoban">
		<antcall target="make-jar">
			<param name="subdir" value="examples/sokoban"/>
			<param name="jarFile" value="Sokoban.jar"/>
		</antcall>
	</target>
	
	<target name="timermidlet">
		<antcall target="make-jar">
			<param name="subdir" value="examples/timermidlet"/>
			<param name="jarFile" value="TimerMIDlet.jar"/>
		</antcall>
	</target>
	
	<target name="installmidlets">
	    <copy todir="${servlet.home}" >
		<fileset dir="${out.dir}"
			includes="*.jar,*.jad" />
		<fileset dir="${src.dir}/examples" includes="index.html" />
	    </copy>
	</target>

	<!-- Target the invoke the emulator -->
	<target name="run">
		<exec executable="${emulator}">
		</exec>
	</target>

	<!-- Compile the servlets into the webapps/Book
		directory in the tomcat server so they are
		ready to run -->
	<target name="servlets" depends="prepare">
	    <javac
		srcDir="${src.dir}"
		includes="servlets/*.java"
		destDir="${servlet.home}/WEB-INF/${classes.dir}"
		classPath="${servlet.lib}"
	 	debug="${debug}"
		optimize="${optimize}"
		deprecation="${deprecation}"
		excludes="**/SCCS/"/>
	    <copy  file="${src.dir}/servlets/web.xml"
		 tofile="${servlet.home}/WEB-INF/web.xml"/>

	</target>

	<!-- Build a war file for the MIDlets and servlets that
 		can be used with any server -->
	<target name="Book.war" depends="servlets">
	    <war warfile="${out.dir}/${servletWarFile}"
		webxml="${servlet.home}/WEB-INF/web.xml"
		basedir="${servlet.home}" 
		includes="WEB-INF/classes/**,*.jad,*.jar, index.html" />
	</target>

</project>
