<?xml version="1.0" encoding="utf-8" ?>
<project name="ESIEEquest" default="build" basedir=".">
	<!-- Arguments to gwtc and devmode targets -->
	<property name="gwt.args" value="" />

	<!-- Configure path to GWT SDK -->
	<property name="gwt.sdk" location="/usr/local/gwt-2.6.0" />

	<path id="project.class.path">
		<pathelement location="war/WEB-INF/classes" />
		<pathelement location="${gwt.sdk}/gwt-user.jar" />
		<fileset dir="${gwt.sdk}" includes="gwt-dev*.jar" />
		<!-- Add any additional non-server libs (such as JUnit) -->
		<fileset dir="war/WEB-INF/lib" includes="**/*.jar" />
	</path>

	<target name="libs" description="Copy libs to WEB-INF/lib">
		<mkdir dir="war/WEB-INF/lib" />
		<copy todir="war/WEB-INF/lib" file="${gwt.sdk}/gwt-servlet.jar" />
		<copy todir="war/WEB-INF/lib" file="${gwt.sdk}/gwt-servlet-deps.jar" />
		<!-- Add any additional server libs that need to be copied -->
		<copy todir="war/WEB-INF/lib" file="lib/guava-16.0.1.jar" />
		<copy todir="war/WEB-INF/lib" file="lib/guava-gwt-16.0.1.jar" />
		<copy todir="war/WEB-INF/lib" file="lib/lombok.jar" />
		<copy todir="war/WEB-INF/lib" file="lib/easyogg.jar" />
		<copy todir="war/WEB-INF/lib" file="lib/jogg-0.0.7.jar" />
		<copy todir="war/WEB-INF/lib" file="lib/jorbis-0.0.15.jar" />
		<copy todir="war/WEB-INF/lib" file="lib/startup2.jar" />
	</target>

	<target name="res" description="Copy resources to res">
		<mkdir dir="war" />
		<copy todir="war">
			<fileset dir="res" />
		</copy>
	</target>

	<target name="javac" depends="libs" description="Compile java source to bytecode">
		<mkdir dir="war/WEB-INF/classes" />
		<javac srcdir="src" includes="**" encoding="utf-8" destdir="war/WEB-INF/classes" source="1.7" target="1.7" nowarn="true" debug="true" debuglevel="lines,vars,source">
			<classpath refid="project.class.path" />
		</javac>
		<copy todir="war/WEB-INF/classes">
			<fileset dir="src" excludes="**/*.java" />
		</copy>
	</target>

	<target name="gwtc" depends="javac,res" description="GWT compile to JavaScript (production mode)">
		<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
			<classpath>
				<pathelement location="src" />
				<path refid="project.class.path" />
				<pathelement location="${gwt.sdk}/validation-api-1.0.0.GA.jar" />
				<pathelement location="${gwt.sdk}/validation-api-1.0.0.GA-sources.jar" />
			</classpath>
			<!-- add jvmarg -Xss16M or similar if you see a StackOverflowError -->
			<jvmarg value="-javaagent:lib/lombok.jar=ECJ -Xmx256M" />
			<arg line="-war" />
			<arg value="war" />
			<!-- Additional arguments like -style PRETTY or -logLevel DEBUG -->
			<arg line="${gwt.args}" />
			<arg value="esieequest.esieequest" />
		</java>
	</target>

	<target name="devmode" depends="javac" description="Run development mode">
		<java failonerror="true" fork="true" classname="com.google.gwt.dev.DevMode">
			<classpath>
				<pathelement location="src" />
				<path refid="project.class.path" />
				<pathelement location="${gwt.sdk}/validation-api-1.0.0.GA.jar" />
				<pathelement location="${gwt.sdk}/validation-api-1.0.0.GA-sources.jar" />
			</classpath>
			<jvmarg value="-Xmx256M" />
			<arg value="-startupUrl" />
			<arg value="ESIEEquest.html" />
			<arg line="-war" />
			<arg value="war" />
			<!-- Additional arguments like -style PRETTY or -logLevel DEBUG -->
			<arg line="${gwt.args}" />
			<arg value="esieequest.esieequest" />
		</java>
	</target>

	<target name="superdevmode" depends="javac" description="Run Super Dev Mode">
		<java failonerror="true" fork="true" classname="com.google.gwt.dev.codeserver.CodeServer">
			<classpath>
				<pathelement location="src" />
				<pathelement location="${gwt.sdk}/gwt-codeserver.jar" />
				<path refid="project.class.path" />
				<pathelement location="${gwt.sdk}/validation-api-1.0.0.GA.jar" />
				<pathelement location="${gwt.sdk}/validation-api-1.0.0.GA-sources.jar" />
			</classpath>
			<jvmarg value="-Xmx256M" />
			<arg value="esieequest.esieequest" />
		</java>
	</target>

	<!--
Test targets suppressed because -junit argument was not specified when running webAppCreator.

  <target name="javac.tests" depends="javac" description="Compiles test code">
    <javac srcdir="test" includes="**" encoding="utf-8"
      source="1.5" target="1.5" nowarn="true"
      destdir="war/WEB-INF/classes"
      debug="true" debuglevel="lines,vars,source">
      <classpath location="path_to_the_junit_jar"/>
      <classpath refid="project.class.path"/>
    </javac>
  </target>
  
  <target name="test.dev" depends="javac.tests" description="Run development mode tests">
    <mkdir dir="reports/htmlunit.dev" />
    <junit fork="yes" printsummary="yes" haltonfailure="yes">
      <jvmarg line="-Xmx256m" />
      <sysproperty key="gwt.args" value="-standardsMode -logLevel WARN" />
      <sysproperty key="java.awt.headless" value="true" />
      <classpath>
        <pathelement location="src" />
        <pathelement location="test" />
        <path refid="project.class.path" />
        <pathelement location="${gwt.sdk}/validation-api-1.0.0.GA.jar" />
        <pathelement location="${gwt.sdk}/validation-api-1.0.0.GA-sources.jar" />
        <pathelement location="path_to_the_junit_jar" />
      </classpath>
      <batchtest todir="reports/htmlunit.dev" >
        <fileset dir="test" >
          <include name="**/*Test.java" />
        </fileset>
      </batchtest>
      <formatter type="plain" />
      <formatter type="xml" />
    </junit>
  </target>

  <target name="test.prod" depends="javac.tests" description="Run production mode tests">
    <mkdir dir="reports/htmlunit.prod" />
    <junit fork="yes" printsummary="yes" haltonfailure="yes">
      <jvmarg line="-Xmx256m" />
      <sysproperty key="gwt.args" value="-prod -standardsMode -logLevel WARN -standardsMode -war www-test" />
      <sysproperty key="java.awt.headless" value="true" />
      <classpath>
        <pathelement location="src" />
        <pathelement location="test" />
        <path refid="project.class.path" />
        <pathelement location="${gwt.sdk}/validation-api-1.0.0.GA.jar" />
        <pathelement location="${gwt.sdk}/validation-api-1.0.0.GA-sources.jar" />
        <pathelement location="path_to_the_junit_jar" />
      </classpath>
      <batchtest todir="reports/htmlunit.prod" >
        <fileset dir="test" >
          <include name="**/*Test.java" />
        </fileset>
      </batchtest>
      <formatter type="plain" />
      <formatter type="xml" />
    </junit>
  </target>

  <target name="test" description="Run development and production mode tests">
    <antcall target="test.dev" />
    <antcall target="test.prod" />
  </target>
-->

	<target name="hosted" depends="devmode" description="Run development mode (NOTE: the 'hosted' target is deprecated)" />

	<target name="build" depends="gwtc,jar" description="Build this project" />

	<target name="war" depends="build" description="Create a war file">
		<zip destfile="ESIEEquest.war" basedir="war" />
	</target>

	<target name="clean" description="Cleans this project">
		<delete dir="war/WEB-INF/classes" failonerror="false" />
		<delete dir="war/esieequest" failonerror="false" />
	</target>

	<target name="jar" depends="javac" description="Create a jar file">
		<jar destfile="bin/esieequest.jar" basedir="war/WEB-INF/classes">
			<zipgroupfileset dir="lib/" includes="*.jar" />
			<manifest>
				<attribute name="Main-Class" value="esieequest.Main" />
			</manifest>
			<fileset dir="res" />
		</jar>
	</target>

	<target name="public-doc" depends="libs" description="Generate public documentation">
		<javadoc encoding="utf-8" classpathref="project.class.path" sourcepath="src" packagenames="esieequest.*" destdir="javadoc/public" access="public" windowtitle="ESIEEquest public documentation" />
	</target>

	<target name="private-doc" depends="libs" description="Generate private documentation">
		<javadoc encoding="utf-8" classpathref="project.class.path" sourcepath="src" packagenames="esieequest.*" destdir="javadoc/private" access="private" linksource="yes" windowtitle="ESIEEquest private documentation" />
	</target>

</project>