<project name="esup-portlet-XXXX" default="compile" basedir=".">
	
	<!-- Fichier de configuration -->
	<property file="build.properties" />
	
	<!-- Chemins Source -->
	<property name="source.home" value="source" />
	<property name="properties.home" value="properties" />
	<property name="db.home" value="db" />
	<property name="webpages.home" value="webpages" />
	<property name="media.home" value="${webpages.home}/media" />
	<property name="stylesheets.home" value="${webpages.home}/stylesheets" />
	<property name="taglib.home" value="${webpages.home}/tags" />
	<property name="dist.home" value="dist" />
	<property name="lib.home" value="lib" />
	<property name="doc.home" value="docs" />
	<property name="javadoc.home" value="${doc.home}/api" />
	
	<!-- Chemins Build -->
	<property name="build.home" value="build" />
	<property name="build.web" value="${build.home}/WEB-INF" />
	<property name="build.classes" value="${build.web}/classes" />
	<property name="build.jsp" value="${build.web}/jsp" />
	<property name="build.taglib" value="${build.web}/tags" />
	<property name="build.static" value="${build.home}/images" />
	<property name="build.lib" value="${build.web}/lib" />
	
	<!-- Chemins DocBook -->
	<property name="docbook.home" value="${doc.home}/docbook"/>
	<property name="pages.root.dir" value="${docbook.home}/pages"/>
	<property name="pages.xml" value="${pages.root.dir}/xml"/>
	<property name="pages.htmlgen" value="${pages.root.dir}/htmlgen"/>
	<property name="pages.html" value="${pages.htmlgen}/${application.name}"/>
	<property name="media.xml" value="${pages.xml}/media"/>
	<property name="media.html" value="${pages.html}/media"/>
	<property name="lib.dir" value="${docbook.home}/lib"/>
	<property name="xsl.dir" value="${docbook.home}/xsl"/>
	<property name="xsl.file" value="docbookEsup.xsl"/>
	<property name="lib.file.1" value="saxon.jar"/>
	<property name="lib.file.2" value="saxon-jdom.jar"/>
	<property name="presentation.file" value="presentation"/>
	<property name="installation.file" value="installation"/>
	<property name="utilisation.file" value="utilisation"/>
	<property name="exploitation.file" value="exploitation"/>
	
	<!-- Options de compilation -->
	<property name="compile.debug" value="true" />
	<property name="compile.deprecation" value="true" />
	<property name="compile.optimize" value="true" />
	
	<!-- ClassPath -->
	<path id="compile.classpath">
		<!-- Librairies Portail -->
		<fileset dir="${portal.lib}" includes="**/*.jar" />
		<!-- Librairies Tomcat -->
		<fileset dir="${tomcat.home}/common/lib" includes="**/*.jar" />
		<!-- Librairies locales -->
		<fileset dir="${lib.home}" includes="**/*.jar" />
	</path>
	
	<!-- Target all -->
	<target name="all" description="Déploiement complet de la portlet" depends="undeploy,clean,deploy" />
	
	<!-- Target clean -->
	<target name="clean" description="Suppression des répertoires ${build.home} et ${dist.home}">
		<delete dir="${build.home}" />
		<delete dir="${dist.home}" />
	</target>
	
	<!-- Target prepare -->
	<available file="CHANGELOG" type="file" property="changelogExists" />
	<target name="prepareCHANGELOG" unless="changelogExists">
		<echo message="Le fichier CHANGELOG contient l'historique des modifications de la Portlet" level="info" />
		<touch file="CHANGELOG" />
	</target>
	
	<target name="prepare" description="Preparation de l'environnement de travail" >
		<mkdir dir="${build.classes}" />
		<mkdir dir="${javadoc.home}" />
		<mkdir dir="${source.home}" />
		<mkdir dir="${properties.home}" />
		<mkdir dir="${lib.home}" />
		<mkdir dir="${media.home}" />
		<mkdir dir="${stylesheets.home}" />
		<mkdir dir="${db.home}" />
		<mkdir dir="${dist.home}" />
		<mkdir dir="${taglib.home}" />
		
		<antcall target="prepareCHANGELOG" />
		
	</target>
	
	<!-- Target compile -->
	<target name="compile" description="Compilation" depends="prepare">
		<javac srcdir="${source.home}" destdir="${build.classes}" debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}">
			<classpath refid="compile.classpath" />
		</javac>
	</target>
	
	<!-- Target init -->
	<target name="init" depends="compile">
		<!-- Copie des fichiers de configuration -->
		<copy todir="${build.classes}" overwrite="true">
			<fileset dir="${properties.home}" />
		</copy>
		<!-- Copie des pages JSP -->
		<copy todir="${build.jsp}">
			<fileset dir="${stylesheets.home}" />
		</copy>
		<!-- Copie des ressources statiques -->
		<copy todir="${build.static}">
			<fileset dir="${media.home}" />
		</copy>
		<!-- Copie des taglibs -->
		<copy todir="${build.taglib}">
			<fileset dir="${taglib.home}" />
		</copy>
		<!-- Copie des librairies -->
		<copy todir="${build.lib}">
			<fileset dir="${lib.home}" />
		</copy>
		<!-- Copie portlet.xml -->
		<copy file="${webpages.home}/portlet.xml" tofile="${build.web}/portlet.xml" />
		<!-- Copie web.xml -->
		<copy file="${webpages.home}/web.xml" tofile="${build.web}/web.xml" overwrite="true" />
	</target>
	
	<!-- Target deploy -->
	<target name="deploy" description="Déploiement de la portlet" depends="init">
		<!-- Copie web-pluto.xml -->
		<copy file="${webpages.home}/web-pluto.xml" tofile="${build.web}/web.xml" overwrite="true" />
		<!-- Copie webapps -->
		<copy todir="${deploy.home}/${application.name}">
			<fileset dir="${build.home}" />
		</copy>
	</target>
	
	<!-- Target undeploy -->
	<target name="undeploy" description="Suppression de la portlet">
		<delete dir="${deploy.home}/${application.name}" />
	</target>
	
	<!-- Target buildwar -->
	<target name="buildwar" description="Construit une archive WAR" depends="init">
		<jar basedir="${build.home}" destfile="${dist.home}/${application.name}.war" />
	</target>
	
	<!-- Target buildzip -->
	<target name="buildzip" description="Construit le package ZIP" depends="prepare">
		<delete file="${dist.home}/${application.name}-${application.version}.zip" />
		
		<!-- Creation du .zip -->
		<zip destfile="${dist.home}/${application.name}-${application.version}.zip">
			<!-- Sources Java -->
			<zipfileset dir="${source.home}" includes="**/*.java" prefix="${application.name}-${application.version}/${source.home}" />
			<!-- Librairies -->
			<zipfileset dir="${lib.home}" includes="**/*.jar" prefix="${application.name}-${application.version}/${lib.home}" />
			<!-- Webpages -->
			<zipfileset dir="${webpages.home}" includes="**/*.xml,**/*.gif,**/*.jpg,**/*.png,**/*.css,**/*.js,**/*.tld,**/*.tag,**/*.jsp" prefix="${application.name}-${application.version}/${webpages.home}" />
			<!-- Properties -->
			<zipfileset dir="${properties.home}" includes="**/*.dtd,**/*.xml,**/*.properties,**/*.html" prefix="${application.name}-${application.version}/${properties.home}">
				<include name="config.properties.sample"/>
				<exclude name="config.properties"/>
			</zipfileset>
			<!-- Documentation -->
			<zipfileset dir="${pages.xml}" includes="**/*.xml,**/*.gif,**/*.jpg" prefix="${application.name}-${application.version}/${pages.xml}" />
			<!-- Base de données -->
			<zipfileset dir="${db.home}" includes="**/*" prefix="${application.name}-${application.version}/${db.home}" />
			<!-- Racine -->
			<zipfileset dir="." prefix="${application.name}-${application.version}" >
				<include name="*"/>
				<exclude name=".*"/>
				<exclude name="build.properties"/>		 	
			</zipfileset>
		</zip>
	</target>
	
	<!-- Target depends-docbook -->
	<target name="depends-docbook">
		<mkdir dir="${media.xml}"/>
		<mkdir dir="${media.html}"/>
		<mkdir dir="${lib.dir}"/>
		<mkdir dir="${xsl.dir}"/>
		<available property="docbook.lib.1" file="${lib.dir}/${lib.file.1}"/>
		<available property="docbook.lib.2" file="${lib.dir}/${lib.file.2}"/>
		<available property="docbook.xsl" file="${xsl.dir}/${xsl.file}"/>
	</target>
	
	<!-- Target download-lib-1 -->
	<target name="download-lib-1" depends="depends-docbook" unless="docbook.lib.1">
		<echo message="${lib.file.1} absent, téléchargement..."/>
		<get dest="${lib.dir}/${lib.file.1}" src="${url.lib}/${lib.file.1}"/>
		<echo message="${lib.file.1} copié dans ${lib.dir}"/>
	</target>
	
	<!-- Target download-lib-2 -->
	<target name="download-lib-2" depends="download-lib-1" unless="docbook.lib.2">
		<echo message="${lib.file.2} absent, téléchargement..."/>
		<get dest="${lib.dir}/${lib.file.2}" src="${url.lib}/${lib.file.2}"/>
		<echo message="${lib.file.2} copié dans ${lib.dir}"/>
	</target>
	
	<!-- Target download-xsl -->
	<target name="download-xsl" depends="download-lib-2" unless="docbook.xsl">
		<echo message="${xsl.file} absent, téléchargement..."/>
		<get dest="${xsl.dir}/${xsl.file}" src="${url.xsl}/${xsl.file}"/>
		<echo message="${xsl.file} copié dans ${xsl.dir}"/>
	</target>
		
	<!-- Target docbook.html -->
	<target name="docbook.html" depends="download-xsl" description="Génération du DocBook en HTML">
		<!-- Nettoyage -->
		<delete dir="${pages.htmlgen}"/>
		<mkdir dir="${pages.htmlgen}"/>
		<mkdir dir="${pages.html}"/>
		<!-- Transformation XSL -->
		<xslt basedir="${pages.xml}" includes="${installation.file}.xml,${utilisation.file}.xml,${exploitation.file}.xml" destdir="${pages.html}" style="${xsl.dir}/${xsl.file}" force="true">
			<classpath>
				<fileset dir="${lib.dir}">
					<include name="**/*.jar"/>
				</fileset>
			</classpath>
		</xslt>
		<!-- Tests conditionnels -->
		<available property="install.html" file="${pages.html}/${installation.file}.html"/>
		<available property="util.html" file="${pages.html}/${utilisation.file}.html"/>
		<available property="exploit.html" file="${pages.html}/${exploitation.file}.html"/>
		<!-- Transformation XSL -->
		<xslt in="${pages.xml}/${presentation.file}.xml" out="${pages.html}/index.html" style="${xsl.dir}/${xsl.file}" force="true">
			<classpath>
				<fileset dir="${lib.dir}">
					<include name="**/*.jar"/>
				</fileset>
			</classpath>
			<param name="exist.installation" expression="${install.html}"/>
			<param name="exist.utilisation" expression="${util.html}"/>
			<param name="exist.exploitation" expression="${exploit.html}"/>
			<param name="file.installation" expression="${installation.file}.html"/>
			<param name="file.utilisation" expression="${utilisation.file}.html"/>
			<param name="file.exploitation" expression="${exploitation.file}.html"/>
		</xslt>
		<!-- Copie des images -->
		<copy todir="${media.html}">
			<fileset dir="${media.xml}" includes="**/*"/>
		</copy>
	</target>
	
	<!-- Target docbook.html.noindex -->
	<target name="docbook.html.noindex" depends="download-xsl" description="Génération du DocBook en HTML (sans index)">
		<!-- Nettoyage -->
		<delete dir="${pages.htmlgen}"/>
		<mkdir dir="${pages.htmlgen}"/>
		<mkdir dir="${pages.html}"/>
		<!-- Transformation XSL -->
		<xslt basedir="${pages.xml}" includes="${installation.file}.xml,${utilisation.file}.xml,${exploitation.file}.xml" destdir="${pages.html}" style="${xsl.dir}/${xsl.file}" force="true">
			<classpath>
				<fileset dir="${lib.dir}">
					<include name="**/*.jar"/>
				</fileset>
			</classpath>
			<param name="withindex" expression="false"/>
		</xslt>
		<!-- Tests conditionnels -->
		<available property="install.html" file="${pages.html}/${installation.file}.html"/>
		<available property="util.html" file="${pages.html}/${utilisation.file}.html"/>
		<available property="exploit.html" file="${pages.html}/${exploitation.file}.html"/>
		<!-- Transformation XSL -->
		<xslt in="${pages.xml}/${presentation.file}.xml" out="${pages.html}/index.html" style="${xsl.dir}/${xsl.file}" force="true">
			<classpath>
				<fileset dir="${lib.dir}">
					<include name="**/*.jar"/>
				</fileset>
			</classpath>
			<param name="exist.installation" expression="${install.html}"/>
			<param name="exist.utilisation" expression="${util.html}"/>
			<param name="exist.exploitation" expression="${exploit.html}"/>
			<param name="file.installation" expression="${installation.file}.html"/>
			<param name="file.utilisation" expression="${utilisation.file}.html"/>
			<param name="file.exploitation" expression="${exploitation.file}.html"/>
			<param name="withindex" expression="false"/>
		</xslt>
		<!-- Copie des images -->
		<copy todir="${media.html}">
			<fileset dir="${media.xml}" includes="**/*"/>
		</copy>
	</target>
	
</project>
