<?xml version="1.0"?>
<!-- ====================================================================== 
     Oct 2012

     Script to install Fedora and Fedora GSearch as extensions within Greenstone3
     (using Greenstone's tomcat)
     ak19                                                                
     ====================================================================== -->

<project name="fedora_for_gs3" default="usage" basedir=".">
  <echo>
    Tested for Linux. 
    Your os.name: ${os.name}
  </echo>

  <!-- PROPERTIES -->

  <!-- need to have FEDORA_HOME env correctly defined -->

  <!--<property name="gsdl3src.home" value="../..${basedir}"/>-->
  <!--<property name="gsdl3src.home" location="." relative="true" basedir="../.."/>-->
  <!--<property name="gsdl3src.home" value="/full/path/to/GS3" />-->

  <!-- load the Greenstone properties file to have access to tomcat and fedora properties. 
    This assumes they have Greenstone installed (build.properties must exist). -->
  <property file="${gsdl3src.home}/build.properties"/>

  <available file="${gsdl3src.home}/packages/tomcat/webapps/fedoragsearch/FgsConfig/build.xml" property="fedoragsearch.deployed"/>   


  <!-- TARGETS -->
  <target name="usage" description="Print a help message">
    <echo message="  Execute 'ant -projecthelp' for a list of targets."/>
    <echo message="  Execute 'ant -help' for Ant help."/>
    
    <echo>
      *********************************************************
      1. ant -Dgsdl3src.home=&lt;Full-Path-To-GS3&gt; start-fedora-install

      2. start tomcat by going into ${gsdl3src.home} and running: ant start

      3. ant -Dgsdl3src.home=&lt;Full-Path-To-GS3&gt; continue-fedora-install

      4. stop tomcat by going back into ${gsdl3src.home} and running: ant stop
      
      5. ant -Dgsdl3src.home=&lt;Full-Path-To-GS3&gt; finish-fedora-install
      
      The README.txt file will have more information about the Greenstone 
      Fedora extension's installation process.
      *********************************************************
    </echo>
  </target>



  <target name="start-fedora-install" description="Prepares the fedora war files and puts them into tomcat">

    <!-- adjust template files -->
    <filter token="GSDL3SRCHOME" value="${gsdl3src.home}"/>
    <filter token="FEDORA_HOME" value="${gsdl3src.home}/ext/fedora3"/>
    <filter token="tomcatserver" value="${tomcat.server}"/>
    <filter token="tomcatport" value="${tomcat.port}"/>
    <filter token="tomcatshutdownport" value="${tomcat.shutdown.port}"/>
    <filter token="fedorapassw" value="${fedora.password}"/>
    <filter token="indexwritelocktimeout" value="${index.writelock.timeout}"/>

    <copy file="${basedir}/adjust_war_files/fedoragsearch/FgsConfig/fgsconfig-basic.properties.in" tofile="${basedir}/adjust_war_files/fedoragsearch/FgsConfig/fgsconfig-basic.properties" filtering="true" overwrite="true"/>
    <copy file="${basedir}/adjust_war_files/fedoragsearch/FgsConfig/FgsConfigIndexTemplate/Lucene/index.properties.in" tofile="${basedir}/adjust_war_files/fedoragsearch/FgsConfig/FgsConfigIndexTemplate/Lucene/index.properties" filtering="true" overwrite="true"/>
    <copy file="${basedir}/adjust_war_files/fedoragsearch/FgsConfig/FgsConfigIndexTemplate/Lucene/foxmlToLucene.xslt.in" tofile="${basedir}/adjust_war_files/fedoragsearch/FgsConfig/FgsConfigIndexTemplate/Lucene/foxmlToLucene.xslt" filtering="true" overwrite="true"/>
    <copy file="${basedir}/adjust_war_files/fedoragsearch/FgsConfig/FgsConfigIndexTemplate/Lucene/foxmlToLuceneGenerated.xslt.in" tofile="${basedir}/adjust_war_files/fedoragsearch/FgsConfig/FgsConfigIndexTemplate/Lucene/foxmlToLuceneGenerated.xslt" filtering="true" overwrite="true"/>


    <copy file="${basedir}/install/server.xml.in" tofile="${basedir}/install/server.xml" filtering="true" overwrite="true"/>
    <copy file="${basedir}/install/install.properties.in" tofile="${basedir}/install/install.properties" filtering="true" overwrite="true"/>
    <copy file="${basedir}/server/config/fedora.fcfg.in" tofile="${basedir}/server/config/fedora.fcfg" filtering="true" overwrite="true"/>
    <copy file="${basedir}/server/config/fedora-users.xml.in" tofile="${basedir}/server/config/fedora-users.xml" filtering="true" overwrite="true"/>
    <copy file="${basedir}/server/config/spring/akubra-llstore.xml.in" tofile="${basedir}/server/config/spring/akubra-llstore.xml" filtering="true" overwrite="true"/>
    <copy file="${basedir}/server/config/spring/web/web.properties.in" tofile="${basedir}/server/config/spring/web/web.properties" filtering="true" overwrite="true"/>

    <!-- not really important, just host and port values in demo ingest files -->
    <copy file="${basedir}/client/bin/fedora-ingest-demos.sh.in" tofile="${basedir}/client/bin/fedora-ingest-demos.sh" filtering="true" overwrite="true"/>
    <copy file="${basedir}/client/bin/fedora-ingest-demos.bat.in" tofile="${basedir}/client/bin/fedora-ingest-demos.bat" filtering="true" overwrite="true"/>

    <!-- zip up fedoragsearch, rename as .war file and put it in the install folder-->
    <zip destfile="${basedir}/install/fedoragsearch.war"
	 basedir="${basedir}/adjust_war_files/fedoragsearch"	 
	 />

    <!-- move fedora.xml and war files into tomcat -->
    <copy file="${basedir}/adjust_war_files/fedora.xml.in" tofile="${gsdl3src.home}/packages/tomcat/conf/Catalina/localhost/fedora.xml" filtering="true" overwrite="true"/>

    <copy todir="${gsdl3src.home}/packages/tomcat/webapps">
      <fileset dir="${basedir}/install">
	<include name="**/*.war"/>
      </fileset>
    </copy>

    <!-- copy jar files needed by tomcat to run fedora from greenstone/web/WEB-INF/lib -->
    <copy todir="${gsdl3src.home}/packages/tomcat/lib">
      <filelist dir="${gsdl3src.home}/web/WEB-INF/lib">
	<file name="xalan.jar"/>
	<file name="serializer.jar"/>
	<file name="xsltc.jar"/>
      </filelist>
    </copy>

    <echo>
      *********************************************************
      1. Adjust ${gsdl3src.home}/build.properties to set up Fedora.
      2. Then restart the Greenstone 3 tomcat. This will take some time the first time around. 
      3. Once tomcat's started up, return to this extension directory and run: ant continue-fedora-install
      *********************************************************
    </echo>
 </target>



  <!-- Only if fedoragsearch exists inside tomcat/webapps -->
  <target name="continue-fedora-install" 
	  description="When tomcat is running and has deployed the fedora war files, this stage configures Fedora GSearch" 
	  if="fedoragsearch.deployed">

    <!-- call the fgsconfig-basic.xml buildfile in GS3/packages/tomcat/webapps/fedoragsearch/FgsConfig's 
	 ant -f fgsconfig-basic.xml -->
    <echo>
      Configuring Fedora GSearch
    </echo>
    <ant dir="${gsdl3src.home}/packages/tomcat/webapps/fedoragsearch/FgsConfig" antfile="fgsconfig-basic.xml"/>
    
    <!-- give read execute permissions to all (755) for the fedoragsearch files -->
    <echo>
      Giving executable permissions to Fedora setup script and Fedora GSearch scripts
    </echo>
    <chmod file="${basedir}/gs3-setup.sh" perm="755"/>
    <chmod file="${gsdl3src.home}/packages/tomcat/webapps/fedoragsearch/client/runRESTClient.sh" perm="755"/>
    <chmod file="${gsdl3src.home}/packages/tomcat/webapps/fedoragsearch/client/runSOAPClient.sh" perm="755"/>

    <chmod file="${basedir}/client/bin/fedora-ingest-demos.sh" perm="755"/>
    
    <!-- call Update EmptyIndex on GSearch to create the initial index (segments) file:
	 .../webapps/fedoragsearch/client/runRESTClient.sh <host:port> updateIndex createEmpty <indexName>    

	 Where the indexName is FgsIndex. If it is made customisable, then template files need 
	 to change to contain placeholders wherever the indexName is mentioned.
	 To run the upateIndex command, need GSearch username and pwd set in the environment. -->
    <echo>
      Calling UpdateIndex CreateEmpty on Fedora GSearch to create a new index
    </echo>
    <exec osfamily="unix" spawn="false"
	  executable="${gsdl3src.home}/packages/tomcat/webapps/fedoragsearch/client/runRESTClient.sh">	  
      <env key="fgsUserName" value="fedoraAdmin"/>
      <env key="fgsPassword" value="${fedora.password}"/>
      <arg value="${tomcat.server}:${tomcat.port}"/>
      <arg value="updateIndex"/>
      <arg value="createEmpty"/>
      <arg value="FgsIndex"/>
    </exec>
    
    <exec osfamily="windows" spawn="false"
	  executable="cmd">
      <env key="fgsUserName" value="fedoraAdmin" />
      <env key="fgsPassword" value="${fedora.password}" />
      <arg value="/c"/>
      <arg value="${gsdl3src.home}\\packages\\tomcat\\webapps\\fedoragsearch\\client\\runRESTClient.bat"/>
      <arg value="${tomcat.server}:${tomcat.port}" />
      <arg value="updateIndex" />
      <arg value="createEmpty" />
      <arg value="FgsIndex" />
    </exec>

    <echo>
      *********************************************************
      0. Don't worry about the IndexNotFoundException message. It always does this.
      1. Stop your Greenstone 3 tomcat. (Check it's stopped: ps aux | grep tomcat)
      2. Then, to complete fedora installation, return to this extension directory and run: ant finish-fedora-install.
      This will clear the war files, since they have already been deployed by now.
      *********************************************************
    </echo>
    
  </target>


  
  <target name="finish-fedora-install" 
	  description="Removes Fedora and GSearch war files from ${basedir}/tomcat/packages/webapps after deployment. Tomcat must not be running.">
    <!-- clean up the war files -->
    <delete file="${gsdl3src.home}/packages/tomcat/webapps/fedora.war"/>
    <delete file="${gsdl3src.home}/packages/tomcat/webapps/fedora-demo.war"/>
    <delete file="${gsdl3src.home}/packages/tomcat/webapps/fop.war"/>
    <delete file="${gsdl3src.home}/packages/tomcat/webapps/imagemanip.war"/>
    <delete file="${gsdl3src.home}/packages/tomcat/webapps/saxon.war"/>
    <delete file="${gsdl3src.home}/packages/tomcat/webapps/fedoragsearch.war"/>
    
    <echo>
      *********************************************************
      Fedora installation complete. Try running FLI.
      *********************************************************
   </echo>
    
  </target>
  
  <target name="uninstall-fedora" 
	  description="Uninstalls the Greenstone 3 Fedora extension (including GSearch). Tomcat must not be running when this target is run.">
    <!-- clean up the war files -->
    <delete dir="${gsdl3src.home}/packages/tomcat/webapps/fedora"/>
    <delete dir="${gsdl3src.home}/packages/tomcat/webapps/fedoragsearch"/>
    <delete dir="${gsdl3src.home}/packages/tomcat/webapps/fedora-demo"/>
    <delete dir="${gsdl3src.home}/packages/tomcat/webapps/fop"/>
    <delete dir="${gsdl3src.home}/packages/tomcat/webapps/imagemanip"/>
    <delete dir="${gsdl3src.home}/packages/tomcat/webapps/saxon"/>

    <!-- attempt to remove GS3/ext/fedora3 -->
    <delete dir="${basedir}"/>
    <echo>
      *********************************************************
      Fedora uninstall complete.
      *********************************************************
   </echo>
    
  </target>

</project>
