<?xml version="1.0"?>

<project name="smc Interview Presentation" default="all" basedir=".">

	<property environment="env" />
	<property name="JBOSS_HOME" value="${env.JBOSS_HOME}" />
	<property name="deployDir" value="${JBOSS_HOME}/server/default/deploy" />
	<property name="presentationName" value="jspservletlifecycle" />
	<property name="tempPresentationName" value="temp-${presentationName}" />

	<property name="lib.dir" location="lib" />
	<property name="base.dir" location="${basedir}" />
	<property name="web-src.dir" location="${base.dir}/webSrc" />
	<property name="html-chunk.dir" location="${base.dir}/webSrc/html-chunk" />
	<property name="html-single.dir" location="${base.dir}/webSrc/html-single" />
	<property name="pdf.dir" location="${base.dir}/webSrc/pdf" />
	<property name="xml.dir" location="${base.dir}/webSrc/xml" />
	<property name="foImageRoot" value="webSrc/images/" />
	<property name="htmlImageRoot" value="/${presentationName}/images/" />
	<property name="exampleSrc" value="${base.dir}/exampleSrc" />
	<property name="exampleFormatted" value="${base.dir}/exampleFormatted" />

	<path id="project.classpath">
		<fileset dir="${lib.dir}">
			<include name="*.jar" />
		</fileset>
	</path>
	<target name="init">
		<taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop">
			<classpath refid="project.classpath" />
		</taskdef>

		<taskdef name="java2html" classname="de.java2html.anttasks.Java2HtmlTask">
			<classpath refid="project.classpath" />
		</taskdef>

		<delete file="${tempPresentationName}.xml" failonerror="false" />
		<copy file="${presentationName}.xml" tofile="${tempPresentationName}.xml" />

		<delete dir="${base.dir}/webSrc" failonerror="false" />
		<mkdir dir="${base.dir}/webSrc" />
		<mkdir dir="${base.dir}/webSrc/images"/>
		<copy file="${base.dir}/UML/JSPServletClassDiagram.png" todir="${web-src.dir}/images" />
	</target>


	<target name="all" depends="init, html-chunk, html, add-examples, pdf, xml, war, deploy" />

	<target name="add-examples">
		<loadfile property="servletJspHTML" srcfile="${exampleFormatted}/org/apache/jsp/HelloWorld_jsp.java.html" />
		<loadfile property="servletHTML" srcfile="${exampleFormatted}/HelloWorldServlet.java.html" />
		<replace summary="true" encoding="US-ASCII" dir="${web-src.dir}" token="***HelloWorldServlet***" value="${servletHTML}" />
		<replace summary="true" dir="${web-src.dir}" token="***HelloWorld_jsp***" value="${servletJspHTML}" />

		
		<loadfile property="servletJsp" srcfile="${exampleSrc}/org/apache/jsp/HelloWorld_jsp.java" />
		<loadfile property="servlet" srcfile="${exampleSrc}/HelloWorldServlet.java" />
		<replace summary="true" file="${tempPresentationName}.xml" token="&lt;simpara&gt;&lt;![CDATA[***HelloWorld_jsp***]]&gt;&lt;/simpara&gt;" value="&lt;programlisting&gt;&lt;![CDATA[${servletJsp}]]&gt;&lt;/programlisting&gt;" />
		<replace summary="true" file="${tempPresentationName}.xml" token="&lt;simpara&gt;&lt;![CDATA[***HelloWorldServlet***]]&gt;&lt;/simpara&gt;" value="&lt;programlisting&gt;&lt;![CDATA[${servlet}]]&gt;&lt;/programlisting&gt;" />

	</target>

	<target name="format-examples">
		<java2html srcdir="${exampleSrc}" destdir="${exampleFormatted}" includes="**/*.java" style="eclipse" showLineNumbers="true" showFileName="true" showTableBorder="true" />
	</target>

	<target name="html" depends="init">
		<delete dir="${html-single.dir}" />
		<mkdir dir="${html-single.dir}" />
		<replace summary="true" file="${base.dir}/${tempPresentationName}.xml" token="${foImageRoot}" value="${htmlImageRoot}" />
		<xslt in="${base.dir}/${tempPresentationName}.xml" style="${base.dir}/docbook-xsl-1.68.1/xhtml/docbook.xsl" out="${html-single.dir}/index.html" destdir="${base.dir}/" />
	</target>

	<target name="html-chunk" depends="init">
		<delete dir="${html-chunk.dir}" />
		<mkdir dir="${html-chunk.dir}" />
		<replace summary="true" file="${base.dir}/${tempPresentationName}.xml" token="${foImageRoot}" value="${htmlImageRoot}" />
		<xslt in="${base.dir}/${tempPresentationName}.xml" style="${base.dir}/docbook-xsl-1.68.1/xhtml/chunk.xsl" out="${html-chunk.dir}/index.html" destdir="${base.dir}/" />
	</target>

	<target name="createFo" depends="init">
		<replace summary="true" file="${base.dir}/${tempPresentationName}.xml" token="${htmlImageRoot}" value="${foImageRoot}" />
		<xslt in="${base.dir}/${tempPresentationName}.xml" style="${base.dir}/docbook-xsl-1.68.1/fo/docbook.xsl" out="${base.dir}/${tempPresentationName}.fo" destdir="${base.dir}/" />
	</target>


	<target name="pdf" depends="init,createFo">
		<delete dir="${pdf.dir}" />
		<mkdir dir="${pdf.dir}" />
		<fop fofile="${base.dir}/${tempPresentationName}.fo" outfile="${pdf.dir}/${presentationName}.pdf" />
	</target>

	<target name="xml" depends="init">
		<delete dir="${xml.dir}" />
		<mkdir dir="${xml.dir}" />
		<copy file="${base.dir}/${presentationName}.xml" todir="${xml.dir}" />
	</target>


	<target name="war" depends="init">
		<copy file="${base.dir}/build.xml" todir="${xml.dir}" />
		<copy file="${base.dir}/${tempPresentationName}.fo" todir="${xml.dir}" />

		<jar destfile="${presentationName}.war">
			<fileset dir="${base.dir}/webSrc">
				<include name="**" />
			</fileset>
		</jar>
	</target>
	<target name="deploy">
		<copy file="${base.dir}/${presentationName}.war" todir="${deployDir}" />
	</target>

</project>
