<project name="Mat" basedir="." default="main">
  <property environment="env"/>
  <property name="gsdl3srchome" value="${env.GSDL3SRCHOME}"/>

  <property name="mat.web" value="${gsdl3srchome}/web/mat"/>
  <property name="mat.bin.scripts" value="bin/script"/>
  <property name="mat.web.scripts" value="${mat.web}/script"/>
  <property name="mat.src"     value="src"/>
  <property name="mat.build"   value="build"/>
  <property name="mat.classes" value="${mat.build}/classes"/>
  <property name="mat.classes.base" value="org/greenstone"/>
  <property name="mat.admin.classes" value="${mat.classes.base}/admin"/>
  <property name="mat.main.classes" value="${mat.classes.base}/mat"/>
  <property name="mat.lib"     value="lib"/>
  <property name="mat.tmp"     value="tmp"/>
  <property name="mat.resources" value="resources"/>
  <property name="mat.tomcat.resources" value="${mat.resources}/tomcat"/>
  <property name="mat.script.resources" value="${mat.resources}/script"/>

  <property name="gs.jni" value="${gsdl3srchome}/lib/jni"/>	
  <property name="gs.webinf" value="${gsdl3srchome}/web/WEB-INF"/>
  <property name="gs.webinf.lib" value="${gs.webinf}/lib"/>
  <property name="gs.webinf.classes" value="${gs.webinf}/classes"/>

  <property name="tomcat" value="${gsdl3srchome}/packages/tomcat"/>
  <property name="tomcat.lib" value="${tomcat}/lib"/>
  
  <path id="classpath">
    <fileset dir="${mat.lib}">
      <include name="**/*.jar"/>
    </fileset>
    <fileset dir="${gsdl3srchome}/lib/java">
      <include name="**/*.jar"/>
    </fileset>
    <dirset  dir="${mat.lib}">
      <include name="**/classes"/>
    </dirset>
  </path>

  <taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"  classpathref="classpath"/>
  <taskdef name="if" classname="ise.antelope.tasks.IfTask" classpathref="classpath"/>
  
  <target name="create_log_folder">
    <mkdir dir="../logs/mat"/>
  </target>
  
  <target name="clean">
    <delete file="guiext.jar"/>
    <delete dir="${mat.build}"/>
    
    <xmltask source="${gs.webinf}/web.xml" dest="${gs.webinf}/web.xml">
      <remove path="/web-app/servlet[servlet-name='mat']"/>
      <remove path="/web-app/servlet-mapping[servlet-name='mat']"/>
    </xmltask>
  </target>
  
 <!-- <target name="install" depends="setup-tmp,create_log_folder,add-servlet-details">-->
    <target name="install" depends="setup-tmp,create_log_folder">  
    <mkdir dir="${mat.classes}"/>
    <javac srcdir="${mat.src}" destdir="${mat.classes}" classpathref="classpath"/>

    <jar destfile="${mat.lib}/mat.jar">
      <fileset dir="${mat.classes}">
	<include name="${mat.main.classes}/**"/>
      </fileset>
    </jar>
    <copy file="${mat.lib}/mat.jar" todir="${gs.webinf.lib}"/>

    <jar destfile="guiext.jar">
      <fileset dir="${mat.classes}">
	<include name="${mat.admin.classes}/**"/>
      </fileset>
    </jar>

    <mkdir dir="${mat.web.scripts}"/>
    <copy todir="${mat.web.scripts}">
      <fileset dir="${mat.script.resources}"/>
    </copy>	
    <copy todir="${mat.web.scripts}">
      <fileset dir="${mat.bin.scripts}"/>
    </copy>
  </target>

  <target name="compress-extension">
    <if>
      <bool>
	<not><available file="7z.jar"/></not>
      </bool>

      <exec executable="svn">
	<arg value="export"/>
	<arg value="http://svn.greenstone.org/main/trunk/release-kits/shared/core/ant-tasks/7z-ant/7z.jar"/>
      </exec>

    </if>
    <taskdef name="sevenzip" classname="org.apache.tools.ant.SevenZip" classpath="7z.jar"/>
 
    <if>
      <bool><equals arg1="${os.name}" arg2="Linux"/></bool>
      <property name="os" value="linux"/>
      
      <else>
	
	<if>
	  <bool><equals arg1="${os.name}" arg2="Mac OS X"/></bool>
	  <property name="os" value="mac"/>
	  
	  <else>
	  
	    <if>
	      <bool><or>
		  <equals arg1="${os.name}" arg2="Windows 95"/>
		  <equals arg1="${os.name}" arg2="Windows 98"/>
		  <equals arg1="${os.name}" arg2="Windows 2000"/>
		  <equals arg1="${os.name}" arg2="Windows XP"/>
		  <equals arg1="${os.name}" arg2="Windows NT"/>
		  <equals arg1="${os.name}" arg2="Windows ME"/>
		  <equals arg1="${os.name}" arg2="Windows Vista"/>
		  <equals arg1="${os.name}" arg2="Windows 7"/>
		</or></bool>
	      <property name="os" value="windows"/>
	    </if>

	  </else>
	</if>
      </else>
    </if>
   
    <zip destfile="mat.comp" compress="false">
      <zipfileset dir="${basedir}">
	<include name="bin"/>
	<include name="bin/**/*"/>
	<include name="build"/>
	<include name="build/**/*"/>
	<include name="FAQ.txt"/>
	<include name="guiext.jar"/>
	<include name="Mat.bat"/>
	<include name="Mat.sh"/>
	<include name="properties.xml"/>
	<include name="README.txt"/>
	<include name="resources"/>
	<include name="resources/**/*"/>
      </zipfileset>
    </zip>
    
    <if>
      <bool>
	<equals arg1="${os}" arg2="Windows"/>
      </bool>
      
      <exec executable="${gsdl3srchome}/winutil/7zip.exe">
	<arg line="a -t7z -mx=9 mat.lzma mat.comp"/>
      </exec>

      <else>
	<sevenzip task="encode" input="mat.comp" output="mat.lzma" dictionnary="26"/>
      </else>
    </if>
  </target>

  <target name="add-servlet-details">
    <xmltask source="${gs.webinf}/web.xml">
      <copy path="/web-app/servlet[servlet-name='mat']/servlet-name/text()" property="mat.exists"/>
    </xmltask>

    <if>
      <bool>
	<not><equals arg1="${mat.exists}" arg2="mat"/></not>
      </bool>
      <xmltask source="${gs.webinf}/web.xml" dest="${gs.webinf}/web.xml">
	<insert path="/web-app/servlet[last()]" position="after">
  <![CDATA[
  <servlet>
    <servlet-name>mat</servlet-name>
    <description>Metadata Analysis Tool</description>
    <servlet-class>org.greenstone.mat.servlet.MatServlet</servlet-class>
  </servlet>
  ]]>
	</insert>
	<insert path="/web-app/servlet-mapping[last()]" position="after">
  <![CDATA[
  <servlet-mapping>
    <servlet-name>mat</servlet-name>
    <url-pattern>/mat</url-pattern>
  </servlet-mapping>
  ]]>
	</insert>
      </xmltask>

      <else>
	<echo>MAT servlet definition already exists in the Greenstone web.xml</echo>
      </else>
    </if>
  </target>

  <target name ="clean-tmp">
    <delete dir="${mat.tmp}"/>
    <echo> ${mat.tmp} has been removed </echo>
  </target>

  <target name ="setup-tmp">
    <mkdir dir="./tmp"/>
    <echo> ${mat.tmp} has been created </echo>
    <echo file="${mat.tmp}/log.txt">This is the log file.</echo>
  </target>
  <target name="clean-compile" depends="clean,install"/>
  
</project>
