<!--
        Build script for Eclipse.org Articles
        $Id: build.xml,v 1.3 2006/04/19 17:39:20 wbeaton Exp $
        author: Chris Aniszczyk <zx@us.ibm.com>
        author: Lawrence Mandel <lmandel@ca.ibm.com>
-->

<project name="eclipse.org article (docbook)" default="build-doc" basedir=".">
	
	<!-- ========== Properties: User Defined Options ========================= -->	
	
	<property name="article.name" value="eclipse-platform-whitepaper"/>
	<property name="article.stylesheet" value="article.xsl"/>
	<property name="article.pdf.stylesheet" value="article-pdf.xsl"/>
	 
	<property name="dest.dir" value="."/>
	<property name="download.dir" value="${user.home}${file.separator}downloads"/>
	
	<property name="docbook.dir" value="${download.dir}${file.separator}docbook-xsl-1.69.1"/>
	<property name="docbookxsl.url" value="http://internap.dl.sourceforge.net/sourceforge/docbook/docbook-xsl-1.69.1.zip"/>
	<property name="fop.dir" value="${download.dir}${file.separator}fop-0.20.5"/>
	<property name="fop.url" value="http://apache.mirrors.tds.net/xml/fop/fop-0.20.5-bin.zip"/>
	<property name="jai.dir" value="ENTER_JAI_DIRECTORY"/>
	
	<property name="build.home" value="build"/>
		
	<!-- ========== Macro Definition =================================================== -->	
	
    <macrodef name="docbook2pdf">
        <attribute name="source"/>
    	<attribute name="target"/>
        <sequential>
        	<taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop">
        		<classpath>
        			<pathelement location="${fop.dir}${file.separator}build${file.separator}fop.jar" />
        			<pathelement location="${fop.dir}${file.separator}lib${file.separator}avalon-framework-cvs-20020806.jar" />
        			<pathelement location="${fop.dir}${file.separator}lib${file.separator}batik.jar" />
        			<pathelement location="${jai.dir}${file.separator}lib${file.separator}jai_core.jar" />
        			<pathelement location="${jai.dir}${file.separator}lib${file.separator}jai_codec.jar" />
        		</classpath>
        	</taskdef>
        	<fop 
        		format="application/pdf" 
        		fofile="@{source}" 
        		outfile="@{target}"
        		messagelevel="info"/>
        </sequential>
    </macrodef>
	
	<!-- ========== Targets =================================================== -->	
		
	<target name="init">
		<mkdir dir="${download.dir}"/>
		
		<available file="${jai.dir}" property="jai.exists"/>
		<antcall target="notifyJAI"/>
	</target>
	
	<target name="notifyJAI" unless="jai.exists">
		<echo message="The Java Advanced Imaging (JAI) library is not available."/>
		<echo message="JAI is required if you want to use PNG images in your article."/>
		<echo message="You can download JAI from http://java.sun.com/products/java-media/jai/downloads/download-1_1_2_01.html."/>
		<echo message="Specify the JAI installation directory to the article build by providing the parameter jai.dir to this build script."/>
	</target>
	
	<target name="build-doc" depends="init, get-docbook-xsl, get-fop">
		<echo>Building Article...</echo>
		<antcall target="docbook2html"/>
		<antcall target="docbook2pdf"/>
		<antcall target="dist"/>
	</target>
		
	<target name="check-docbook">
		<available file="${download.dir}${file.separator}docbook.zip" property="hasDocbook"/>
	</target>
	
	<target name="check-fop">
		<available file="${download.dir}${file.separator}fop.zip" property="hasFOP"/>
	</target>
		
	<target name="get-docbook-xsl" description="Downloads docbook xsl" depends="check-docbook" unless="hasDocbook">
		<echo>Downloading DocBook XSL...</echo>
		<get dest="${download.dir}${file.separator}docbook.zip" src="${docbookxsl.url}"/>
		<unzip src="${download.dir}${file.separator}docbook.zip" dest="${download.dir}"/>
	</target>
	
	<target name="get-fop" description="Downloads FOP" depends="check-fop" unless="hasFOP">
		<echo>Downloading FOP...</echo>
		<get dest="${download.dir}${file.separator}fop.zip" src="${fop.url}"/>
		<unzip src="${download.dir}${file.separator}fop.zip" dest="${download.dir}"/>
	</target>
	
	<target name="docbook2html">
		<echo>Converting article to HTML...</echo>
		<delete file="${dest.dir}${file.separator}${article.name}.html"/>
		<xslt in="${article.name}.xml" out="${dest.dir}${file.separator}${article.name}.html" style="${article.stylesheet}">
			<xmlcatalog>
				<entity 
					publicId="docbook.xsl"
				    location="${docbook.dir}${file.separator}html${file.separator}docbook.xsl"/>
			</xmlcatalog>
			<param name="header.rule" expression="1" />
			<param name="admon.graphics.extension" expression=".gif"/>
			<param name="admon.textlabel" expression="0"/>
			<param name="ulink.target" expression="_new"/>
		</xslt>
	</target>
	
	<target name="docbook2pdf">
		<echo>Converting article to PDF...</echo>

		<delete file="${dest.dir}${file.separator}${article.name}.pdf"/>
		<delete file="${dest.dir}${file.separator}${article.name}.fo"/>
		<xslt in="${article.name}.xml" extension="xml" out="${dest.dir}${file.separator}${article.name}.fo" style="${article.pdf.stylesheet}">
			<xmlcatalog>
				<entity 
					publicId="docbook.xsl"
				    location="${docbook.dir}${file.separator}fo${file.separator}docbook.xsl"/>
			</xmlcatalog>
			<param name="generate.toc" expression="book toc" />
			<param name="show.comments" expression="0" />
			<param name="header.rule" expression="1" />
			<param name="admon.graphics.extension" expression=".gif"/>
			<param name="admon.textlabel" expression="0"/>
			<param name="admon.graphics" expression="1"/>
		</xslt>
		
		<docbook2pdf 
			source="${dest.dir}${file.separator}${article.name}.fo"
			target="${dest.dir}${file.separator}${article.name}.pdf"/>
		
		<!-- Remove the resulting formatting object. This object isn't necessary in the
		     result of this build. -->
		<delete file="${dest.dir}${file.separator}${article.name}.fo"/>
	</target>
	
	<target name="dist">
		<echo>Building article zip file...</echo>
		<delete file="${dest.dir}${file.separator}${article.name}.zip"/>
		<zip basedir="${dest.dir}" destfile="${dest.dir}${file.separator}${article.name}.zip"
			 excludes="**/*.xsl, build.xml, ${article.name}.fo, ${article.name}.zip, .project">
		</zip>
		<echo>If you're done with your article, please post the zip file on the related bugzilla entry.</echo>
	</target>

</project>