<?xml version="1.0" encoding="UTF-8"?>
<project name="hsarback" default="war">

	<property name="build.home" value="${basedir}/build" />
	<property name="lib.home" value="${basedir}/lib" />
	<property name="conf.home" value="${basedir}/conf" />
	<property name="src.home" value="${basedir}/src" />
	<property name="test.home" value="${basedir}/test" />
	<property name="dist.home" value="${basedir}/dist" />

	<property file="${user.home}/.hsar.ant.properties" />
	
	<!-- Optionen  für Java-Compiler-->
	<property name="compile.debug" value="true" />
	<property name="compile.deprecation" value="true" />
	<property name="compile.optimize" value="true" />

	<path id="compile.classpath">
		<fileset dir="lib">
			<include name="*.jar" />
		</fileset>
	</path>

	<path id="enhance.classpath">
		<fileset dir="lib">
			<include name="*.jar" />
		</fileset>
		<dirset dir="conf"/>
		<dirset dir="${build.home}"/>
	</path>

	<target name="clean" description="aufräumen">
		<delete dir="${build.home}" />
		<delete dir="${dist.home}" />
		<delete file="webapp/WEB-INF/web.xml" />
		<delete file="webapp/META-INF/context.xml" />
	</target>

	<target name="deploy" depends="war">
		<delete dir="${hsar.deploy.dir}/hsar" />
		<copy file="build/hsar.war" todir="${hsar.deploy.dir}" />
		<!-- <sleep minutes="2"/> -->
	</target>

	<target name="jar" depends="enhance">
		<jar destfile="build/hsar.jar">
			<fileset dir="build/cls"/>
			<fileset dir="src">
    		    <include name="**/*.properties"/>
    		    <include name="**/*.vm"/>
			</fileset>
			<fileset dir="conf">
    		    <include name="**/*.xml"/>
			</fileset>
		</jar>
	</target>
	
	<target name="war" depends="enhance">
		<copy file="conf/WEB-INF/${target}-web.xml" tofile="webapp/WEB-INF/web.xml">
			<filterset>
				<filter token="LOGIN_HOST" value="${cas.domain.name}"/>
				<filter token="LOGIN_PORT" value="${cas.https.port}"/>
				<filter token="CONFIG_HOST" value="${hsar.domain.name}"/>
				<filter token="CONFIG_PORT" value="${hsar.https.port}"/>
			</filterset>
		</copy>
		<copy file="conf/META-INF/${target}-context.xml" tofile="webapp/META-INF/context.xml">
		</copy>
        <war destfile="build/hsar.war" basedir="webapp" needxmlfile="false">
        	<lib dir="lib">
    		    <include name="**/*.jar"/>
    			<exclude name="**/servlet*.jar"/>
    			<exclude name="**/geronimo-jms*.jar"/>
    			<exclude name="**/geronimo-j2ee-management*.jar"/>
    			<exclude name="**/activemq*.jar"/>
        	</lib>
        	<classes dir="build/cls" />
        	<classes dir="src">
    		    <include name="**/*.properties"/>
    		    <include name="**/*.vm"/>
        	</classes>
        	<classes dir="conf">
    		    <include name="**/*.xml"/>
        	</classes>
        </war>
    </target>

	<target name="compile" description="compilieren">
		<mkdir dir="${build.home}" />
		<mkdir dir="${build.home}/cls" />
		<javac srcdir="${src.home}" destdir="${build.home}/cls" debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}" encoding="UTF8" includeantruntime="false">
			<classpath refid="compile.classpath" />
		</javac>
	</target>

	<target name="compile-test" description="tests compilieren" depends="compile">
		<mkdir dir="${build.home}" />
		<mkdir dir="${build.home}/test" />
		<javac srcdir="${test.home}" destdir="${build.home}/test" debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}" encoding="UTF8" includeantruntime="false">
			<classpath refid="compile.classpath" />
			<classpath>
				<pathelement path="${compile.classpath}"/>
				<pathelement location="${build.home}/cls"/>
				<pathelement path="/usr/share/java/junit4.jar"/>
			</classpath>
		</javac>
	</target>

	<target name="enhance" description="openjpa enhancer" depends="compile">
		<taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask">
			<classpath refid="enhance.classpath"/>
		</taskdef>
		<taskdef name="mappingtool" classname="org.apache.openjpa.jdbc.ant.MappingToolTask">
			<classpath refid="enhance.classpath"/>
		</taskdef>
		<openjpac>
			<classpath refid="enhance.classpath"/>
		</openjpac>
        <echo message="Enhancing complete."/>
	</target>

	<target name="init-db" description="init empty database">
		<sql
			classpath="/usr/share/java/postgresql-jdbc3.jar"
			driver="org.postgresql.Driver" 
			url="jdbc:postgresql://${database.host}:5432/${database.name}"
			userid="${database.user}" password="${database.password}" 
			src="database/schema.sql" />		
		<sql
			classpath="/usr/share/java/postgresql-jdbc3.jar"
			driver="org.postgresql.Driver" 
			url="jdbc:postgresql://${database.host}:5432/${database.name}"
			userid="${database.user}" password="${database.password}" 
			src="database/data.sql" />		
	</target>
	
	<target name="drop-db" description="make empty database">
		<sql
			classpath="/usr/share/java/postgresql-jdbc3.jar"
			driver="org.postgresql.Driver" 
			url="jdbc:postgresql://${database.host}:5432/${database.name}"
			userid="${database.user}" password="${database.password}" 
			src="database/dropschema.sql" />
	</target>
	
	<target name="update-db" description="upgrade existing database">
		<sql
			classpath="/usr/share/java/postgresql-jdbc3.jar"
			driver="org.postgresql.Driver" 
			url="jdbc:postgresql://${database.host}:5432/${database.name}"
			userid="${database.user}" password="${database.password}" 
			src="database/database_update.sql" />
	</target>
	
	<target name="remote-test" description="inspection of xmlrpc-api" depends="compile-test">
		<mkdir dir="${build.home}/junit" />
		<junit printsummary="yes" fork="yes">
			<classpath>
				<fileset dir="lib">
					<include name="*.jar" />
				</fileset>
				<pathelement location="${build.home}/cls"/>
				<pathelement location="${build.home}/test"/>
				<pathelement path="/usr/share/java/junit4.jar"/>
			</classpath>
			<formatter type="xml"/>
			<test name="de.hsadmin.remote.ContinuousIntegrationTest" todir="${build.home}/junit" />
		</junit>
	</target>
	
</project>
