Changeset 15787

Show
Ignore:
Timestamp:
29.05.2008 13:29:54 (11 years ago)
Author:
oranfry
Message:

updating from trunk: brought in trunk changes from r15191 to r15785

Location:
greenstone3/branches/customizingGreenstone3
Files:
26 modified
11 copied

Legend:

Unmodified
Added
Removed
  • greenstone3/branches/customizingGreenstone3/build.properties

    r15191 r15787  
    1111 
    1212## windows c++ compilation 
    13 compile.windows.c++.setup=C:/Program Files/Microsoft Visual Studio/VC98/Bin/VCVARS32.BAT 
     13# The following property does not help in build.xml.  
     14# The user needs to run Visual Studio's vcvars32.bat script from the 
     15# MSDOS prompt before compiling Greenstone3 (before "ant prepare install") 
     16#compile.windows.c++.setup=C:/Program Files/Microsoft Visual Studio/VC98/Bin/VCVARS32.BAT 
    1417 
    1518## Tomcat installation 
     
    4851proxy.password= 
    4952 
    50 ## Mac OS X specific stuff 
    51 # set the path to your GDBM here 
    52 #install.gdbm=true 
    53 #gdbm.installed.path=${gdbm.home} 
     53# Not all unix systems (for example MacOS) come with GDBM pre-installed 
     54# To keep things simple, instruct Greenstone3 to download a GDBM tar file 
     55# configure and install it. The location used by default is within the 
     56# Greenstone3 src/packages area 
     57install.gdbm=true 
     58gdbm.installed.path=${gdbm.home} 
    5459 
    5560##Flax stuff## 
    5661##uncomment if you want to install flax 
    5762#install.flax=true 
     63 
     64##Web services related constants## 
     65base.webservice.name=SOAPServer 
     66##listing and description of all the web services deployable on GS3## 
     67web.services.list=${base.webservice.name} for Greenstone3's core web services, QBR${base.webservice.name} for Query, Browse and Retrieve services 
  • greenstone3/branches/customizingGreenstone3/build.xml

    r15191 r15787  
    99<project name="greenstone3" default="usage" basedir="."> 
    1010 
    11   <!-- ============ classpath =================== --> 
    12   <path id="project.classpath"> 
    13     <fileset dir="lib/java"> 
    14       <include name="**/*.jar"/> 
    15     </fileset> 
    16   </path> 
    17    
    18   <!-- ============ self defined tasks =================== --> 
    19   <taskdef name="mysetproxy" classname="org.greenstone.anttasks.MySetProxy" classpathref="project.classpath"/> 
    20   <taskdef name="getuserandpassword" classname="org.greenstone.anttasks.MyGetUserAndPassword" classpathref="project.classpath"/> 
    21   <taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" classpathref="project.classpath"/> 
    22   <taskdef name="rsr" classname="org.greenstone.anttasks.RegexSearchReplace" classpathref="project.classpath"/> 
    23   <taskdef name="if" classname="ise.antelope.tasks.IfTask" classpathref="project.classpath"/> 
    24   <taskdef name="try" classname="ise.antelope.tasks.TryTask" classpathref="project.classpath"/> 
    25    
    26   <!-- ===================== Property Definitions =========================== --> 
    27    
    28   <!-- 
     11    <!-- ============ classpath =================== --> 
     12    <path id="project.classpath"> 
     13       <fileset dir="lib/java"> 
     14          <include name="**/*.jar"/> 
     15       </fileset> 
     16    </path> 
     17 
     18    <!-- ============ self defined tasks =================== --> 
     19    <taskdef name="mysetproxy" classname="org.greenstone.anttasks.MySetProxy" classpathref="project.classpath"/> 
     20    <taskdef name="getuserandpassword" classname="org.greenstone.anttasks.MyGetUserAndPassword" classpathref="project.classpath"/> 
     21    <taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" classpathref="project.classpath"/> 
     22    <taskdef name="rsr" classname="org.greenstone.anttasks.RegexSearchReplace" classpathref="project.classpath"/> 
     23    <taskdef name="if" classname="ise.antelope.tasks.IfTask" classpathref="project.classpath"/> 
     24    <taskdef name="try" classname="ise.antelope.tasks.TryTask" classpathref="project.classpath"/> 
     25 
     26<!-- ===================== Property Definitions =========================== --> 
     27 
     28<!-- 
    2929 
    3030  Each of the following properties are used in the build script. 
     
    3535 
    3636  * Definitions from a "build.properties" file in the top level 
    37   source directory of this application. 
     37    source directory of this application. 
    3838 
    3939  * Definitions from a "build.properties" file in the user's 
    40   home directory. 
     40    home directory. 
    4141 
    4242  * Default definitions in this build.xml file. 
     
    4848  "build.properties" files as well as in the "build.xml" script. 
    4949 
    50   --> 
    51  
    52    
     50--> 
     51 
    5352  <!--the first two properties have to be put on the top to be used by build.properties--> 
    5453  <property name="src.packages.home" value="${basedir}/src/packages"/> 
     
    5958  <!-- get properties from the environment --> 
    6059  <property environment="env"/> 
    61  
    62      
    63   <!-- version properties for external packages --> 
    64   <property name="tomcat.version" value="apache-tomcat-5.5.25"/> 
    65   <property name="axis.zip.version" value="axis-bin-1_2_1.zip"/> 
    66   <property name="axis.dir.version" value="axis-1_2_1"/> 
    67   <property name="gdbm.version" value="gdbm-1.8.3"/> 
    68  
    6960  <property name="build.home" value="${basedir}/build"/> 
    7061  <property name="src.home" value="${basedir}/src/java"/> 
     
    8475  <!-- jni libraries and java wrappers go here --> 
    8576  <property name="lib.jni" value="${basedir}/lib/jni"/> 
    86    
     77     
    8778  <property name="javadocs" value="${basedir}/docs/javadoc"/> 
    8879 
     
    164155  </condition> 
    165156 
    166   <!-- where is search4j tool --> 
    167   <condition property="search4j.exec" value="bin/search4j.exe">  
    168     <isset property="current.os.iswindows"/> 
     157    <!-- where is search4j tool --> 
     158    <condition property="search4j.exec" value="bin/search4j.exe">  
     159        <isset property="current.os.iswindows"/> 
    169160  </condition> 
    170161  <property name="search4j.exec" value="bin/search4j"/> 
    171162 
    172    
     163     
    173164  <!-- ============= Base dirs for each package and component ============ --> 
    174165  <property name="src.applet.home" value="${src.home}/org/greenstone/applet"/> 
     
    178169  <property name="gli.home" value="${basedir}/gli"/> 
    179170  <property name="javagdbm.home" value="${src.packages.home}/javagdbm"/> 
    180    
     171  
    181172  <!--<property name="indexers.home" value="${basedir}/src/packages/indexers">--> 
    182173  <condition property="indexers.home" value="${basedir}/src/packages/indexers"> 
     
    193184  <property name="lucene.home" value="${indexers.home}/lucene-gs"/> 
    194185 
    195  
    196   <!--  ==================== Compilation Control Options ==================== --> 
    197  
    198   <!-- 
     186  
     187<!--  ==================== Compilation Control Options ==================== --> 
     188 
     189<!-- 
    199190 
    200191  These properties control option settings on the Javac compiler when it 
     
    207198  compile.optimize     Should compilation include the optimize option? 
    208199 
    209   --> 
     200--> 
    210201 
    211202  <property name="compile.debug"       value="true"/> 
     
    213204  <property name="compile.optimize"    value="true"/> 
    214205 
    215   <!-- 
     206<!-- 
    216207 
    217208  Rather than relying on the CLASSPATH environment variable, Ant includes 
     
    222213  that you explicitly added. 
    223214 
    224   --> 
     215--> 
    225216 
    226217  <path id="compile.classpath"> 
     
    238229    <!-- Include the axis jar files --> 
    239230    <!--<fileset dir="${basedir}/comms/soap/axis/lib"> 
    240     <include name="*.jar"/> 
    241   </fileset>--> 
     231      <include name="*.jar"/> 
     232    </fileset>--> 
    242233     
    243234    <!-- include the jar files from the source packages --> 
     
    286277    <echo>os.unix: ${os.unix}</echo> 
    287278  </target> 
    288   <!-- ==================== Primary and Global Targets ============================= --> 
     279<!-- ==================== Primary and Global Targets ============================= --> 
    289280 
    290281  <!-- add comments about using xxx-core, xxx-packages if only want certain parts?? --> 
     
    292283  <target name="prepare" depends="accept-properties,init,prepare-core,prepare-packages,prepare-gs2building,prepare-tomcat,prepare-axis,prepare-web,prepare-collections,prepare-gdbm, prepare-flax" 
    293284    description="Use this when you first checkout the code: 'ant prepare install'. This will do some additional subversion checkouts and downloads, so you need to be online to run this."> 
    294     <!--  <target name="prepare" depends="accept-properties,init,prepare-core,prepare-packages,prepare-gs2building,prepare-tomcat,prepare-axis,prepare-web,prepare-collections" 
     285<!--  <target name="prepare" depends="accept-properties,init,prepare-core,prepare-packages,prepare-gs2building,prepare-tomcat,prepare-axis,prepare-web,prepare-collections" 
    295286    description="Use this when you first checkout the code: 'ant prepare install'. This will do some additional cvs checkouts and downloads, so you need to be online to run this.">--> 
    296287 
     
    304295    description="Install Greenstone 3. Use this when you first checkout the code: 'ant prepare install'."/> 
    305296   
    306   <!--  <target name="cvsupdate" depends="init,cvsupdate-packages,cvsupdate-core,cvsupdate-gs2building,cvsupdate-web" 
    307   description="Do a cvs update for all sources. Doesn't recompile the code. You need to be online to run this."/>--> 
     297<!--  <target name="cvsupdate" depends="init,cvsupdate-packages,cvsupdate-core,cvsupdate-gs2building,cvsupdate-web" 
     298    description="Do a cvs update for all sources. Doesn't recompile the code. You need to be online to run this."/>--> 
    308299  <target name="svnupdate" depends="init,svnupdate-packages,svnupdate-core,svnupdate-gs2building,svnupdate-web" 
    309300    description="Do a `svn update` for all sources. Doesn't recompile the code. You need to be online to run this."/> 
     
    316307    description="Configure the installation. Includes setting up config files. Should be re-run if you change the build.properties file."/> 
    317308 
    318   <target name="clean" depends="init,clean-packages,clean-core,clean-gs2building,clean-gdbm" 
     309  <target name="clean" depends="init,clean-packages,clean-core,clean-gs2building" 
    319310    description="Remove all old compiled code. Includes core, packages and gs2building if necessary"/> 
    320    
    321   <target name="distclean" depends="init,distclean-packages,clean-core,distclean-gs2building,distclean-gdbm" 
    322     description="Remove all compiled code and also any Makefiles etc generated during configure-c++. Includes core, packages, gs2building as necessary"/> 
    323311   
    324312  <target name="compile" depends="init,compile-web,compile-packages,compile-core,compile-gs2building" 
    325313    description="Compile all the source code, includes core, packages and gs2building if necessary. Copy jar files and executables to their correct places."/> 
    326    
     314     
    327315  <target name="update" depends="init,svnupdate,clean,configure,configure-c++,compile"  
    328     description="Update (thru Subversion) all the source (including core, packages and gs2building), then clean, configure and recompile. To do this without any SVN updates, run it like 'ant -Dnosvn.mode=yes update'"/> 
     316    description="Update (thru Subversion) all the source (including core, packages and gs2building), then clean, configure and recompile."/> 
    329317 
    330318  <target name="start" depends="init,start-tomcat" 
    331319    description="Startup the Tomcat server." > 
    332     <echo>${app.name} (${app.version}) server running using Apache Tomcat and Java</echo>  
    333     <echo>Tomcat:   ${catalina.home}</echo>  
    334     <echo>Java: ${java.home}</echo> 
    335     <echo>URL:  http://${tomcat.server}:${tomcat.port}${app.path}/</echo> 
    336     <!-- assuming that index.html is not needed here -->    
     320    <echo>${app.name} (${app.version}) server running using Apache Tomcat and Java</echo>  
     321    <echo>Tomcat:   ${catalina.home}</echo>  
     322    <echo>Java: ${java.home}</echo> 
     323        <echo>URL:  http://${tomcat.server}:${tomcat.port}${app.path}/</echo> 
     324        <!-- assuming that index.html is not needed here -->    
    337325  </target> 
    338326 
     
    343331 
    344332 
    345   <!-- =========== Help targets ===================================  --> 
     333<!-- =========== Help targets ===================================  --> 
    346334   
    347335  <property name="install-command" value="ant [options] prepare install"/> 
     
    351339    <echo message="  Execute 'ant -help' for Ant help."/> 
    352340    <echo>To install Greenstone3, run '${install-command}'.  
    353       There are properties defined in build.properties. The install process will ask you if these properties are set correctly. To avoid this prompt, use the '-Dproperties.accepted=yes' option. 
    354       To log the output, use the '-logfile build.log' option. 
    355       The README.txt file has more information about the ant targets and install process. 
     341There are properties defined in build.properties. The install process will ask you if these properties are set correctly. To avoid this prompt, use the '-Dproperties.accepted=yes' option. 
     342To log the output, use the '-logfile build.log' option. 
     343The README.txt file has more information about the ant targets and install process. 
    356344    </echo> 
    357345  </target> 
     
    363351  </target> 
    364352 
    365   <!-- ====== initialization and setup targets ================== --> 
     353<!-- ====== initialization and setup targets ================== --> 
    366354 
    367355  <target name="accept-properties" unless="properties.accepted"> 
    368356    <input addproperty="properties.ok" validargs="y,n">The following properties (among others) are being used from a build.properties file found in this directory: 
    369       tomcat.server=${tomcat.server} 
    370       tomcat.port=${tomcat.port}  
    371       tomcat.installed.path=${tomcat.installed.path} (this is the location of Tomcat's base dir if it is already installed) 
    372       proxy.host=${proxy.host} 
    373       proxy.port=${proxy.port} 
    374       If these are not acceptable, please change them and rerun this target. Continue [y/n]? /> 
     357tomcat.server=${tomcat.server} 
     358tomcat.port=${tomcat.port}  
     359tomcat.installed.path=${tomcat.installed.path} (this is the location of Tomcat's base dir if it is already installed) 
     360proxy.host=${proxy.host} 
     361proxy.port=${proxy.port} 
     362If these are not acceptable, please change them and rerun this target. Continue [y/n]? /> 
    375363    </input> 
    376364    <condition property="do.abort">  
     
    380368  </target> 
    381369 
     370<!--  <target name="check-cvsroot"> 
     371    <condition property="svnroot.notset"> 
     372      <or> 
     373            <not> 
     374              <isset property="env.CVSROOT"/> 
     375            </not> 
     376            <equals arg1="" arg2="${env.CVSROOT}"/> 
     377      </or> 
     378    </condition> 
     379    <fail if="cvsroot.notset" message="You need to set the CVSROOT variable"/> 
     380  </target> --> 
    382381 
    383382  <!-- this sets up some initial properties --> 
     
    406405    </condition> 
    407406     
    408     <echo>tomcat.port = ${tomcat.port}</echo> 
    409     <echo>gli.present = ${gli.present}</echo>  
    410     <echo>gs2build.present = ${gs2build.present}</echo> 
    411     <echo>gsdl2.installed.path = ${gsdl2.installed.path}</echo> 
    412     <!-- gsdl2.installed.path appears not to be set? --> 
     407      <echo>tomcat.port = ${tomcat.port}</echo> 
     408      <echo>gli.present = ${gli.present}</echo>  
     409      <echo>gs2build.present = ${gs2build.present}</echo> 
     410     <!-- gsdl2.installed.path appears not to be set, so wrap in if block --> 
     411        <if> 
     412            <bool><isset property="gsdl2.installed.path"/></bool> 
     413            <echo>gsdl2.installed.path = ${gsdl2.installed.path}</echo> 
     414        </if> 
    413415 
    414416    <condition property="proxy.present"> 
     
    441443    <mysetproxy proxyhost="${proxy.host}" proxyport="${proxy.port}" proxyuser="${proxy.username}" proxypassword="${proxy.password}"/> 
    442444  </target> 
    443    
    444   <!-- ========== Web app Targets ================================ --> 
     445      
     446 <!-- ========== Web app Targets ================================ --> 
    445447   
    446448  <target name="prepare-web" depends="init,configure-java-version"> 
     
    453455    description="Activates or deactivates some jar libraries as needed depending on your java version"> 
    454456 
    455     <available property="have.xalan.jar" file="${web.lib}/xalan.jar"/> 
     457        <available property="have.xalan.jar" file="${web.lib}/xalan.jar"/> 
    456458    <condition property="need.xalan.jar"> 
    457       <or> 
    458     <equals arg1="1.5" arg2="${ant.java.version}"/> 
    459     <equals arg1="1.6" arg2="${ant.java.version}"/> 
    460       </or> 
    461     </condition> 
    462  
    463     <!-- if they have xalan.jar but dont need it --> 
    464     <if> 
    465       <bool> 
    466     <and> 
    467       <isset property="have.xalan.jar"/> 
    468       <not><isset property="need.xalan.jar"/></not> 
    469     </and> 
    470       </bool> 
    471       <antcall target="deactivate-xalan-jar"/> 
    472     </if> 
    473  
    474     <!-- if they need xalan.jar but dont have it --> 
    475     <if> 
    476       <bool> 
    477     <and> 
    478       <not><isset property="have.xalan.jar"/></not> 
    479       <isset property="need.xalan.jar"/> 
    480     </and> 
    481       </bool> 
    482       <antcall target="activate-xalan-jar"/> 
    483     </if> 
     459            <or> 
     460                <equals arg1="1.5" arg2="${ant.java.version}"/> 
     461                <equals arg1="1.6" arg2="${ant.java.version}"/> 
     462            </or> 
     463        </condition> 
     464 
     465        <!-- if they have xalan.jar but dont need it --> 
     466        <if> 
     467            <bool> 
     468                <and> 
     469                    <isset property="have.xalan.jar"/> 
     470                    <not><isset property="need.xalan.jar"/></not> 
     471                </and> 
     472            </bool> 
     473            <antcall target="deactivate-xalan-jar"/> 
     474        </if> 
     475 
     476        <!-- if they need xalan.jar but dont have it --> 
     477        <if> 
     478            <bool> 
     479                <and> 
     480                    <not><isset property="have.xalan.jar"/></not> 
     481                    <isset property="need.xalan.jar"/> 
     482                </and> 
     483            </bool> 
     484            <antcall target="activate-xalan-jar"/> 
     485        </if> 
    484486 
    485487  </target> 
    486488   
    487489  <target name="activate-xalan-jar"> 
    488     <echo>activating xalan.jar</echo> 
     490        <echo>activating xalan.jar</echo> 
    489491    <copy file="${web.lib}/xalan.jar.tmp" tofile="${web.lib}/xalan.jar"/> 
    490     <if><bool><isset property="current.os.ismac"/></bool> 
    491       <copy file="${web.lib}/xalan.jar.tmp" tofile="${catalina.home}/common/endorsed/xalan.jar"/>  
    492     </if> 
    493   </target> 
    494  
    495   <!-- to delete --> 
     492        <if><bool><isset property="current.os.ismac"/></bool> 
     493            <copy file="${web.lib}/xalan.jar.tmp" tofile="${catalina.home}/common/endorsed/xalan.jar"/>  
     494        </if> 
     495  </target> 
     496 
     497    <!-- to delete --> 
    496498  <target name="copy-xalan-for-mac"></target> 
    497499 
    498500  <target name="deactivate-xalan-jar"> 
    499     <echo>deactivating xalan.jar</echo> 
     501        <echo>deactivating xalan.jar</echo> 
    500502    <delete file="${web.lib}/xalan.jar"/> 
    501503  </target> 
    502504 
    503 <target name="prepare-collections" depends="init"> 
    504     <property name="collect.dir" value="${web.home}/sites/localsite/collect"/> 
    505 <echo message="installing collections..."/> 
    506 <antcall target="gs2mgdemo-install"/> 
    507 <antcall target="gs2mgppdemo-install"/> 
    508 <antcall target="gberg-install"/> 
    509  
    510 </target> 
    511  
    512 <target name="gs2mgdemo-prepare" if="collect.dir"> 
    513  <property name="gs2mgdemo.dir" value="${collect.dir}/gs2mgdemo"/> 
    514  <property name="gs2mgdemo.import.zip" value="${gs2mgdemo.dir}/import.zip"/> 
    515   <property name="gs2mgdemo.metadata.zip" value="${gs2mgdemo.dir}/metadata.zip"/> 
    516   <property name="gs2mgdemo.index.zip" value="${gs2mgdemo.dir}/index.zip"/> 
    517  
    518 <fileset id="gs2mgdemofiles" dir="${gs2mgdemo.dir}"> 
    519     <include name="${gs2mgdemo.import.zip}"/> 
    520     <include name="${gs2mgdemo.metadata.zip}"/> 
    521     <include name="${gs2mgdemo.index.zip}"/> 
    522 </fileset> 
    523  
    524 <condition property="gs2mgdemo.present"> 
    525     <and> 
    526     <available file="${gs2mgdemo.import.zip}"/> 
    527     <available file="${gs2mgdemo.metadata.zip}"/> 
    528         <available file="${gs2mgdemo.index.zip}"/> 
    529     </and> 
    530   </condition> 
    531 </target> 
    532  
    533 <target name="gs2mgdemo-install" if="gs2mgdemo.present"  depends="gs2mgdemo-prepare"> 
    534 <echo> installing gs2mgdemo</echo> 
    535 <unzip dest="${gs2mgdemo.dir}"> 
    536     <fileset refid="gs2mgdemofiles"/> 
    537 </unzip> 
    538 <delete> 
    539     <fileset refid="gs2mgdemofiles"/> 
    540 </delete> 
    541 <echo>collection gs2mgdemo installed</echo> 
    542 </target> 
    543  
    544 <target name="gs2mgppdemo-prepare" if="collect.dir"> 
    545  <property name="gs2mgppdemo.dir" value="${collect.dir}/gs2mgppdemo"/> 
    546  <property name="gs2mgppdemo.import.zip" value="${gs2mgppdemo.dir}/import.zip"/> 
    547   <property name="gs2mgppdemo.metadata.zip" value="${gs2mgppdemo.dir}/metadata.zip"/> 
    548   <property name="gs2mgppdemo.index.zip" value="${gs2mgppdemo.dir}/index.zip"/> 
    549  
    550 <fileset id="gs2mgppdemofiles" dir="${gs2mgppdemo.dir}"> 
    551         <include name="${gs2mgppdemo.import.zip}"/> 
    552         <include name="${gs2mgppdemo.metadata.zip}"/> 
    553         <include name="${gs2mgppdemo.index.zip}"/> 
    554 </fileset> 
    555  
    556 <condition property="gs2mgppdemo.present"> 
    557     <and> 
    558         <available file="${gs2mgppdemo.import.zip}"/> 
    559         <available file="${gs2mgppdemo.metadata.zip}"/> 
    560         <available file="${gs2mgppdemo.index.zip}"/> 
    561     </and> 
    562   </condition> 
    563 </target> 
    564  
    565 <target name="gs2mgppdemo-install" if="gs2mgppdemo.present" depends="gs2mgppdemo-prepare"> 
    566 <unzip dest="${gs2mgppdemo.dir}"> 
    567         <fileset refid="gs2mgppdemofiles"/> 
    568 </unzip> 
    569 <delete> 
    570         <fileset refid="gs2mgppdemofiles"/> 
    571 </delete> 
    572 <echo>collection gs2mgppdemo installed</echo> 
    573 </target>     
    574  
    575 <target name="gberg-prepare" if="collect.dir"> 
    576  <property name="gberg.dir" value="${collect.dir}/gberg"/> 
    577  <property name="gberg.index.zip" value="${gberg.dir}/index.zip"/> 
    578  
    579 <fileset id="gbergfiles" dir="${gberg.dir}"> 
    580         <include name="${gberg.index.zip}"/> 
    581 </fileset> 
    582 <available file="${gberg.index.zip}" property="gberg.present"/> 
    583 </target> 
    584  
    585 <target name="gberg-install" if="gberg.present" depends="gberg-prepare"> 
    586 <unzip dest="${gberg.dir}"> 
    587         <fileset refid="gbergfiles"/> 
    588 </unzip> 
    589 <delete> 
    590         <fileset refid="gbergfiles"/> 
    591 </delete> 
    592 <echo>collection gberg installed</echo> 
    593 </target> 
    594  
    595  
    596  
    597  
    598  
    599  
    600  
    601  
    602  
    603  
    604  
    605  
    606  
    607  
    608  
    609  
    610  
    611 <!-- 
    612505  <target name="prepare-collections" depends="init"> 
    613506    <property name="collect.dir" value="${web.home}/sites/localsite/collect"/> 
    614     
     507    <!-- gs2mgdemo --> 
    615508    <unzip src="${collect.dir}/gs2mgdemo/import.zip"  
    616509      dest="${collect.dir}/gs2mgdemo"/> 
     
    622515    <delete file="${collect.dir}/gs2mgdemo/metadata.zip"/> 
    623516    <delete file="${collect.dir}/gs2mgdemo/index/index.zip"/> 
    624     
     517    <!-- gs2mgppdemo --> 
    625518    <unzip src="${collect.dir}/gs2mgppdemo/import.zip"  
    626519      dest="${collect.dir}/gs2mgppdemo"/> 
     
    632525    <delete file="${collect.dir}/gs2mgppdemo/metadata.zip"/> 
    633526    <delete file="${collect.dir}/gs2mgppdemo/index/index.zip"/> 
    634    
     527    <!-- gberg --> 
    635528    <unzip src="${collect.dir}/gberg/index/index.zip"  
    636529      dest="${collect.dir}/gberg/index"/> 
    637530    <delete file="${collect.dir}/gberg/index/index.zip"/> 
    638531  </target> 
    639 --> 
     532 
    640533   
    641534  <target name="configure-web" depends="init" 
     
    667560  </target> 
    668561 
    669   <target name="svnupdate-web" unless="nosvn.mode"> 
    670     <svn> 
    671       <update dir="${web.home}"/> 
    672     </svn> 
    673   </target> 
     562    <target name="svnupdate-web" unless="nosvn.mode"> 
     563        <svn> 
     564            <update dir="${web.home}"/> 
     565        </svn> 
     566    </target> 
    674567 
    675568  <target name="update-web" depends="init,svnupdate-web,configure-web" 
     
    677570 
    678571 
    679   <!-- ======================= Tomcat Targets ========================== --> 
     572<!-- ======================= Tomcat Targets ========================== --> 
    680573   
    681574  <!-- this target downloads and installs Tomcat --> 
     
    685578    <!-- check that packages dir is there --> 
    686579    <mkdir dir="${packages.home}"/> 
    687     <get src="http://www.greenstone.org/gs3files/${tomcat.version}.zip" 
    688       dest="${packages.home}/${tomcat.version}.zip" 
     580    <get src="http://www.greenstone.org/gs3files/apache-tomcat-5.5.25.zip" 
     581      dest="${packages.home}/apache-tomcat-5.5.25.zip" 
    689582      usetimestamp="true"/> 
    690     <unzip src="${packages.home}/${tomcat.version}.zip"  
     583    <unzip src="${packages.home}/apache-tomcat-5.5.25.zip"  
    691584      dest="${packages.home}"/> 
    692     <get src="http://www.greenstone.org/gs3files/${tomcat.version}-compat.zip" 
    693       dest="${packages.home}/${tomcat.version}-compat.zip" 
     585    <get src="http://www.greenstone.org/gs3files/apache-tomcat-5.5.25-compat.zip" 
     586      dest="${packages.home}/apache-tomcat-5.5.25-compat.zip" 
    694587      usetimestamp="true"/> 
    695     <unzip src="${packages.home}/${tomcat.version}-compat.zip"  
     588    <unzip src="${packages.home}/apache-tomcat-5.5.25-compat.zip"  
    696589      dest="${packages.home}"/> 
    697590    <!-- delete any existing tomcat --> 
    698591    <delete dir="${packages.home}/tomcat"/> 
    699592    <move todir="${packages.home}/tomcat"> 
    700       <fileset dir="${packages.home}/${tomcat.version}"/> 
     593      <fileset dir="${packages.home}/apache-tomcat-5.5.25"/> 
    701594    </move> 
    702595    <copy file="${basedir}/resources/tomcat/setclasspath.bat" 
     
    733626    <!-- need to edit the config file, or do we get the user to do this???--> 
    734627  </target> 
    735    
     628     
    736629  <target name="start-tomcat" description="Startup only Tomcat" depends="init,configure-java-version" if="tomcat.islocal"> 
    737     <property name="tomcat.classpath" refid="local.tomcat.classpath"/> 
     630   <property name="tomcat.classpath" refid="local.tomcat.classpath"/> 
    738631    <property name="tomcat.path" refid="local.tomcat.path"/> 
    739632    <property name="catalina.opts" value="-Djava.util.prefs.syncInterval=2000000 -DGSDL3HOME=$GSDL3HOME -DGSDLOS=$GSDLOS -DPATH=$PATH -Xmx400M"/> 
     
    798691 
    799692 
    800  
    801  
    802  
    803  
    804   <!-- ======================= ant Targets ============================ -->  
     693<!-- ======================= ant Targets ============================ -->  
    805694  <target name="prepare-ant" depends="init"> 
    806695    <get src="http://www.greenstone.org/gs3files/apache-ant-1.7.0-bin.zip" 
     
    814703  </target> 
    815704 
    816   <!-- ======================= Axis Targets ============================ -->  
     705<!-- ======================= Axis Targets ============================ -->  
    817706 
    818707  <target name="prepare-axis" depends="init"> 
    819     <get src="http://www.greenstone.org/gs3files/${axis.zip.version}" 
    820       dest="${packages.home}/${axis.zip.version}" 
     708    <get src="http://www.greenstone.org/gs3files/axis-bin-1_2_1.zip" 
     709      dest="${packages.home}/axis-bin-1_2_1.zip" 
    821710      usetimestamp="true"/> 
    822     <unzip src="${packages.home}/${axis.zip.version}" 
     711    <unzip src="${packages.home}/axis-bin-1_2_1.zip" 
    823712      dest="${packages.home}"/> 
    824713    <move todir="${packages.home}/axis"> 
    825       <fileset dir="${packages.home}/${axis.dir.version}"/> 
     714      <fileset dir="${packages.home}/axis-1_2_1"/> 
    826715    </move> 
    827716    <!-- install axis into greenstone web app --> 
     
    845734  </target> 
    846735 
    847   <target name="soap-deploy-site" depends="init,get-sitename,get-siteuri,create-deployment-files,deploy-site" 
     736  <target name="soap-deploy-site" depends="init,get-sitename,get-siteuri,get-webservices,create-deployment-files,deploy-site" 
    848737    description="Deploy a SOAP web service for a local Greenstone site. Tomcat must be running for this to work."/> 
    849738   
     
    853742      <arg value="-l"/> 
    854743      <arg value="http://${tomcat.server}:${tomcat.port}${app.path}/servlet/AxisServlet"/> 
    855       <arg file="${basedir}/resources/soap/${axis.sitename}.wsdd"/> 
    856     </java>     
    857   </target> 
    858    
    859   <target name="soap-undeploy-site" depends="get-sitename" 
     744      <arg file="${basedir}/resources/soap/deploy.wsdd"/> 
     745    </java> 
     746    <delete file="${basedir}/resources/soap/deploy.wsdd"/> <!--clean up, no longer used--> 
     747  </target> 
     748   
     749  <target name="soap-undeploy-site" depends="get-undeploy-service-name" 
    860750    description="Undeploy a SOAP web service for a local Greenstone site. Tomcat must be running for this to work."> 
     751    <filter token="servicesname" value="${axis.undeploy.servicename}"/> 
     752    <copy file="${basedir}/resources/soap/undeploy-site.wsdd.template" 
     753      tofile="${basedir}/resources/soap/undeploy.wsdd" 
     754      filtering="true" 
     755      overwrite="true"/> 
    861756    <java classname="org.apache.axis.client.AdminClient"> 
    862757      <classpath refid="compile.classpath"/> 
    863758      <arg value="-l"/> 
    864759      <arg value="http://${tomcat.server}:${tomcat.port}${app.path}/servlet/AxisServlet"/> 
    865       <arg file="${basedir}/resources/soap/undeploy-${axis.sitename}.wsdd"/> 
     760      <arg file="${basedir}/resources/soap/undeploy.wsdd"/> 
    866761    </java> 
    867   </target> 
    868  
    869   <!-- this target used to deploy the preprepared localsite server  --> 
     762    <delete file="${basedir}/resources/soap/undeploy.wsdd"/> <!--clean up, no longer used--> 
     763  </target> 
     764 
     765  <!-- this target used to deploy the default web service SOAPServer (base.webservice.name) on the localsite server 
     766with the default servicename of localsite--> 
    870767  <target name="deploy-localsite" depends="init"  
    871768    description="Deploy the SOAP server for localsite. Will start and stop Tomcat."> 
    872769    <antcall target="start-tomcat"/> 
     770    <echo>Deploying ${base.webservice.name} web services for localsite under service name: localsite</echo> 
     771    <antcall target="create-deployment-files"> 
     772      <param name="axis.sitename" value="localsite"/> 
     773      <param name="axis.servicesname" value="${base.webservice.name}"/> 
     774      <param name="axis.siteuri" value="localsite"/> 
     775    </antcall> 
    873776    <antcall target="deploy-site"> 
    874777      <param name="axis.sitename" value="localsite"/> 
     778      <param name="axis.servicesname" value="${base.webservice.name}"/> 
     779      <param name="axis.siteuri" value="localsite"/> 
    875780    </antcall> 
    876     <antcall target="stop-tomcat"/> 
     781    <echo>The Greenstone server has been started up. If you do not want it running, please type: ant stop.</echo> 
    877782  </target> 
    878783   
    879784  <target name="get-sitename" unless="axis.sitename"> 
    880     <input addproperty="axis.sitename" message="What site? (press enter for default:localsite)" defaultvalue="localsite"/> 
    881   </target> 
    882  
    883   <target name="get-siteuri" depends="get-sitename" unless="axis.siteuri"> 
    884     <input addproperty="axis.siteuri" message="What name do you want the service to have? (press enter for default:${axis.sitename})" defaultvalue="${axis.sitename}"/> 
    885     <echo>${axis.sitename}, ${axis.siteuri}</echo> 
    886   </target> 
    887  
    888   <target name="check-deployment-files" depends="get-sitename"> 
    889     <condition property="deploy.exists"> 
    890       <and> 
    891     <available file="${basedir}/resources/soap/${axis.sitename}.wsdd"/> 
    892     <available file="${basedir}/resources/soap/undeploy-${axis.sitename}.wsdd"/> 
    893     <available file="${web.classes}/org/greenstone/gsdl3/SOAPServer${axis.sitename}.class"/> 
    894       </and> 
     785    <input addproperty="axis.sitename" defaultvalue="localsite">What site do you want to deploy services for? 
     786Press Enter for default:localsite</input> 
     787  </target> 
     788 
     789  <target name="get-undeploy-service-name" unless="axis.undeploy.servicename"> 
     790    <input addproperty="axis.undeploy.servicename" defaultvalue="localsite">Please enter the full name of the service you wish to undeploy. 
     791To find out which web services you've got deployed, point your browser to http://HOST:PORT/greenstone3/services  
     792Or press Enter for undeploying the default:localsite /></input> 
     793     <echo>Name of service to undeploy: ${axis.undeploy.servicename}</echo> 
     794  </target> 
     795 
     796  <target name="get-webservices" unless="axis.servicesname"> 
     797    <input addproperty="axis.servicesname" defaultvalue="${base.webservice.name}">Which set of web services do you want to deploy? 
     798Choose from: ${web.services.list} 
     799Or press Enter for default:${base.webservice.name} /></input> 
     800    <echo>${axis.servicesname}</echo> 
     801  </target> 
     802 
     803  <target name="get-siteuri" depends="get-sitename,get-webservices" unless="axis.siteuri"> 
     804    <input addproperty="axis.siteuri" defaultvalue="${axis.servicesname}${axis.sitename}">What name do you want the service to have? (Press Enter for default:${axis.servicesname}${axis.sitename})</input> 
     805    <echo>Site: ${axis.sitename}, services: ${axis.servicesname}, servicesname: ${axis.siteuri}</echo> 
     806  </target> 
     807 
     808  <target name="set-soapmethod" description="Determines whether the service in the wsdd should have the style attribute set to message or the provider attribute set to java:RPC"  if="axis.servicesname"> 
     809   <condition property="soap.method" value="provider='java:MSG' style='message' use='literal'"> 
     810      <equals arg1="${axis.servicesname}" arg2="${base.webservice.name}"/> 
    895811    </condition> 
    896   </target>  
    897  
    898   <target name="create-deployment-files" depends="get-sitename,get-siteuri,check-deployment-files"  
    899     if="axis.sitename" unless="deploy.exists"> 
     812    
     813   <!--everything else defaults to java:RPC at present--> 
     814   <condition property="soap.method" value="provider='java:RPC'"> 
     815     <not> 
     816      <equals arg1="${axis.servicesname}" arg2="${base.webservice.name}"/> 
     817    </not> 
     818    </condition> 
     819 </target> 
     820 
     821  <target name="create-deployment-files" depends="set-soapmethod" if="axis.sitename"> 
    900822    <filter token="sitename" value="${axis.sitename}"/> 
    901823    <filter token="siteuri" value="${axis.siteuri}"/> 
     824    <filter token="servicesname" value="${axis.servicesname}"/> 
     825    <filter token="soapmethod" value="${soap.method}"/> 
    902826    <copy file="${basedir}/resources/soap/site.wsdd.template" 
    903       tofile="${basedir}/resources/soap/${axis.sitename}.wsdd" 
    904       filtering="true"/> 
    905     <copy file="${basedir}/resources/soap/undeploy-site.wsdd.template" 
    906       tofile="${basedir}/resources/soap/undeploy-${axis.sitename}.wsdd" 
    907       filtering="true"/> 
     827      tofile="${basedir}/resources/soap/deploy.wsdd" 
     828      filtering="true" 
     829      overwrite="true"/> 
    908830    <!-- create the java files and compile them --> 
    909     <copy file="${basedir}/resources/java/SOAPServer.java.in" 
    910       tofile="${src.gsdl3.home}/SOAPServer${axis.sitename}.java" 
    911       filtering="true"/> 
     831    <copy file="${basedir}/resources/java/${axis.servicesname}.java.in" 
     832      tofile="${src.gsdl3.home}/${axis.servicesname}${axis.sitename}.java" 
     833      filtering="true" 
     834      overwrite="true"/> 
    912835    <mkdir dir="${build.home}"/> 
    913836    <javac srcdir="${src.home}" 
     
    917840      optimize="${compile.optimize}"> 
    918841      <classpath refid="compile.classpath"/> 
    919       <include name="org/greenstone/gsdl3/SOAPServer${axis.sitename}.java" /> 
     842      <include name="org/greenstone/gsdl3/${axis.servicesname}${axis.sitename}.java" /> 
    920843    </javac> 
    921844    <mkdir dir="${web.classes}/org/greenstone/gsdl3"/> 
    922     <copy file="${build.home}/org/greenstone/gsdl3/SOAPServer${axis.sitename}.class" tofile="${web.classes}/org/greenstone/gsdl3/SOAPServer${axis.sitename}.class" /> 
    923   </target> 
    924    
    925  
    926   <!-- ====================== Core targets ============================== --> 
    927   <!-- core targets refer to the core gsdl3 java src --> 
    928    
    929   <target name="prepare-core" unless="nosvn.mode"> 
     845    <copy file="${build.home}/org/greenstone/gsdl3/${axis.servicesname}${axis.sitename}.class"        tofile="${web.classes}/org/greenstone/gsdl3/${axis.servicesname}${axis.sitename}.class" 
     846          overwrite="true" /> 
     847  </target> 
     848     
     849 
     850<!-- ====================== Core targets ============================== --> 
     851<!-- core targets refer to the core gsdl3 java src --> 
     852   
     853  <target name="prepare-core" unless="nocvs.mode"> 
    930854    <!-- just get rid of empty directories--> 
    931855    <svn> 
    932       <update dir="."/> 
    933     </svn> 
     856        <update dir="."/> 
     857    </svn> 
    934858  </target> 
    935859   
     
    939863    description="Update only the Greenstone core" /> 
    940864   
    941   <target name="svnupdate-core" unless="nosvn.mode"> 
    942  
    943     <svn> 
    944       <update dir="." recurse="false"/> 
    945     </svn> 
    946  
    947     <svn> 
    948       <update dir="bin"/> 
    949       <update dir="comms"/> 
    950       <update dir="dist-resources"/> 
    951       <update dir="docs"/> 
    952       <update dir="lib"/> 
    953       <update dir="resources"/> 
    954       <update dir="src"/> 
    955       <update dir="winutil"/> 
    956     </svn> 
     865  <target name="svnupdate-core" unless="nocvs.mode"> 
     866 
     867    <svn> 
     868        <update dir="." recurse="false"/> 
     869    </svn> 
     870 
     871   <svn> 
     872        <update dir="bin"/> 
     873        <update dir="comms"/> 
     874        <update dir="dist-resources"/> 
     875        <update dir="docs"/> 
     876        <update dir="lib"/> 
     877        <update dir="resources"/> 
     878        <update dir="src"/> 
     879        <update dir="winutil"/> 
     880    </svn> 
    957881 
    958882  </target> 
     
    963887  </target> 
    964888 
    965   <target name="compile-core" depends="init"  
     889   <target name="compile-core" depends="init"  
    966890    description="Compile only the Greenstone core"> 
    967891    <mkdir dir="${build.home}"/> 
     
    987911    <copy file="${build.home}/gsdl3.jar" todir="${web.lib}"/> 
    988912    <!-- copy the localsite server in case we need it --> 
    989     <copy file="${build.home}/org/greenstone/gsdl3/SOAPServerlocalsite.class" tofile="${web.classes}/org/greenstone/gsdl3/SOAPServerlocalsite.class" /> 
     913    <copy file="${build.home}/org/greenstone/gsdl3/${base.webservice.name}localsite.class" tofile="${web.classes}/org/greenstone/gsdl3/${base.webservice.name}localsite.class" /> 
    990914 
    991915    <jar destfile="${build.home}/GAI.jar"> 
     
    997921      </manifest> 
    998922    </jar> 
    999      
     923       
    1000924    <jar destfile="${build.home}/phind.jar"> 
    1001925      <fileset dir="${build.home}"> 
     
    1040964    <copy file="${build.home}/server.jar" todir="${basedir}"/> 
    1041965  </target> 
    1042    
    1043   <!-- ================== Packages targets ================================ --> 
     966  
     967<!-- ================== Packages targets ================================ --> 
    1044968  <!-- these targets refer to the greenstone source packages - these need  
    1045969  updating less often, so are in  separate targets to the core --> 
    1046970  <target name="prepare-packages" depends="init,prepare-indexers"/> 
    1047971   
    1048   <target name="checkout-indexers" depends="init" if="independent-indexers" unless="nosvn.mode"> 
     972  <target name="checkout-indexers" depends="init" if="independent-indexers" unless="nocvs.mode"> 
     973<!--  <target name="checkout-indexers" depends="check-svnroot,init" if="independent-indexers" unless="nocvs.mode"> --> 
    1049974    <svn> 
    1050       <checkout url="${svn.root}/indexers/${branch.path}" dest="${src.packages.home}/indexers" revision="${branch.revision}"/> 
    1051     </svn> 
     975        <checkout url="${svn.root}/indexers/${branch.path}" dest="${src.packages.home}/indexers" revision="${branch.revision}"/> 
     976    </svn> 
    1052977  </target> 
    1053978   
     
    1059984    description="Update only the source packages"/> 
    1060985 
    1061   <target name="svnupdate-packages" unless="nosvn.mode">  
    1062     <svn> 
    1063       <update dir="${src.packages.home}"/> 
    1064     </svn> 
     986  <target name="svnupdate-packages" unless="nocvs.mode">  
     987   <svn> 
     988        <update dir="${src.packages.home}"/> 
     989    </svn> 
    1065990  </target> 
    1066991   
     
    10811006      <arg value="--prefix=${basedir}"/> 
    10821007      <arg value="--libdir=${lib.jni}"/> 
    1083       <arg value="--with-gdbm=${gdbm.installed.path}"/> 
     1008     <arg value="--with-gdbm=${gdbm.installed.path}"/> 
    10841009    </exec>     
    10851010  </target> 
    10861011 
    1087   <!-- Message from oran. I removed the condition from this line becuase it meant 
    1088   the indexers would only be configured if collection building was DISabled. 
    1089   Shouldn't they be configured when collection building is ENabled? --> 
    1090  
    1091   <!--  <target name="configure-indexers" depends="init" if="independent-indexers"> --> 
    1092   <target name="configure-indexers" depends="init"> 
    1093     <echo>Configuring Indexers</echo> 
    1094     <exec executable="${indexers.home}/configure" os="${os.unix}" dir="${indexers.home}"> 
    1095       <arg value="--prefix=${basedir}"/> 
    1096       <arg value="--libdir=${lib.jni}"/> 
    1097     </exec>           
    1098   </target> 
     1012<!-- Message from oran. I removed the condition from this line becuase it meant 
     1013    the indexers would only be configured if collection building was DISabled. 
     1014    Shouldn't they be configured when collection building is ENabled? --> 
     1015 
     1016<!--    <target name="configure-indexers" depends="init" if="independent-indexers"> --> 
     1017<target name="configure-indexers" depends="init"> 
     1018        <echo>Configuring Indexers</echo> 
     1019        <exec executable="${indexers.home}/configure" os="${os.unix}" dir="${indexers.home}"> 
     1020            <arg value="--prefix=${basedir}"/> 
     1021            <arg value="--libdir=${lib.jni}"/> 
     1022        </exec>           
     1023    </target> 
    10991024 
    11001025  <target name="clean-packages" depends="init,clean-javagdbm,clean-indexers" description="Clean only the packages"/> 
     
    11131038    </exec> 
    11141039    <exec executable="${indexers.home}/winMake.bat" os="${os.windows}" 
    1115       dir="${indexers.home}"> 
    1116       <arg value="clean"/> 
    1117     </exec> 
    1118  
    1119   </target> 
    1120   <target name="distclean-packages" depends="init,distclean-javagdbm,distclean-indexers" description="Distclean only the packages"/> 
    1121  
    1122   <target name="distclean-javagdbm" depends="init"> 
    1123     <exec executable="make" os="${os.unix}" 
    1124       dir="${javagdbm.home}"> 
    1125       <arg value="distclean"/> 
    1126     </exec> 
    1127   </target> 
    1128    
    1129   <target name="distclean-indexers" depends="init" if="independent-indexers"> 
    1130     <exec executable="make" os="${os.unix}" 
    1131       dir="${indexers.home}"> 
    1132       <arg value="distclean"/> 
    1133     </exec> 
    1134     <exec executable="${indexers.home}/winMake.bat" os="${os.windows}" 
    1135       dir="${indexers.home}"> 
    1136       <arg value="clean"/> 
    1137     </exec> 
    1138  
    1139   </target> 
    1140    
    1141   <target name="compile-packages" description="Compile only the source packages"> 
    1142      
    1143     <!-- javagdbm --> 
    1144     <echo>compile javagdbm</echo> 
    1145     <exec executable="make" os="${os.unix}" dir="${javagdbm.home}"/> 
    1146     <exec executable="make" os="${os.unix}" dir="${javagdbm.home}"> 
    1147       <arg value="install"/> 
    1148     </exec> 
    1149  
    1150     <!-- windows: just the java stuff. --> 
    1151     <echo>Windows: compile javagdbm (java only)</echo> 
    1152     <exec executable="${javagdbm.home}/winMake.bat" os="${os.windows}" dir="${javagdbm.home}"> 
    1153       <arg value="compile"/> 
    1154       <arg value="javaonly"/> 
    1155     </exec> 
    1156  
    1157     <!-- install the jar file --> 
    1158     <echo>Install the javagdbm jar file</echo> 
    1159     <copy file="${javagdbm.home}/javagdbm.jar" todir="${lib.jni}"/> 
    1160  
    1161     <!-- Indexers --> 
    1162  
    1163     <!-- this may be in gs2build - we will be recompiling, but never mind --> 
    1164     <echo>Indexers: make (from ${indexers.home})</echo> 
    1165     <exec executable="make" os="${os.unix}" dir="${indexers.home}"/> 
    1166     <echo>Indexers: make install</echo> 
    1167     <exec executable="make" os="${os.unix}" dir="${indexers.home}"> 
    1168       <arg value="install"/> 
    1169     </exec> 
    1170  
    1171     <echo>Indexers: make</echo> 
    1172     <exec executable="${indexers.home}/winMake.bat" os="${os.windows}" dir="${indexers.home}"> 
    1173       <arg value="all"/> 
    1174     </exec> 
    1175     <echo>Indexers: make install</echo> 
    1176     <exec executable="${indexers.home}/winMake.bat" os="${os.windows}" dir="${indexers.home}"> 
    1177       <arg value="install"/> 
    1178     </exec> 
    1179  
    1180     <!-- install the jar and jni files --> 
    1181     <echo>Install the indexers' jar and jni files</echo> 
    1182     <copy file="${mg.home}/mg.jar" todir="${lib.jni}"/> 
    1183     <copy file="${mgpp.home}/mgpp.jar" todir="${lib.jni}"/> 
    1184     <copy file="${lucene.home}/LuceneWrapper.jar" todir="${web.lib}"/> 
    1185     <antcall target="install-jni-files"/> 
    1186   </target> 
     1040       dir="${indexers.home}"> 
     1041       <arg value="clean"/> 
     1042    </exec> 
     1043 
     1044  </target> 
     1045    
     1046    <target name="compile-packages" description="Compile only the source packages"> 
     1047          
     1048        <!-- javagdbm --> 
     1049        <echo>compile javagdbm</echo> 
     1050        <exec executable="make" os="${os.unix}" dir="${javagdbm.home}"/> 
     1051        <exec executable="make" os="${os.unix}" dir="${javagdbm.home}"> 
     1052            <arg value="install"/> 
     1053        </exec> 
     1054 
     1055        <!-- windows: just the java stuff. --> 
     1056        <echo>Windows: compile javagdbm (java only)</echo> 
     1057        <exec executable="${javagdbm.home}/winMake.bat" os="${os.windows}" dir="${javagdbm.home}"> 
     1058            <arg value="compile"/> 
     1059            <arg value="javaonly"/> 
     1060        </exec> 
     1061 
     1062        <!-- install the jar file --> 
     1063        <echo>Install the javagdbm jar file</echo> 
     1064        <copy file="${javagdbm.home}/javagdbm.jar" todir="${lib.jni}"/> 
     1065 
     1066        <!-- Indexers --> 
     1067 
     1068        <!-- this may be in gs2build - we will be recompiling, but never mind --> 
     1069        <echo>Indexers: make (from ${indexers.home})</echo> 
     1070        <exec executable="make" os="${os.unix}" dir="${indexers.home}"/> 
     1071        <echo>Indexers: make install</echo> 
     1072        <exec executable="make" os="${os.unix}" dir="${indexers.home}"> 
     1073            <arg value="install"/> 
     1074        </exec> 
     1075 
     1076        <echo>Indexers: make</echo> 
     1077        <exec executable="${indexers.home}/winMake.bat" os="${os.windows}" dir="${indexers.home}"> 
     1078            <arg value="all"/> 
     1079        </exec> 
     1080        <echo>Indexers: make install</echo> 
     1081        <exec executable="${indexers.home}/winMake.bat" os="${os.windows}" dir="${indexers.home}"> 
     1082            <arg value="install"/> 
     1083        </exec> 
     1084 
     1085        <!-- install the jar and jni files --> 
     1086        <echo>Install the indexers' jar and jni files</echo> 
     1087        <copy file="${mg.home}/mg.jar" todir="${lib.jni}"/> 
     1088        <copy file="${mgpp.home}/mgpp.jar" todir="${lib.jni}"/> 
     1089        <copy file="${lucene.home}/LuceneWrapper.jar" todir="${web.lib}"/> 
     1090        <antcall target="install-jni-files"/> 
     1091    </target> 
    11871092 
    11881093  <target name="install-jni-files" depends="init,install-jni-files-linux,install-jni-files-windows,install-jni-files-macos"/> 
    11891094 
    1190   <target name="install-jni-files-linux" depends="init" if="current.os.isunixnotmac"> 
     1095    <target name="install-jni-files-linux" depends="init" if="current.os.isunixnotmac"> 
    11911096    <copy file="${mg.home}/jni/libmgretrievejni.so" todir="${lib.jni}"/> 
    11921097    <copy file="${mg.home}/jni/libmgsearchjni.so" todir="${lib.jni}"/> 
    1193     <copy file="${mg.home}/jni/libmgpassjni.so" todir="${lib.jni}"/> 
     1098     <copy file="${mg.home}/jni/libmgpassjni.so" todir="${lib.jni}"/> 
    11941099    <copy file="${mgpp.home}/jni/libmgppretrievejni.so" todir="${lib.jni}"/> 
    11951100    <copy file="${mgpp.home}/jni/libmgppsearchjni.so" todir="${lib.jni}"/> 
    1196     <copy file="${mgpp.home}/jni/libmgpppassjni.so" todir="${lib.jni}"/> 
    1197   </target> 
    1198   <target name="install-jni-files-windows" depends="init" if="current.os.iswindows"> 
     1101     <copy file="${mgpp.home}/jni/libmgpppassjni.so" todir="${lib.jni}"/> 
     1102   </target> 
     1103   <target name="install-jni-files-windows" depends="init" if="current.os.iswindows"> 
    11991104    <copy file="${mg.home}/jni/mgretrievejni.dll" todir="${lib.jni}"/> 
    12001105    <copy file="${mg.home}/jni/mgsearchjni.dll" todir="${lib.jni}"/> 
    1201     <copy file="${mg.home}/jni/mgpassjni.dll" todir="${lib.jni}"/> 
     1106     <copy file="${mg.home}/jni/mgpassjni.dll" todir="${lib.jni}"/> 
    12021107    <copy file="${mgpp.home}/jni/mgppretrievejni.dll" todir="${lib.jni}"/> 
    12031108    <copy file="${mgpp.home}/jni/mgppsearchjni.dll" todir="${lib.jni}"/> 
    1204     <copy file="${mgpp.home}/jni/mgpppassjni.dll" todir="${lib.jni}"/> 
    1205   </target> 
    1206   <target name="install-jni-files-macos" depends="init" if="current.os.ismac"> 
     1109     <copy file="${mgpp.home}/jni/mgpppassjni.dll" todir="${lib.jni}"/> 
     1110   </target> 
     1111   <target name="install-jni-files-macos" depends="init" if="current.os.ismac"> 
    12071112    <copy file="${mg.home}/jni/libmgretrievejni.jnilib" todir="${lib.jni}"/> 
    12081113    <copy file="${mg.home}/jni/libmgsearchjni.jnilib" todir="${lib.jni}"/> 
    1209     <copy file="${mg.home}/jni/libmgpassjni.jnilib" todir="${lib.jni}"/> 
     1114     <copy file="${mg.home}/jni/libmgpassjni.jnilib" todir="${lib.jni}"/> 
    12101115    <copy file="${mgpp.home}/jni/libmgppretrievejni.jnilib" todir="${lib.jni}"/> 
    12111116    <copy file="${mgpp.home}/jni/libmgppsearchjni.jnilib" todir="${lib.jni}"/> 
    1212     <copy file="${mgpp.home}/jni/libmgpppassjni.jnilib" todir="${lib.jni}"/> 
    1213   </target> 
    1214    
     1117     <copy file="${mgpp.home}/jni/libmgpppassjni.jnilib" todir="${lib.jni}"/> 
     1118   </target> 
     1119  
    12151120  <!-- ================== gs2building targets ===============--> 
    12161121 
     
    12201125    description="Update only the Greenstone 2 building components"/> 
    12211126 
    1222   <target name="svnupdate-gs2building" if="collection.building.enabled" depends="init,svnupdate-gs2build,svnupdate-gli" unless="nosvn.mode"> 
    1223   </target> 
    1224  
    1225   <target name="svnupdate-gs2build" if="collection.building.enabled" depends="init" unless="nosvn.mode"> 
    1226     <!-- please keep this function in sync with checkout-gs2build --> 
    1227  
    1228     <echo>updating gs2build</echo> 
    1229     <!-- svn updates --> 
     1127  <target name="svnupdate-gs2building" if="collection.building.enabled" depends="init,svnupdate-gs2build,svnupdate-gli" unless="nocvs.mode"> 
     1128  </target> 
     1129 
     1130  <target name="svnupdate-gs2build" if="collection.building.enabled" depends="init" unless="nocvs.mode"> 
     1131        <!-- please keep this function in sync with checkout-gs2build --> 
     1132 
     1133        <echo>updating gs2build</echo> 
     1134        <!-- svn updates --> 
     1135        <svn> 
     1136            <!-- perllib --> 
     1137            <update dir="gs2build/perllib" revision="${branch.revision}"/> 
     1138 
     1139            <!-- selected packages --> 
     1140            <update dir="gs2build/packages/cpan" revision="${branch.revision}" /> 
     1141            <update dir="gs2build/packages/expat" revision="${branch.revision}" /> 
     1142            <update dir="gs2build/packages/html-tidy" revision="${branch.revision}" /> 
     1143            <update dir="gs2build/packages/isis-gdl" revision="${branch.revision}" /> 
     1144            <update dir="gs2build/packages/kea" revision="${branch.revision}" /> 
     1145            <update dir="gs2build/packages/pdftohtml" revision="${branch.revision}" /> 
     1146            <update dir="gs2build/packages/rtftohtml" revision="${branch.revision}" /> 
     1147            <update dir="gs2build/packages/w3mir" revision="${branch.revision}" /> 
     1148            <update dir="gs2build/packages/wget" revision="${branch.revision}" /> 
     1149            <update dir="gs2build/packages/windows" revision="${branch.revision}" /> 
     1150            <update dir="gs2build/packages/wv" revision="${branch.revision}" /> 
     1151            <update dir="gs2build/packages/xlhtml" revision="${branch.revision}" /> 
     1152            <update dir="gs2build/packages/yaz" revision="${branch.revision}" /> 
     1153             
     1154            <!-- some of src (db2txt hashfile phind txt2db) --> 
     1155            <update dir="gs2build/src/gdbmedit/db2txt" revision="${branch.revision}" /> 
     1156            <update dir="gs2build/src/hashfile" revision="${branch.revision}" /> 
     1157            <update dir="gs2build/src/phind" revision="${branch.revision}" /> 
     1158            <update dir="gs2build/src/gdbmedit/txt2db" revision="${branch.revision}" /> 
     1159 
     1160            <!-- bin --> 
     1161            <update dir="gs2build/bin/script" revision="${branch.revision}" /> 
     1162 
     1163            <!-- mappings --> 
     1164            <update dir="gs2build/mappings" revision="${branch.revision}"/> 
     1165 
     1166            <!-- etc/packages --> 
     1167            <update dir="gs2build/etc/packages" revision="${branch.revision}"/> 
     1168     
     1169            <!-- collect --> 
     1170            <update dir="gs2build/collect/modelcol" revision="${branch.revision}"/> 
     1171 
     1172            <!-- gs2build-extra --> 
     1173            <update dir="gs2build/gs2build-extra" revision="${branch.revision}"/> 
     1174 
     1175            <!-- indexers --> 
     1176            <update dir="gs2build/indexers" revision="${branch.revision}"/> 
     1177 
     1178            <!-- single files --> 
     1179             
     1180            <!-- some files from lib --> 
     1181            <export srcUrl="${svn.root}/gsdl/${branch.path}/lib/text_t.h" destPath="gs2build/lib/text_t.h"/> 
     1182            <export srcUrl="${svn.root}/gsdl/${branch.path}/lib/text_t.cpp" destPath="gs2build/lib/text_t.cpp"/> 
     1183            <export srcUrl="${svn.root}/gsdl/${branch.path}/lib/gsdlconf.h" destPath="gs2build/lib/gsdlconf.h"/> 
     1184 
     1185            <!-- some files from etc --> 
     1186            <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/marctodc.txt" destPath="gs2build/etc/marctodc.txt"/> 
     1187            <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/dc2marc-mapping.xml" destPath="gs2build/etc/dc2marc-mapping.xml"/> 
     1188            <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/dc2marc.xsl" destPath="gs2build/etc/dc2marc.xsl"/> 
     1189            <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/qdc2marc-mapping.xml" destPath="gs2build/etc/qdc2marc-mapping.xml"/> 
     1190 
     1191            <!-- some files from the gsdl root directory --> 
     1192            <export srcUrl="${svn.root}/gsdl/${branch.path}/setup.bash" destPath="gs2build/setup.bash"/> 
     1193            <export srcUrl="${svn.root}/gsdl/${branch.path}/config.sub" destPath="gs2build/config.sub"/> 
     1194            <export srcUrl="${svn.root}/gsdl/${branch.path}/config.guess" destPath="gs2build/config.guess"/> 
     1195            <export srcUrl="${svn.root}/gsdl/${branch.path}/config.h.in" destPath="gs2build/config.h.in"/> 
     1196            <export srcUrl="${svn.root}/gsdl/${branch.path}/configtest.pl" destPath="gs2build/configtest.pl"/> 
     1197            <export srcUrl="${svn.root}/gsdl/${branch.path}/install-sh" destPath="gs2build/install-sh"/> 
     1198            <export srcUrl="${svn.root}/gsdl/${branch.path}/acconfig.h" destPath="gs2build/acconfig.h"/> 
     1199            <export srcUrl="${svn.root}/gsdl/${branch.path}/aclocal.m4" destPath="gs2build/aclocal.m4"/> 
     1200            <export srcUrl="${svn.root}/gsdl/${branch.path}/WIN32cfg.h" destPath="gs2build/WIN32cfg.h"/> 
     1201        </svn> 
     1202  </target> 
     1203   
     1204  <target name="svnupdate-gli" if="collection.building.enabled" depends="init" unless="nocvs.mode"> 
    12301205    <svn> 
    1231       <!-- perllib --> 
    1232       <update dir="gs2build/perllib" revision="${branch.revision}"/> 
    1233  
    1234       <!-- selected packages --> 
    1235       <update dir="gs2build/packages/cpan" revision="${branch.revision}" /> 
    1236       <update dir="gs2build/packages/expat" revision="${branch.revision}" /> 
    1237       <update dir="gs2build/packages/html-tidy" revision="${branch.revision}" /> 
    1238       <update dir="gs2build/packages/isis-gdl" revision="${branch.revision}" /> 
    1239       <update dir="gs2build/packages/kea" revision="${branch.revision}" /> 
    1240       <update dir="gs2build/packages/pdftohtml" revision="${branch.revision}" /> 
    1241       <update dir="gs2build/packages/rtftohtml" revision="${branch.revision}" /> 
    1242       <update dir="gs2build/packages/w3mir" revision="${branch.revision}" /> 
    1243       <update dir="gs2build/packages/wget" revision="${branch.revision}" /> 
    1244       <update dir="gs2build/packages/windows" revision="${branch.revision}" /> 
    1245       <update dir="gs2build/packages/wv" revision="${branch.revision}" /> 
    1246       <update dir="gs2build/packages/xlhtml" revision="${branch.revision}" /> 
    1247       <update dir="gs2build/packages/yaz" revision="${branch.revision}" /> 
    1248        
    1249       <!-- some of src (db2txt hashfile phind txt2db) --> 
    1250       <update dir="gs2build/src/db2txt" revision="${branch.revision}" /> 
    1251       <update dir="gs2build/src/hashfile" revision="${branch.revision}" /> 
    1252       <update dir="gs2build/src/phind" revision="${branch.revision}" /> 
    1253       <update dir="gs2build/src/txt2db" revision="${branch.revision}" /> 
    1254  
    1255       <!-- bin --> 
    1256       <update dir="gs2build/bin/script" revision="${branch.revision}" /> 
    1257  
    1258       <!-- mappings --> 
    1259       <update dir="gs2build/mappings" revision="${branch.revision}"/> 
    1260  
    1261       <!-- etc/packages --> 
    1262       <update dir="gs2build/etc/packages" revision="${branch.revision}"/> 
    1263        
    1264       <!-- collect --> 
    1265       <update dir="gs2build/collect/modelcol" revision="${branch.revision}"/> 
    1266  
    1267       <!-- gs2build-extra --> 
    1268       <update dir="gs2build/gs2build-extra" revision="${branch.revision}"/> 
    1269  
    1270       <!-- indexers --> 
    1271       <update dir="gs2build/indexers" revision="${branch.revision}"/> 
    1272  
    1273       <!-- single files --> 
    1274        
    1275       <!-- some files from lib --> 
    1276       <export srcUrl="${svn.root}/gsdl/${branch.path}/lib/text_t.h" destPath="gs2build/lib/text_t.h"/> 
    1277       <export srcUrl="${svn.root}/gsdl/${branch.path}/lib/text_t.cpp" destPath="gs2build/lib/text_t.cpp"/> 
    1278       <export srcUrl="${svn.root}/gsdl/${branch.path}/lib/gsdlconf.h" destPath="gs2build/lib/gsdlconf.h"/> 
    1279  
    1280       <!-- some files from etc --> 
    1281       <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/marctodc.txt" destPath="gs2build/etc/marctodc.txt"/> 
    1282       <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/dc2marc-mapping.xml" destPath="gs2build/etc/dc2marc-mapping.xml"/> 
    1283       <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/dc2marc.xsl" destPath="gs2build/etc/dc2marc.xsl"/> 
    1284       <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/qdc2marc-mapping.xml" destPath="gs2build/etc/qdc2marc-mapping.xml"/> 
    1285  
    1286       <!-- some files from the gsdl root directory --> 
    1287       <export srcUrl="${svn.root}/gsdl/${branch.path}/setup.bash" destPath="gs2build/setup.bash"/> 
    1288       <export srcUrl="${svn.root}/gsdl/${branch.path}/config.sub" destPath="gs2build/config.sub"/> 
    1289       <export srcUrl="${svn.root}/gsdl/${branch.path}/config.guess" destPath="gs2build/config.guess"/> 
    1290       <export srcUrl="${svn.root}/gsdl/${branch.path}/config.h.in" destPath="gs2build/config.h.in"/> 
    1291       <export srcUrl="${svn.root}/gsdl/${branch.path}/configtest.pl" destPath="gs2build/configtest.pl"/> 
    1292       <export srcUrl="${svn.root}/gsdl/${branch.path}/install-sh" destPath="gs2build/install-sh"/> 
    1293       <export srcUrl="${svn.root}/gsdl/${branch.path}/acconfig.h" destPath="gs2build/acconfig.h"/> 
    1294       <export srcUrl="${svn.root}/gsdl/${branch.path}/aclocal.m4" destPath="gs2build/aclocal.m4"/> 
    1295       <export srcUrl="${svn.root}/gsdl/${branch.path}/WIN32cfg.h" destPath="gs2build/WIN32cfg.h"/> 
    1296     </svn> 
    1297   </target> 
    1298    
    1299   <target name="svnupdate-gli" if="collection.building.enabled" depends="init" unless="nosvn.mode"> 
    1300     <svn> 
    1301       <update dir="${gli.home}" revision="${branch.revision}"/> 
    1302     </svn> 
     1206        <update dir="${gli.home}" revision="${branch.revision}"/> 
     1207    </svn> 
    13031208  </target> 
    13041209 
    13051210  <target name="prepare-gs2building" depends="init,prepare-gs2build,prepare-gli" if="collection.building.enabled"> 
    13061211  </target> 
    1307   <target name="checkout-gs2build" depends="init" if="collection.building.enabled" unless="nosvn.mode"> 
    1308     <!-- please keep this function in sync with update-gs2build --> 
    1309     <echo>checking out gs2build</echo> 
    1310  
    1311     <!-- this has to be created first to avoid errors when trying to export to it later --> 
    1312     <mkdir dir="${basedir}/gs2build/lib"/> 
    1313  
    1314     <!-- svn checkouts --> 
    1315     <svn> 
    1316       <!-- perllib --> 
    1317       <checkout url="${svn.root}/gsdl/${branch.path}/perllib" destPath="gs2build/perllib" revision="${branch.revision}"/> 
    1318  
    1319       <!-- selected packages --> 
    1320       <checkout url="${svn.root}/gsdl/${branch.path}/packages/cpan" destPath="gs2build/packages/cpan" revision="${branch.revision}" /> 
    1321       <checkout url="${svn.root}/gsdl/${branch.path}/packages/expat" destPath="gs2build/packages/expat" revision="${branch.revision}" /> 
    1322       <checkout url="${svn.root}/gsdl/${branch.path}/packages/html-tidy" destPath="gs2build/packages/html-tidy" revision="${branch.revision}" /> 
    1323       <checkout url="${svn.root}/gsdl/${branch.path}/packages/isis-gdl" destPath="gs2build/packages/isis-gdl" revision="${branch.revision}" /> 
    1324       <checkout url="${svn.root}/gsdl/${branch.path}/packages/kea" destPath="gs2build/packages/kea" revision="${branch.revision}" /> 
    1325       <checkout url="${svn.root}/gsdl/${branch.path}/packages/pdftohtml" destPath="gs2build/packages/pdftohtml" revision="${branch.revision}" /> 
    1326       <checkout url="${svn.root}/gsdl/${branch.path}/packages/rtftohtml" destPath="gs2build/packages/rtftohtml" revision="${branch.revision}" /> 
    1327       <checkout url="${svn.root}/gsdl/${branch.path}/packages/w3mir" destPath="gs2build/packages/w3mir" revision="${branch.revision}" /> 
    1328       <checkout url="${svn.root}/gsdl/${branch.path}/packages/wget" destPath="gs2build/packages/wget" revision="${branch.revision}" /> 
    1329       <checkout url="${svn.root}/gsdl/${branch.path}/packages/windows" destPath="gs2build/packages/windows" revision="${branch.revision}" /> 
    1330       <checkout url="${svn.root}/gsdl/${branch.path}/packages/wv" destPath="gs2build/packages/wv" revision="${branch.revision}" /> 
    1331       <checkout url="${svn.root}/gsdl/${branch.path}/packages/xlhtml" destPath="gs2build/packages/xlhtml" revision="${branch.revision}" /> 
    1332       <checkout url="${svn.root}/gsdl/${branch.path}/packages/yaz" destPath="gs2build/packages/yaz" revision="${branch.revision}" /> 
    1333        
    1334       <!-- some of src (db2txt hashfile phind txt2db) --> 
    1335       <checkout url="${svn.root}/gsdl/${branch.path}/src/db2txt" destPath="gs2build/src/db2txt" revision="${branch.revision}" /> 
    1336       <checkout url="${svn.root}/gsdl/${branch.path}/src/hashfile" destPath="gs2build/src/hashfile" revision="${branch.revision}" /> 
    1337       <checkout url="${svn.root}/gsdl/${branch.path}/src/phind" destPath="gs2build/src/phind" revision="${branch.revision}" /> 
    1338       <checkout url="${svn.root}/gsdl/${branch.path}/src/txt2db" destPath="gs2build/src/txt2db" revision="${branch.revision}" /> 
    1339  
    1340       <!-- bin --> 
    1341       <checkout url="${svn.root}/gsdl/${branch.path}/bin/script" destPath="gs2build/bin/script" revision="${branch.revision}" /> 
    1342  
    1343       <!-- mappings --> 
    1344       <checkout url="${svn.root}/gsdl/${branch.path}/mappings" destPath="gs2build/mappings" revision="${branch.revision}"/> 
    1345  
    1346       <!-- etc/packages --> 
    1347       <checkout url="${svn.root}/gsdl/${branch.path}/etc/packages" destPath="gs2build/etc/packages" revision="${branch.revision}"/> 
    1348        
    1349       <!-- collect --> 
    1350       <checkout url="${svn.root}/gsdl/${branch.path}/collect/modelcol" destPath="gs2build/collect/modelcol" revision="${branch.revision}"/> 
    1351  
    1352       <!-- gs2build-extra --> 
    1353       <checkout url="${svn.root}/other-projects/trunk/gs2build-extra" destPath="gs2build/gs2build-extra" revision="${branch.revision}"/> 
    1354  
    1355       <!-- indexers --> 
    1356       <checkout url="${svn.root}/indexers/${branch.path}" destPath="gs2build/indexers" revision="${branch.revision}"/> 
    1357  
    1358       <!-- single files --> 
    1359        
    1360       <!-- some files from lib --> 
    1361       <export srcUrl="${svn.root}/gsdl/${branch.path}/lib/text_t.h" destPath="gs2build/lib/text_t.h"/> 
    1362       <export srcUrl="${svn.root}/gsdl/${branch.path}/lib/text_t.cpp" destPath="gs2build/lib/text_t.cpp"/> 
    1363       <export srcUrl="${svn.root}/gsdl/${branch.path}/lib/gsdlconf.h" destPath="gs2build/lib/gsdlconf.h"/> 
    1364  
    1365       <!-- some files from etc --> 
    1366       <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/marctodc.txt" destPath="gs2build/etc/marctodc.txt"/> 
    1367       <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/dc2marc-mapping.xml" destPath="gs2build/etc/dc2marc-mapping.xml"/> 
    1368       <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/dc2marc.xsl" destPath="gs2build/etc/dc2marc.xsl"/> 
    1369       <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/qdc2marc-mapping.xml" destPath="gs2build/etc/qdc2marc-mapping.xml"/> 
    1370  
    1371       <!-- some files from the gsdl root directory --> 
    1372       <export srcUrl="${svn.root}/gsdl/${branch.path}/setup.bash" destPath="gs2build/setup.bash"/> 
    1373       <export srcUrl="${svn.root}/gsdl/${branch.path}/config.sub" destPath="gs2build/config.sub"/> 
    1374       <export srcUrl="${svn.root}/gsdl/${branch.path}/config.guess" destPath="gs2build/config.guess"/> 
    1375       <export srcUrl="${svn.root}/gsdl/${branch.path}/config.h.in" destPath="gs2build/config.h.in"/> 
    1376       <export srcUrl="${svn.root}/gsdl/${branch.path}/configtest.pl" destPath="gs2build/configtest.pl"/> 
    1377       <export srcUrl="${svn.root}/gsdl/${branch.path}/install-sh" destPath="gs2build/install-sh"/> 
    1378       <export srcUrl="${svn.root}/gsdl/${branch.path}/acconfig.h" destPath="gs2build/acconfig.h"/> 
    1379       <export srcUrl="${svn.root}/gsdl/${branch.path}/aclocal.m4" destPath="gs2build/aclocal.m4"/> 
    1380       <export srcUrl="${svn.root}/gsdl/${branch.path}/WIN32cfg.h" destPath="gs2build/WIN32cfg.h"/> 
    1381     </svn> 
    1382   </target> 
     1212    <target name="checkout-gs2build" depends="init" if="collection.building.enabled" unless="nocvs.mode"> 
     1213        <!-- please keep this function in sync with update-gs2build --> 
     1214        <echo>checking out gs2build</echo> 
     1215 
     1216        <!-- this has to be created first to avoid errors when trying to export to it later --> 
     1217        <mkdir dir="${basedir}/gs2build/lib"/> 
     1218 
     1219        <!-- svn checkouts --> 
     1220        <svn> 
     1221            <!-- perllib --> 
     1222            <checkout url="${svn.root}/gsdl/${branch.path}/perllib" destPath="gs2build/perllib" revision="${branch.revision}"/> 
     1223 
     1224            <!-- selected packages --> 
     1225            <checkout url="${svn.root}/gsdl/${branch.path}/packages/cpan" destPath="gs2build/packages/cpan" revision="${branch.revision}" /> 
     1226            <checkout url="${svn.root}/gsdl/${branch.path}/packages/expat" destPath="gs2build/packages/expat" revision="${branch.revision}" /> 
     1227            <checkout url="${svn.root}/gsdl/${branch.path}/packages/html-tidy" destPath="gs2build/packages/html-tidy" revision="${branch.revision}" /> 
     1228            <checkout url="${svn.root}/gsdl/${branch.path}/packages/isis-gdl" destPath="gs2build/packages/isis-gdl" revision="${branch.revision}" /> 
     1229            <checkout url="${svn.root}/gsdl/${branch.path}/packages/kea" destPath="gs2build/packages/kea" revision="${branch.revision}" /> 
     1230            <checkout url="${svn.root}/gsdl/${branch.path}/packages/pdftohtml" destPath="gs2build/packages/pdftohtml" revision="${branch.revision}" /> 
     1231            <checkout url="${svn.root}/gsdl/${branch.path}/packages/rtftohtml" destPath="gs2build/packages/rtftohtml" revision="${branch.revision}" /> 
     1232            <checkout url="${svn.root}/gsdl/${branch.path}/packages/w3mir" destPath="gs2build/packages/w3mir" revision="${branch.revision}" /> 
     1233            <checkout url="${svn.root}/gsdl/${branch.path}/packages/wget" destPath="gs2build/packages/wget" revision="${branch.revision}" /> 
     1234            <checkout url="${svn.root}/gsdl/${branch.path}/packages/windows" destPath="gs2build/packages/windows" revision="${branch.revision}" /> 
     1235            <checkout url="${svn.root}/gsdl/${branch.path}/packages/wv" destPath="gs2build/packages/wv" revision="${branch.revision}" /> 
     1236            <checkout url="${svn.root}/gsdl/${branch.path}/packages/xlhtml" destPath="gs2build/packages/xlhtml" revision="${branch.revision}" /> 
     1237            <checkout url="${svn.root}/gsdl/${branch.path}/packages/yaz" destPath="gs2build/packages/yaz" revision="${branch.revision}" /> 
     1238             
     1239            <!-- some of src (db2txt hashfile phind txt2db) --> 
     1240            <checkout url="${svn.root}/gsdl/${branch.path}/src/gdbmedit/db2txt" destPath="gs2build/src/gdbmedit/db2txt" revision="${branch.revision}" /> 
     1241            <checkout url="${svn.root}/gsdl/${branch.path}/src/hashfile" destPath="gs2build/src/hashfile" revision="${branch.revision}" /> 
     1242            <checkout url="${svn.root}/gsdl/${branch.path}/src/phind" destPath="gs2build/src/phind" revision="${branch.revision}" /> 
     1243            <checkout url="${svn.root}/gsdl/${branch.path}/src/gdbmedit/txt2db" destPath="gs2build/src/gdbmedit/txt2db" revision="${branch.revision}" /> 
     1244 
     1245            <!-- bin --> 
     1246            <checkout url="${svn.root}/gsdl/${branch.path}/bin/script" destPath="gs2build/bin/script" revision="${branch.revision}" /> 
     1247 
     1248            <!-- mappings --> 
     1249            <checkout url="${svn.root}/gsdl/${branch.path}/mappings" destPath="gs2build/mappings" revision="${branch.revision}"/> 
     1250 
     1251            <!-- etc/packages --> 
     1252            <checkout url="${svn.root}/gsdl/${branch.path}/etc/packages" destPath="gs2build/etc/packages" revision="${branch.revision}"/> 
     1253     
     1254            <!-- collect --> 
     1255            <checkout url="${svn.root}/gsdl/${branch.path}/collect/modelcol" destPath="gs2build/collect/modelcol" revision="${branch.revision}"/> 
     1256 
     1257            <!-- gs2build-extra --> 
     1258            <checkout url="${svn.root}/other-projects/trunk/gs2build-extra" destPath="gs2build/gs2build-extra" revision="${branch.revision}"/> 
     1259 
     1260            <!-- indexers --> 
     1261            <checkout url="${svn.root}/indexers/${branch.path}" destPath="gs2build/indexers" revision="${branch.revision}"/> 
     1262 
     1263            <!-- single files --> 
     1264             
     1265            <!-- some files from lib --> 
     1266            <export srcUrl="${svn.root}/gsdl/${branch.path}/lib/text_t.h" destPath="gs2build/lib/text_t.h"/> 
     1267            <export srcUrl="${svn.root}/gsdl/${branch.path}/lib/text_t.cpp" destPath="gs2build/lib/text_t.cpp"/> 
     1268            <export srcUrl="${svn.root}/gsdl/${branch.path}/lib/gsdlconf.h" destPath="gs2build/lib/gsdlconf.h"/> 
     1269 
     1270            <!-- some files from etc --> 
     1271            <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/marctodc.txt" destPath="gs2build/etc/marctodc.txt"/> 
     1272            <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/dc2marc-mapping.xml" destPath="gs2build/etc/dc2marc-mapping.xml"/> 
     1273            <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/dc2marc.xsl" destPath="gs2build/etc/dc2marc.xsl"/> 
     1274            <export srcUrl="${svn.root}/gsdl/${branch.path}/etc/qdc2marc-mapping.xml" destPath="gs2build/etc/qdc2marc-mapping.xml"/> 
     1275 
     1276            <!-- some files from the gsdl root directory --> 
     1277            <export srcUrl="${svn.root}/gsdl/${branch.path}/setup.bash" destPath="gs2build/setup.bash"/> 
     1278            <export srcUrl="${svn.root}/gsdl/${branch.path}/config.sub" destPath="gs2build/config.sub"/> 
     1279            <export srcUrl="${svn.root}/gsdl/${branch.path}/config.guess" destPath="gs2build/config.guess"/> 
     1280            <export srcUrl="${svn.root}/gsdl/${branch.path}/config.h.in" destPath="gs2build/config.h.in"/> 
     1281            <export srcUrl="${svn.root}/gsdl/${branch.path}/configtest.pl" destPath="gs2build/configtest.pl"/> 
     1282            <export srcUrl="${svn.root}/gsdl/${branch.path}/install-sh" destPath="gs2build/install-sh"/> 
     1283            <export srcUrl="${svn.root}/gsdl/${branch.path}/acconfig.h" destPath="gs2build/acconfig.h"/> 
     1284            <export srcUrl="${svn.root}/gsdl/${branch.path}/aclocal.m4" destPath="gs2build/aclocal.m4"/> 
     1285            <export srcUrl="${svn.root}/gsdl/${branch.path}/WIN32cfg.h" destPath="gs2build/WIN32cfg.h"/> 
     1286        </svn> 
     1287    </target> 
    13831288 
    13841289  <target name="prepare-gs2build" depends="init" if="collection.building.enabled" unless="gs2build.present"> 
     
    13931298 
    13941299  <target name="checkout-winbin" depends="init" if="current.os.iswindows"  
    1395     unless="nosvn.mode"> 
     1300    unless="nocvs.mode"> 
    13961301    <svn> 
    1397       <checkout url="${svn.root}/other-projects/trunk/winbin" destPath="${basedir}/winbin" revision="${branch.revision}"/> 
    1398     </svn>   
    1399   </target> 
    1400  
    1401   <target name="update-winbin" depends="init" if="current.os.iswindows" unless="nosvn.mode"> 
    1402     <svn> 
    1403       <update dir="winbin"/> 
    1404     </svn>   
    1405   </target> 
     1302        <checkout url="${svn.root}/other-projects/trunk/winbin" destPath="${basedir}/winbin" revision="${branch.revision}"/> 
     1303    </svn>   
     1304  </target> 
     1305 
     1306  <target name="update-winbin" depends="init" if="current.os.iswindows" unless="nocvs.mode"> 
     1307        <svn> 
     1308            <update dir="winbin"/> 
     1309        </svn>   
     1310    </target> 
    14061311   
    14071312  <target name="get-windows-binaries" depends="init" if="collection.building.enabled.windows"> 
     
    14161321  <target name="unzip-windows-packages" depends="init" if="collection.building.enabled.windows">   
    14171322    <unzip src="${gs2build.home}/packages/windows/gdbm/gdbm.zip" 
    1418       dest="${gs2build.home}/packages/windows/gdbm"/> 
    1419     <unzip src="${gs2build.home}/packages/windows/crypt/crypt.zip" 
    1420       dest="${gs2build.home}/packages/windows/crypt"/> 
    1421     <unzip src="${gs2build.home}/packages/windows/expat/expat.zip" 
    1422       dest="${gs2build.home}/packages/windows/expat"/> 
    1423   </target> 
     1323    dest="${gs2build.home}/packages/windows/gdbm"/> 
     1324   <unzip src="${gs2build.home}/packages/windows/crypt/crypt.zip" 
     1325    dest="${gs2build.home}/packages/windows/crypt"/> 
     1326       <unzip src="${gs2build.home}/packages/windows/expat/expat.zip" 
     1327    dest="${gs2build.home}/packages/windows/expat"/> 
     1328   </target> 
    14241329   
    14251330  <!-- downloads a good XML-Parser --> 
    14261331  <target name="get-macos-extra" depends="init" if="need.macos.extra">   
    1427     <get src="http://www.greenstone.org/gs3files/XML-Parser.tar.gz" 
     1332<!-- 
     1333      <get src="http://www.greenstone.org/gs3files/XML-Parser.tar.gz" 
    14281334      dest="${gs2build.home}/perllib/cpan/XML-Parser.tar.gz" 
    14291335      usetimestamp="true"/> 
     1336--> 
     1337    <echo>Nothing extra currently needed for MacOs prepare</echo> 
    14301338  </target>   
    14311339 
     
    14341342    <!-- make sure these directories are present, otherwise chmod craps out  
    14351343    this chmod is needed in case we are unpacking for a second time --> 
     1344<!-- 
    14361345    <mkdir dir="${gs2build.home}/perllib/cpan/perl-5.8"/> 
    14371346    <mkdir dir="${gs2build.home}/perllib/cpan/perl-5.6"/> 
     
    14411350      dest="${gs2build.home}/perllib/cpan/" 
    14421351      compression="gzip"/> 
     1352--> 
     1353    <echo>Nothing extra currently needed for MacOs install</echo> 
    14431354  </target> 
    14441355 
     
    14601371      <filterset> 
    14611372    <filter token="gsdlhome" value="${gs2build.home.windows}"/> 
    1462       </filterset> 
     1373     </filterset> 
    14631374    </move>   
    14641375    <move file="${gs2build.home}/setup-tmp.bat" tofile="${gs2build.home}/setup.bat" /> 
     
    14881399  </target> 
    14891400   
    1490   <target name="checkout-gli" depends="init" if="collection.building.enabled" unless="nosvn.mode"> 
     1401<!--  <target name="checkout-gli" depends="check-cvsroot,init" if="collection.building.enabled" unless="nocvs.mode"> --> 
     1402  <target name="checkout-gli" depends="init" if="collection.building.enabled" unless="nocvs.mode"> 
    14911403    <echo>checking out gli</echo> 
    14921404    <svn> 
    1493       <checkout url="${svn.root}/gli/${branch.path}" destPath="gli" revision="${branch.revision}"/> 
    1494     </svn> 
    1495   </target> 
    1496    
     1405        <checkout url="${svn.root}/gli/${branch.path}" destPath="gli" revision="${branch.revision}"/> 
     1406    </svn> 
     1407  </target> 
     1408     
    14971409  <target name="configure-gs2building" depends="init" if="collection.building.enabled" 
    14981410    description="Configure only the Greenstone 2 building components"> 
     
    15311443    <!-- windows: -->     
    15321444    <!-- run the setup script --> 
    1533     <exec executable="${compile.windows.c++.setup}" os="${os.windows}" /> 
     1445    <!--<exec executable="${compile.windows.c++.setup}" os="${os.windows}" />--> 
     1446    <!--Above does not work:  
     1447    even though vcvars.bat executes, the env changes it makes don't get saved. Need user to     run vcvars.bat first before calling ant--> 
    15341448    <exec executable="nmake" dir="${gs2build.home}" os="${os.windows}" > 
    1535       <arg value="/f"/> 
    1536       <arg value="win32.mak"/> 
    1537       <arg value="clean"/> 
    1538     </exec> 
    1539   </target> 
    1540    
    1541   <target name="distclean-gs2building" depends="init,clean-gli,clean-gs2build,distclean-gs2build"  
    1542     description="Distclean only the Greenstone 2 building components"  
    1543     if="collection.building.enabled"/> 
    1544  
     1449     <arg value="/f"/> 
     1450     <arg value="win32.mak"/> 
     1451     <arg value="clean"/> 
     1452    </exec> 
     1453  </target> 
     1454   
    15451455  <target name="distclean-gs2build" depends="init" if="collection.building.enabled"> 
     1456    <!-- gs2build --> 
     1457    <!--linux:  --> 
    15461458    <exec executable="make" os="${os.unix}" dir="${gs2build.home}"> 
    15471459      <arg value="distclean"/> 
    15481460    </exec> 
     1461    <!-- windows: -->     
    15491462  </target> 
    15501463   
     
    15571470    <property name="gli.home" value="${basedir}/gli"/> 
    15581471 
    1559     <!-- change the version number --> 
    1560     <rsr file="${gli.home}/src/org/greenstone/gatherer/Gatherer.java" pattern="^(.*)String\s*PROGRAM_VERSION\s*=\s*&quot;(.*)&quot;" replacement="$1String PROGRAM_VERSION = &quot;${app.version}&quot;"/> 
     1472        <!-- change the version number --> 
     1473        <rsr file="${gli.home}/src/org/greenstone/gatherer/Gatherer.java" pattern="^(.*)String\s*PROGRAM_VERSION\s*=\s*&quot;(.*)&quot;" replacement="$1String PROGRAM_VERSION = &quot;${app.version}&quot;"/> 
    15611474    <!-- linux --> 
    15621475    <exec executable="makegli.sh" os="${os.unix}" dir="${gli.home}" resolveExecutable="true"/> 
    1563     <!--remote gli--> 
    1564     <exec executable="makejar.sh" os="${os.unix}" dir="${gli.home}" 
     1476     <!--remote gli--> 
     1477     <exec executable="makejar.sh" os="${os.unix}" dir="${gli.home}" 
    15651478      resolveExecutable="true"/> 
    15661479    <!-- windows --> 
    15671480    <exec executable="makegli.bat" os="${os.windows}" dir="${gli.home}" resolveExecutable="true"/> 
    15681481    <!--remote gli--> 
    1569     <exec executable="makejar.bat" os="${os.windows}" dir="${gli.home}" 
     1482     <exec executable="makejar.bat" os="${os.windows}" dir="${gli.home}" 
    15701483      resolveExecutable="true"/>  
    1571     <copy file="${gli.home}/GLIServer.jar" todir="${gs2build.home}/bin/java" /> 
     1484     <copy file="${gli.home}/GLIServer.jar" todir="${gs2build.home}/bin/java" /> 
    15721485  </target> 
    15731486   
     
    15811494    </exec> 
    15821495    <!-- run the setup script --> 
    1583     <exec executable="${compile.windows.c++.setup}" os="${os.windows}"/> 
     1496    <!--<exec executable="${compile.windows.c++.setup}" os="${os.windows}"/>--> 
     1497    <!--Above does not work:  
     1498    even though vcvars.bat executes, the env changes it makes don't get saved. Need user to     run vcvars.bat first before calling ant--> 
    15841499    <exec executable="nmake" dir="${gs2build.home}" os="${os.windows}"> 
    1585       <arg value="/f"/> 
    1586       <arg value="win32.mak"/> 
     1500     <arg value="/f"/> 
     1501     <arg value="win32.mak"/> 
    15871502    </exec> 
    15881503    <exec executable="nmake" dir="${gs2build.home}" os="${os.windows}"> 
    1589       <arg value="/f"/> 
    1590       <arg value="win32.mak"/> 
    1591       <arg value="install"/> 
     1504     <arg value="/f"/> 
     1505     <arg value="win32.mak"/> 
     1506     <arg value="install"/> 
    15921507    </exec> 
    15931508    <!-- LuceneWrapper jar file not installed by default --> 
     
    16231538    </echo> 
    16241539  </target> 
    1625    
    1626  
    1627   <!-- ======================== TESTING Targets ========================= --> 
     1540  
     1541 
     1542<!-- ======================== TESTING Targets ========================= --> 
    16281543   
    16291544  <target name="test" description="Run the (incomplete) JUnit test suite " 
     
    16481563    <echo> 
    16491564      ********************************************* 
    1650       Test output can be found in directory 'test' 
     1565       Test output can be found in directory 'test' 
    16511566      ********************************************* 
    16521567    </echo> 
    16531568  </target> 
    1654  
    1655   <!-- ======================== FLAX Targets ========================= --> 
    16561569  <target name="prepare-flax" description="check out flax source code from another repository" if="install.flax"> 
    16571570    <echo>checking out flax ...</echo> 
    16581571    <mkdir dir="${basedir}/src/java/org/flax"/> 
    16591572    <mkdir dir="${basedir}/src/java/org/greenstone/gsdl3/flax"/> 
    1660     <mkdir dir="${web.home}/WEB-INF/classes/flax"/> 
    1661     <mkdir dir="${web.home}/interfaces/flax"/> 
    1662     <mkdir dir="${web.home}/sites/flax"/> 
     1573    <mkdir dir="${basedir}/web/WEB-INF/classes/flax"/> 
     1574    <mkdir dir="${basedir}/web/interfaces/flax"/> 
     1575    <mkdir dir="${basedir}/web/sites/flax"/> 
    16631576    <mkdir dir="${basedir}/flax-resources"/> 
    16641577    <mkdir dir="${basedir}/flax-lib"/> 
    16651578    <svn> 
    16661579      <checkout url="${flax.svn.root}/flax1.0/trunk/src/java/org/flax/"   
    1667     destPath="${basedir}/src/java/org/flax"/> 
     1580                destPath="${basedir}/src/java/org/flax"/> 
    16681581      <checkout url="${flax.svn.root}/flax1.0/trunk/src/java/org/greenstone/gsdl3/flax/"  
    1669     destPath="${basedir}/src/java/org/greenstone/gsdl3/flax"/> 
     1582                destPath="${basedir}/src/java/org/greenstone/gsdl3/flax"/> 
    16701583      <checkout url="${flax.svn.root}/flax1.0/trunk/web/WEB-INF/classes/flax/"  
    1671     destPath="${web.home}/WEB-INF/classes/flax"/> 
     1584                destPath="${basedir}/web/WEB-INF/classes/flax"/> 
    16721585      <checkout url="${flax.svn.root}/flax1.0/trunk/web/interfaces/flax/"  
    1673     destPath="${web.home}/interfaces/flax"/> 
     1586                destPath="${basedir}/web/interfaces/flax"/> 
    16741587      <checkout url="${flax.svn.root}/flax1.0/trunk/web/sites/flax/"  
    1675     destPath="${web.home}/sites/flax"/> 
     1588                destPath="${basedir}/web/sites/flax"/> 
    16761589      <checkout url="${flax.svn.root}/flax1.0/trunk/flax-resources" 
    1677     destPath="${basedir}/flax-resources"/> 
     1590                destPath="${basedir}/flax-resources"/> 
    16781591      <checkout url="${flax.svn.root}/flax1.0/trunk/lib" 
    1679     destPath="${basedir}/flax-lib"/> 
     1592                destPath="${basedir}/flax-lib"/> 
    16801593    </svn> 
    1681     <echo>prepare flax files...</echo> 
    1682     <move file="${web.home}/WEB-INF/web.xml" tofile="${web.home}/WEB-INF/web.xml.greenstone3backup"/> 
     1594     <echo>prepare flax files...</echo> 
     1595    <move file="${basedir}/web/WEB-INF/web.xml" tofile="${basedir}/web/WEB-INF/web.xml.greenstone3backup"/> 
    16831596    <antcall target="flax-copy-files" /> 
    16841597    <antcall target="unzip-flax-collections" /> 
    16851598    <antcall target="unzip-flax-resources" /> 
    1686   </target> 
     1599   </target> 
    16871600 
    16881601  <target name="update-flax" description="update flax from repository"> 
    1689     <echo>updating flax ...</echo> 
    1690     <svn> 
    1691       <update dir="${basedir}/src/java/org/flax"/> 
    1692       <update dir="${basedir}/src/java/org/greenstone/gsdl3/flax"/> 
    1693       <update dir="${web.home}/WEB-INF/classes/flax"/> 
    1694       <update dir="${web.home}/interfaces/flax"/> 
    1695       <update dir="${web.home}/sites/flax"/> 
    1696     </svn> 
    1697     <antcall target="flax-copy-files" /> 
     1602      <echo>updating flax ...</echo> 
     1603      <svn> 
     1604        <update dir="${basedir}/src/java/org/flax"/> 
     1605        <update dir="${basedir}/src/java/org/greenstone/gsdl3/flax"/> 
     1606        <update dir="${basedir}/web/WEB-INF/classes/flax"/> 
     1607        <update dir="${basedir}/web/interfaces/flax"/> 
     1608        <update dir="${basedir}/web/sites/flax"/> 
     1609      </svn> 
     1610     <antcall target="flax-copy-files" /> 
    16981611    <antcall target="unzip-flax-collections" />        
    1699   </target> 
    1700  
    1701   <target name="unzip-flax-collections" > 
    1702     <property name="coll.dir" value="${web.home}/sites/flax/collect"/> 
     1612   </target> 
     1613 
     1614   <target name="unzip-flax-collections" > 
     1615    <property name="coll.dir" value="${basedir}/web/sites/flax/collect"/> 
    17031616    <unzip dest="${coll.dir}">   
    17041617      <fileset dir="${coll.dir}"> 
    17051618    <include name="*.zip"/> 
    1706       </fileset>     
     1619       </fileset>     
    17071620    </unzip>     
    17081621    <delete> 
     
    17111624  </target> 
    17121625 
    1713   <target name="unzip-flax-resources" > 
    1714     <property name="classes.dir" value="${web.home}/WEB-INF/classes/flax"/> 
     1626 <target name="unzip-flax-resources" > 
     1627    <property name="classes.dir" value="${basedir}/web//WEB-INF/classes/flax"/> 
    17151628    <unzip dest="${classes.dir}">   
    17161629      <fileset dir="${classes.dir}"> 
    17171630    <include name="*.zip"/> 
    1718       </fileset>     
     1631       </fileset>     
    17191632    </unzip>     
    17201633    <delete> 
     
    17221635    </delete> 
    17231636  </target> 
    1724    
    1725   <target name="flax-copy-files" description="copy some flax files into the appropriate greenstone3 directories"> 
    1726     <echo>copying flax files ...</echo> 
    1727     <copy file="${web.home}/WEB-INF/classes/flax/web.xml" todir="${web.home}/WEB-INF" overwrite="true" /> 
    1728     <!-- A configuration file containing web service binding information for the axis engine --> 
    1729     <copy file="${web.home}/WEB-INF/classes/flax/server-config.wsdd" todir="${web.home}/WEB-INF" overwrite="true" /> 
    1730     <copy file="${basedir}/flax-resources/flax-build.xml" todir="${basedir}" overwrite="true" /> 
    1731     <copy file="${basedir}/flax-lib/opennlp-tools-1.3.0.jar" todir="${web.home}/WEB-INF/lib" overwrite="true" />     
    1732   </target> 
    1733  
    1734  
    1735   <!-- ======================== GDBM Targets ========================= --> 
    1736  
     1637    
     1638   <target name="flax-copy-files" description="copy some flax files into the appropriate greenstone3 directories"> 
     1639      <echo>copying flax files ...</echo> 
     1640      <copy file="${basedir}/web/WEB-INF/classes/flax/web.xml" todir="${basedir}/web/WEB-INF" overwrite="true" /> 
     1641      <!-- A configuration file containing web service binding information for the axis engine --> 
     1642           <copy file="${basedir}/web/WEB-INF/classes/flax/server-config.wsdd" todir="${basedir}/web/WEB-INF" overwrite="true" /> 
     1643           <copy file="${basedir}/flax-resources/flax-build.xml" todir="${basedir}" overwrite="true" /> 
     1644           <copy file="${basedir}/flax-lib/opennlp-tools-1.3.0.jar" todir="${basedir}/web/WEB-INF/lib" overwrite="true" />     
     1645   </target> 
     1646      <!--install gdbm stuff --> 
     1647 
     1648  <!-- downloads the gdbm library --> 
    17371649  <target name="prepare-gdbm" depends="init" if="install.gdbm"> 
    1738     <get src="http://www.greenstone.org/gs3files/${gdbm.version}.tar.gz" 
    1739       dest="${src.packages.home}/${gdbm.version}.tar.gz"  usetimestamp="true"/> 
    1740     <untar compression= "gzip" src="${src.packages.home}/${gdbm.version}.tar.gz" dest="${src.packages.home}" />   
    1741     <chmod dir="${src.packages.home}/${gdbm.version}" perm="ugo+wrx" includes="**" /> 
    1742     <antcall target="configure-gdbm" /> 
    1743     <antcall target="compile-gdbm" />  
     1650      <get src="http://www.greenstone.org/gs3files/gdbm-1.8.3.tar.gz" 
     1651       dest="${src.packages.home}/gdbm-1.8.3.tar.gz"  usetimestamp="true"/> 
     1652      <untar compression= "gzip" src="${src.packages.home}/gdbm-1.8.3.tar.gz" dest="${src.packages.home}" />   
     1653      <chmod dir="${src.packages.home}/gdbm-1.8.3" perm="ugo+wrx" includes="**" /> 
     1654      <antcall target="configure-gdbm" /> 
     1655      <antcall target="compile-gdbm" />  
    17441656  </target>   
    17451657 
    1746   <target name="configure-gdbm" if="install.gdbm"> 
     1658   <target name="configure-gdbm" if="install.gdbm"> 
    17471659    <echo> 
    17481660      Configuring GDBM 
     
    17521664      <arg value="--prefix=${gdbm.home}"/> 
    17531665    </exec>     
    1754   </target> 
    1755  
    1756   <target name="clean-gdbm" depends="init"  if="install.gdbm">    
     1666   </target> 
     1667 
     1668 <target name="clean-gdbm" depends="init"  if="install.gdbm">    
    17571669    <echo>clean GDBM</echo> 
    1758     <exec executable="make" os="${os.unix}" dir="${gdbm.home}" > 
    1759       <arg value="clean"/> 
     1670    <exec executable="make" os="${os.unix},${os.mac}" dir="${gdbm.home}" > 
     1671     <arg value="clean"/> 
    17601672    </exec> 
    17611673  </target>  
    17621674 
    1763   <target name="distclean-gdbm" depends="init"  if="install.gdbm">    
    1764     <echo>distclean GDBM</echo> 
    1765     <exec executable="make" os="${os.unix}" dir="${gdbm.home}" > 
    1766       <arg value="distclean"/> 
    1767     </exec> 
    1768   </target>  
    1769  
     1675   
    17701676  <target name="compile-gdbm" depends="init"  if="install.gdbm">    
    17711677    <echo>compile GDBM</echo> 
    1772     <exec executable="make" os="${os.unix}" dir="${gdbm.home}"/> 
    1773     <exec executable="make" os="${os.unix}" dir="${gdbm.home}"> 
     1678    <exec executable="groups" outputproperty="usergroups"/> 
     1679    <exec executable="awk" inputstring="${usergroups}" outputproperty="firstgroup"> 
     1680      <arg line="'{print $1}'"/> 
     1681    </exec> 
     1682 
     1683    <exec executable="make" os="${os.unix},${os.mac}" dir="${gdbm.home}"/> 
     1684    <exec executable="make" os="${os.unix},${os.mac}" dir="${gdbm.home}"> 
     1685      <arg value="BINOWN=${env.USER}"/> 
     1686      <arg value="BINGRP=${firstgroup}"/> 
    17741687      <arg value="install"/> 
    17751688    </exec> 
    17761689  </target>  
    17771690 
     1691 
     1692 
    17781693</project> 
    17791694 
  • greenstone3/branches/customizingGreenstone3/docs/manual/manual.tex

    r15191 r15787  
    835835siblings & All the sibling sections\\ 
    836836children & The immediate child sections of the current section\\ 
    837 descendents & All the descendent sections\\ 
     837descendants & All the descendent sections\\ 
    838838\hline 
    839839\end{tabular}} 
     
    15461546\end{verbatim}\end{gsc}\end{quote} 
    15471547 
    1548 Possible values for structure parameters are \gst{ancestors}, \gst{parent}, \gst{siblings}, \gst{children}, \gst{descendents}. The response gives, for each identifier in the request, a \gst{<nodeStructure>} element with all the requested structure put together into a hierarchy. The structure may include classifier and document nodes.  
     1548Possible values for structure parameters are \gst{ancestors}, \gst{parent}, \gst{siblings}, \gst{children}, \gst{descendants}. The response gives, for each identifier in the request, a \gst{<nodeStructure>} element with all the requested structure put together into a hierarchy. The structure may include classifier and document nodes.  
    15491549 
    15501550 
     
    16541654\end{verbatim}\end{gsc}\end{quote} 
    16551655 
    1656 Structure is returned inside a \gst{<nodeStructure>} element, while structural info is returned in a \gst{<nodeStructureInfo>} element. Possible values for structure parameters are as for browse services: \gst{ancestors}, \gst{parent}, \gst{siblings}, \gst{children}, \gst{descendents}, \gst{entire}. Possible values for info parameters are \gst{numSiblings}, \gst{siblingPosition}, \gst{numChildren}.  
     1656Structure is returned inside a \gst{<nodeStructure>} element, while structural info is returned in a \gst{<nodeStructureInfo>} element. Possible values for structure parameters are as for browse services: \gst{ancestors}, \gst{parent}, \gst{siblings}, \gst{children}, \gst{descendants}, \gst{entire}. Possible values for info parameters are \gst{numSiblings}, \gst{siblingPosition}, \gst{numChildren}.  
    16571657 
    16581658\subsubsection{'process'-type services}\label{sec:process} 
  • greenstone3/branches/customizingGreenstone3/gs3-setup.bat

    r15191 r15787  
    88 
    99:start 
    10 :: ---- Set the GSDL3HOME variable to the current directory ---- 
    11 cd | winutil\setvar.exe GSDL3SRCHOME > %SystemRoot%\Temp\setgsdl3.bat 
    12 call %SystemRoot%\Temp\setgsdl3.bat 
    13 del %SystemRoot%\Temp\setgsdl3.bat 
     10:: ---- Set some relevant environment variables ---- 
     11 
     12:: this is the default 
     13:: greenstone3 (%GSDL3SRCHOME%) 
     14:: +-- web (%GSDLHOME%) 
     15:: +-- packages 
     16::      +-- tomcat (%TOMCAT_HOME%) 
     17::      +-- ant (%ANT_HOME%) 
     18 
     19:: set GSDLSRCHOME to the current directory 
     20cd | winutil\setvar.exe GSDL3SRCHOME > %TMP%\setgsdl3.bat 
     21call %TMP%\setgsdl3.bat 
     22del %TMP%\setgsdl3.bat 
     23 
     24:: set GSDLHOME to the 'web' subdirectory 
    1425set GSDL3HOME=%GSDL3SRCHOME%\web 
    1526 
    16 :: change if using external tomcat 
     27:: change if using external tomcat or ant 
    1728set TOMCAT_HOME=%GSDL3SRCHOME%\packages\tomcat 
     29set ANT_HOME=%GSDL3SRCHOME%\packages\ant 
    1830 
    19 :: ---- Set other important environment variables ---- 
     31:: other important environment variables 
    2032set GSDLOS=windows 
    21 set ANT_HOME=%GSDL3SRCHOME%\packages\ant 
     33 
     34:: ---- Set the CLASSPATH and PATH environment variables ---- 
     35if "%GS_CP_SET%" == "yes" goto skipSetCp 
     36set CLASSPATH=%CLASSPATH%;.;%GSDL3HOME%\WEB-INF\classes;%GSDL3SRCHOME%\resources\java;%GSDL3SRCHOME%\server.jar;%GSDL3HOME%\WEB-INF\lib\cp.jar;%GSDL3SRCHOME%\lib\jni\cp.jar;%GSDL3SRCHOME%\build\cp.jar 
    2237set PATH=%PATH%;%GSDL3SRCHOME%\bin;%GSDL3SRCHOME%\bin\script;%GSDL3SRCHOME%\lib\jni;%ANT_HOME%\bin 
    2338 
    24 :: ---- Set the CLASSPATH environment variable ---- 
    25 if "%GS_CP_SET%" == "yes" goto skipSetCp 
    26 set CLASSPATH=.;%GSDL3HOME%\WEB-INF\classes;%GSDL3SRCHOME%\resources\java;%CLASSPATH% 
    27 if exist %SystemRoot%\Temp\setcp.bat del %SystemRoot%\Temp\setcp.bat 
    28 for %%j in ("%GSDL3SRCHOME%"\*.jar) do echo set CLASSPATH=%%CLASSPATH%%;%%j>> %SystemRoot%\Temp\setcp.bat 
    29 for %%j in ("%GSDL3HOME%"\WEB-INF\lib\*.jar) do echo set CLASSPATH=%%CLASSPATH%%;%%j>> %SystemRoot%\Temp\setcp.bat 
    30 for %%j in ("%GSDL3SRCHOME%"\lib\jni\*.jar) do echo set CLASSPATH=%%CLASSPATH%%;%%j>> %SystemRoot%\Temp\setcp.bat 
    31 for %%j in ("%TOMCAT_HOME%"\common\endorsed\*.jar) do echo set CLASSPATH=%%CLASSPATH%%;%%j>> %SystemRoot%\Temp\setcp.bat 
    32 for %%j in ("%GSDL3SRCHOME%"\build\*.jar) do echo set CLASSPATH=%%CLASSPATH%%;%%j>> %SystemRoot%\Temp\setcp.bat 
    33 echo set GS_CP_SET=yes >> %SystemRoot%\Temp\setcp.bat 
    34 call %SystemRoot%\Temp\setcp.bat 
    35 del %SystemRoot%\Temp\setcp.bat 
     39:: a little dynamic set cp stuff 
     40if exist %TMP%\setcp.bat del %TMP%\setcp.bat 
     41for %%j in ("%TOMCAT_HOME%"\common\endorsed\*.jar) do echo set CLASSPATH=%%CLASSPATH%%;%%j>> %TMP%\setcp.bat 
     42if exist %TMP%\setcp.bat call %TMP%\setcp.bat 
     43if exist %TMP%\setcp.bat del %TMP%\setcp.bat 
     44 
     45set GS_CP_SET=yes 
    3646:skipSetCp 
    3747 
    38 winutil\search4j.exe -m %java_min_version% | winutil\setvar.exe _JRE_HOME > %SystemRoot%\Temp\set_jre_home.bat 
    39 call %SystemRoot%\Temp\set_jre_home.bat 
    40 del %SystemRoot%\Temp\set_jre_home.bat 
     48:: ---- Search for java ---- 
     49winutil\search4j.exe -m %java_min_version% | winutil\setvar.exe _JRE_HOME > %TMP%\set_jre_home.bat 
     50call %TMP%\set_jre_home.bat 
     51del %TMP%\set_jre_home.bat 
    4152 
    42 echo %_JRE_HOME%\bin\java.exe | winutil\setvar.exe RUNJAVA > %SystemRoot%\Temp\setrunjava.bat 
    43 call %SystemRoot%\Temp\setrunjava.bat 
    44 del %SystemRoot%\Temp\setrunjava.bat 
     53echo %_JRE_HOME%\bin\java.exe | winutil\setvar.exe RUNJAVA > %TMP%\setrunjava.bat 
     54call %TMP%\setrunjava.bat 
     55del %TMP%\setrunjava.bat 
    4556 
    4657if "%JRE_HOME%" == "" set JRE_HOME=%_JRE_HOME% 
  • greenstone3/branches/customizingGreenstone3/resources/soap/site.wsdd.template

    r9911 r15787  
    22    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java" 
    33    xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"> 
    4   <service name="@siteuri@" style="message"> 
    5     <parameter name="className" value="org.greenstone.gsdl3.SOAPServer@sitename@"/> 
    6     <parameter name="allowedMethods" value="process"/> 
     4  <service name="@siteuri@" @soapmethod@> 
     5    <parameter name="className" value="org.greenstone.gsdl3.@servicesname@@sitename@"/> 
     6    <parameter name="allowedMethods" value="*"/> 
    77    <parameter name="scope" value="application"/> 
    88  </service> 
  • greenstone3/branches/customizingGreenstone3/resources/soap/undeploy-site.wsdd.template

    r9874 r15787  
    11<undeployment xmlns="http://xml.apache.org/axis/wsdd/"> 
    2   <service name="@siteuri@"/> 
     2  <service name="@servicesname@"/>   
    33</undeployment> 
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/service/AbstractBrowse.java

    r14526 r15787  
    725725     */ 
    726726    abstract protected String getStructureInfo(String node_id, String info_type);     
    727 //      /** needs to get info from gdbm database - if the calling code gets it already it may pay to pass it in instead */ 
    728 //     protected String resolveTextMacros(String doc_content, String doc_id, String lang) 
    729 //     { 
    730 //  DBInfo info = null; 
    731 //  if (doc_content.indexOf("_httpdocimg_")!=-1) { 
    732 //      String top_doc_id = OID.getTop(doc_id); 
    733 //      info = this.gdbm_src.getInfo(top_doc_id); 
    734 //      if (info == null) { 
    735 //      // perhaps we had per.iods in the ids - just try the current id 
    736 //      top_doc_id = doc_id; 
    737 //      info = this.gdbm_src.getInfo(top_doc_id); 
    738 //      } 
    739 //      if (info != null) { 
    740 //      String archivedir = info.getInfo("archivedir"); 
    741 //      String image_dir  = this.site_http_address + "/collect/"+this.cluster_name+"/index/assoc/"+archivedir; 
    742          
    743 //      // Resolve all "_httpdocimg_"s 
    744 //      doc_content = doc_content.replaceAll("_httpdocimg_", image_dir); 
    745 //      } 
    746 //  } 
    747 //  // resolve any collection specific macros 
    748 //  doc_content = macro_resolver.resolve(doc_content, lang, GS2MacroResolver.SCOPE_TEXT, doc_id, info); 
    749 //  return doc_content; 
    750 //     } 
    751  
    752727    
    753728}    
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/service/AbstractDocumentRetrieve.java

    r14552 r15787  
    2222 
    2323// Greenstone classes 
    24 //import org.greenstone.gdbm.*; 
    2524import org.greenstone.gsdl3.core.GSException; 
    2625import org.greenstone.gsdl3.util.GSXML; 
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/service/AbstractGS2DocumentRetrieve.java

    r14527 r15787  
    2727import org.greenstone.gsdl3.util.GS2MacroResolver; 
    2828import org.greenstone.gsdl3.util.GSConstants; 
    29 import org.greenstone.gsdl3.util.GDBMWrapper; 
     29import org.greenstone.gsdl3.util.SimpleCollectionDatabase; 
    3030import org.greenstone.gsdl3.util.DBInfo; 
    3131// XML classes 
     
    5959    protected String index_stem = null; 
    6060 
    61     protected GDBMWrapper gdbm_src = null; 
     61    protected SimpleCollectionDatabase coll_db = null; 
    6262 
    6363 
     
    6565    protected AbstractGS2DocumentRetrieve() 
    6666    { 
    67     this.gdbm_src = new GDBMWrapper(); 
    68     this.macro_resolver = new GS2MacroResolver(this.gdbm_src); 
     67    this.macro_resolver = new GS2MacroResolver(); 
    6968    } 
    7069 
    7170    public void cleanUp() { 
    72     super.cleanUp(); 
    73     this.gdbm_src.closeDatabase(); 
     71        super.cleanUp(); 
     72        this.coll_db.closeDatabase(); 
    7473    } 
    7574    /** configure this service */ 
     
    9392    } 
    9493 
    95     // Open GDBM database for querying 
    96     String gdbm_db_file = GSFile.GDBMDatabaseFile(this.site_home, this.cluster_name, this.index_stem); 
    97     if (!this.gdbm_src.openDatabase(gdbm_db_file, GDBMWrapper.READER)) { 
    98         logger.error("Could not open GDBM database!"); 
     94    // find out what kind of database we have 
     95    Element database_type_elem = (Element) GSXML.getChildByTagName(info, GSXML.DATABASE_TYPE_ELEM); 
     96    String database_type = null; 
     97    if (database_type_elem != null) { 
     98      database_type = database_type_elem.getAttribute(GSXML.NAME_ATT); 
     99    } 
     100    if (database_type == null || database_type.equals("")) { 
     101      database_type = "gdbm"; // the default 
     102    } 
     103    coll_db = new SimpleCollectionDatabase(database_type); 
     104    if (coll_db == null) { 
     105      logger.error("Couldn't create the collection database of type "+database_type); 
     106      return false; 
     107    } 
     108     
     109    // Open database for querying 
     110    String coll_db_file = GSFile.collectionDatabaseFile(this.site_home, this.cluster_name, this.index_stem, database_type); 
     111    if (!this.coll_db.openDatabase(coll_db_file, SimpleCollectionDatabase.READ)) { 
     112        logger.error("Could not open collection database!"); 
    99113        return false; 
    100114    } 
     115 
     116    // we need to set the database for our GS2 macro resolver 
     117    GS2MacroResolver gs2_macro_resolver = (GS2MacroResolver)this.macro_resolver; 
     118    gs2_macro_resolver.setDB(this.coll_db); 
    101119 
    102120    return true; 
     
    105123    /** if id ends in .fc, .pc etc, then translate it to the correct id */ 
    106124    protected String translateId(String node_id) { 
    107     return this.gdbm_src.translateOID(node_id); 
     125    return this.coll_db.translateOID(node_id); 
    108126    } 
    109127     
     
    111129    it to a greenstone one*/ 
    112130    protected String translateExternalId(String node_id){ 
    113     return this.gdbm_src.externalId2OID(node_id); 
     131    return this.coll_db.externalId2OID(node_id); 
    114132    } 
    115133 
     
    120138    /** returns a list of the child ids in order, null if no children */ 
    121139    protected ArrayList getChildrenIds(String node_id) { 
    122     DBInfo info = this.gdbm_src.getInfo(node_id); 
     140    DBInfo info = this.coll_db.getInfo(node_id); 
    123141    if (info == null) { 
    124142        return null; 
     
    156174    throws GSException { 
    157175    Element metadata_list = this.doc.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER); 
    158     DBInfo info = this.gdbm_src.getInfo(node_id); 
     176    DBInfo info = this.coll_db.getInfo(node_id); 
    159177    if (info == null) { 
    160178        return null; 
     
    211229        } 
    212230         
    213         DBInfo info = this.gdbm_src.getInfo(parent_id); 
     231        DBInfo info = this.coll_db.getInfo(parent_id); 
    214232        if (info==null) { 
    215233        return "-1"; 
     
    235253 
    236254    protected int getNumChildren(String node_id) { 
    237     DBInfo info = this.gdbm_src.getInfo(node_id); 
     255    DBInfo info = this.coll_db.getInfo(node_id); 
    238256    if (info == null) { 
    239257        return 0; 
     
    254272    */ 
    255273    protected String getDocType(String node_id) { 
    256     DBInfo info = this.gdbm_src.getInfo(node_id); 
     274    DBInfo info = this.coll_db.getInfo(node_id); 
    257275    if (info == null) { 
    258276        return GSXML.DOC_TYPE_SIMPLE; 
     
    275293    // now we just check the top node 
    276294    if (!is_top) { // we need to look at the top info 
    277         info = this.gdbm_src.getInfo(top_id); 
     295        info = this.coll_db.getInfo(top_id); 
    278296    } 
    279297    if (info == null) { 
     
    337355     
    338356    // now check for relational info 
    339     if (temp.equals("parent") || temp.equals("root") || temp.equals( "ancestors")) { // "current" "siblings" "children" "descendents" 
     357    if (temp.equals("parent") || temp.equals("root") || temp.equals( "ancestors")) { // "current" "siblings" "children" "descendants" 
    340358        relation = temp; 
    341359        pos = metadata.indexOf(GSConstants.META_RELATION_SEP); 
     
    370388        relation_info = info; 
    371389    } else { 
    372         relation_info = this.gdbm_src.getInfo(relation_id); 
     390        relation_info = this.coll_db.getInfo(relation_id); 
    373391    } 
    374392    if (relation_info == null) { 
     
    405423    relation_id = OID.getParent(current_id); 
    406424    while (!relation_id.equals(current_id)) { 
    407         relation_info = this.gdbm_src.getInfo(relation_id); 
     425        relation_info = this.coll_db.getInfo(relation_id); 
    408426        if (relation_info == null) return result.toString(); 
    409427        if (!multiple) { 
     
    427445     
    428446 
    429     /** needs to get info from gdbm database - if the calling code gets it already it may pay to pass it in instead */ 
     447    /** needs to get info from collection database - if the calling code gets it already it may pay to pass it in instead */ 
    430448    protected String resolveTextMacros(String doc_content, String doc_id, String lang) 
    431449    { 
     
    452470        value="-1"; 
    453471        } else { 
    454         DBInfo info = this.gdbm_src.getInfo(parent_id); 
     472        DBInfo info = this.coll_db.getInfo(parent_id); 
    455473        if (info==null) { 
    456474            value ="-1"; 
     
    478496 
    479497    protected String getHrefOID(String href_url){ 
    480         return this.gdbm_src.docnum2OID(href_url); 
     498        return this.coll_db.docnum2OID(href_url); 
    481499    } 
    482500 
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/service/AbstractGS2FieldSearch.java

    r15191 r15787  
    7575 
    7676    protected static final String DEFAULT_LEVEL_ELEM = "defaultLevel"; 
    77     protected static final String DEFAULT_GDBM_LEVEL_ELEM = "defaultGDBMLevel"; 
     77    protected static final String DEFAULT_DB_LEVEL_ELEM = "defaultDBLevel"; 
    7878    protected static final String LEVEL_ELEM = "level"; 
    7979    protected static final String FIELD_ATT = "field"; 
     
    9090   // the default level for searching 
    9191    protected String default_level=null; 
    92     // default level for gdbm db 
    93     protected String default_gdbm_level = null; 
     92    // default level for collection db 
     93    protected String default_db_level = null; 
    9494    // which search services will we offer?? 
    9595    protected boolean plain_search = false; 
     
    162162    } 
    163163 
    164     // Get the default GDBM level 
    165     def = (Element) GSXML.getChildByTagName(info, DEFAULT_GDBM_LEVEL_ELEM); 
     164    // Get the default DB level 
     165    def = (Element) GSXML.getChildByTagName(info, DEFAULT_DB_LEVEL_ELEM); 
    166166    if (def != null) { 
    167         this.default_gdbm_level = def.getAttribute(GSXML.SHORTNAME_ATT); 
    168     } 
    169     if (this.default_gdbm_level == null || this.default_gdbm_level.equals("")) { 
    170         logger.error("default gdbm level not specified!, assuming Sec"); 
    171         this.default_gdbm_level = "Sec"; 
     167        this.default_db_level = def.getAttribute(GSXML.SHORTNAME_ATT); 
     168    } 
     169    if (this.default_db_level == null || this.default_db_level.equals("")) { 
     170        logger.error("default database level (defaultDBLevel) not specified!, assuming Sec"); 
     171        this.default_db_level = "Sec"; 
    172172    } 
    173173     
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/service/AbstractGS2Search.java

    r13999 r15787  
    2020 
    2121// Greenstone classes 
    22 import org.greenstone.mg.*; 
    23 import org.greenstone.gsdl3.util.*; 
     22import org.greenstone.gsdl3.util.OID; 
     23import org.greenstone.gsdl3.util.DBInfo; 
     24import org.greenstone.gsdl3.util.GSXML; 
     25import org.greenstone.gsdl3.util.SimpleCollectionDatabase; 
     26import org.greenstone.gsdl3.util.GSFile; 
    2427 
    2528// XML classes 
     
    7477    protected int maxnumeric = 4; 
    7578 
    76     protected GDBMWrapper gdbm_src = null; 
    77  
    78     static Logger logger = Logger.getLogger(org.greenstone.gsdl3.service.GS2MGSearch.class.getName()); 
     79    // collection database 
     80    protected SimpleCollectionDatabase coll_db = null; 
     81 
     82    static Logger logger = Logger.getLogger(org.greenstone.gsdl3.service.AbstractGS2Search.class.getName()); 
    7983 
    8084 
     
    8286    public AbstractGS2Search() 
    8387    { 
    84     this.gdbm_src = new GDBMWrapper(); 
     88     
    8589    } 
    8690    public void cleanUp() { 
    8791    super.cleanUp(); 
    88     this.gdbm_src.closeDatabase(); 
     92    this.coll_db.closeDatabase(); 
    8993    } 
    9094 
     
    9397    { 
    9498    if (!super.configure(info, extra_info)){ 
     99        return false; 
     100    } 
     101 
     102    // find out what kind of database we have 
     103    Element database_type_elem = (Element) GSXML.getChildByTagName(info, GSXML.DATABASE_TYPE_ELEM); 
     104    String database_type = null; 
     105    if (database_type_elem != null) { 
     106      database_type = database_type_elem.getAttribute(GSXML.NAME_ATT); 
     107    } 
     108    if (database_type == null || database_type.equals("")) { 
     109      database_type = "gdbm"; // the default 
     110    } 
     111    coll_db = new SimpleCollectionDatabase(database_type); 
     112    if (coll_db == null) { 
     113      logger.error("Couldn't create the collection database of type "+database_type); 
     114      return false; 
     115    } 
     116     
     117    // the index stem is either the collection name or is specified in the config file 
     118    Element index_stem_elem = (Element) GSXML.getChildByTagName(info, INDEX_STEM_ELEM); 
     119    if (index_stem_elem != null) { 
     120        this.index_stem = index_stem_elem.getAttribute(GSXML.NAME_ATT); 
     121    } 
     122    if (this.index_stem == null || this.index_stem.equals("")) { 
     123        logger.warn("indexStem element not found, stem will default to collection name"); 
     124        this.index_stem = this.cluster_name; 
     125    } 
     126 
     127    // Open database for querying 
     128    String coll_db_file = GSFile.collectionDatabaseFile(this.site_home, this.cluster_name, this.index_stem, database_type); 
     129    if (!this.coll_db.openDatabase(coll_db_file, SimpleCollectionDatabase.READ)) { 
     130        logger.error("Could not open collection database!"); 
    95131        return false; 
    96132    } 
     
    116152        this.default_index_language = defLang.getAttribute(GSXML.SHORTNAME_ATT); 
    117153    } //concate defaultIndex + defaultIndexSubcollection + defaultIndexLanguage 
    118       
    119  
    120     // the index stem is either the collection name or is specified in the config file 
    121     Element index_stem_elem = (Element) GSXML.getChildByTagName(info, INDEX_STEM_ELEM); 
    122     if (index_stem_elem != null) { 
    123         this.index_stem = index_stem_elem.getAttribute(GSXML.NAME_ATT); 
    124     } 
    125     if (this.index_stem == null || this.index_stem.equals("")) { 
    126         logger.warn("indexStem element not found, stem will default to collection name"); 
    127         this.index_stem = this.cluster_name; 
    128     } 
    129      
     154         
    130155    // get index options 
    131156    Element index_option_list = (Element) GSXML.getChildByTagName(info, GSXML.INDEX_OPTION_ELEM + GSXML.LIST_MODIFIER); 
     
    187212        } // for each index 
    188213    } 
    189         // Open GDBM database for querying 
    190     String gdbm_db_file = GSFile.GDBMDatabaseFile(this.site_home, this.cluster_name, this.index_stem); 
    191     if (!this.gdbm_src.openDatabase(gdbm_db_file, GDBMWrapper.READER)) { 
    192         logger.error(" Could not open GDBM database!"); 
    193         return false; 
    194     } 
    195214    return true; 
    196215    } 
     
    294313    */ 
    295314    protected String getDocType(String node_id){ 
    296     DBInfo info = this.gdbm_src.getInfo(node_id); 
     315    DBInfo info = this.coll_db.getInfo(node_id); 
    297316    if (info == null) { 
    298317        return GSXML.DOC_TYPE_SIMPLE; 
     
    315334    // now we just check the top node 
    316335    if (!is_top) { // we need to look at the top info 
    317         info = this.gdbm_src.getInfo(top_id); 
     336        info = this.coll_db.getInfo(top_id); 
    318337    } 
    319338    if (info == null) { 
     
    331350    /** returns true if the node has child nodes */ 
    332351    protected boolean hasChildren(String node_id){ 
    333     DBInfo info = this.gdbm_src.getInfo(node_id); 
     352    DBInfo info = this.coll_db.getInfo(node_id); 
    334353    if (info == null) { 
    335354        return false; 
     
    351370    } 
    352371     
    353    /** convert MG internal id to Greenstone oid */ 
     372   /** convert indexer internal id to Greenstone oid */ 
    354373    protected String internalNum2OID(long docnum) 
    355374    { 
    356     return this.gdbm_src.docnum2OID(docnum); 
     375    return this.coll_db.docnum2OID(docnum); 
    357376     
    358377    } 
    359378    protected String internalNum2OID(String docnum) 
    360379    { 
    361     return this.gdbm_src.docnum2OID(docnum); 
     380    return this.coll_db.docnum2OID(docnum); 
    362381     
    363382    } 
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/service/GS2Browse.java

    r13962 r15787  
    2525import org.greenstone.gsdl3.util.MacroResolver; 
    2626import org.greenstone.gsdl3.util.GS2MacroResolver; 
    27 import org.greenstone.gsdl3.util.GDBMWrapper; 
     27import org.greenstone.gsdl3.util.SimpleCollectionDatabase; 
    2828import org.greenstone.gsdl3.util.DBInfo; 
    2929// XML classes 
     
    5252     static Logger logger = Logger.getLogger(org.greenstone.gsdl3.service.GS2Browse.class.getName()); 
    5353 
    54     protected GDBMWrapper gdbm_src = null; 
     54    protected SimpleCollectionDatabase coll_db = null; 
    5555 
    5656    public GS2Browse()  
    5757    { 
    58     this.gdbm_src = new GDBMWrapper(); 
    59     this.macro_resolver = new GS2MacroResolver(this.gdbm_src); 
    6058    } 
    6159 
    6260    public void cleanUp() { 
    6361    super.cleanUp(); 
    64     this.gdbm_src.closeDatabase(); 
     62    this.coll_db.closeDatabase(); 
    6563    } 
    6664 
     
    8280    } 
    8381     
    84     // Open GDBM database for querying 
    85     String gdbm_db_file = GSFile.GDBMDatabaseFile(this.site_home, this.cluster_name, index_stem); 
    86     if (!this.gdbm_src.openDatabase(gdbm_db_file, GDBMWrapper.READER)) { 
    87         logger.error("Could not open GDBM database!"); 
     82    // find out what kind of database we have 
     83    Element database_type_elem = (Element) GSXML.getChildByTagName(info, GSXML.DATABASE_TYPE_ELEM); 
     84    String database_type = null; 
     85    if (database_type_elem != null) { 
     86      database_type = database_type_elem.getAttribute(GSXML.NAME_ATT); 
     87    } 
     88    if (database_type == null || database_type.equals("")) { 
     89      database_type = "gdbm"; // the default 
     90    } 
     91    coll_db = new SimpleCollectionDatabase(database_type); 
     92    if (coll_db == null) { 
     93      logger.error("Couldn't create the collection database of type "+database_type); 
     94      return false; 
     95    } 
     96     
     97    // Open database for querying 
     98    String coll_db_file = GSFile.collectionDatabaseFile(this.site_home, this.cluster_name, index_stem, database_type); 
     99    if (!this.coll_db.openDatabase(coll_db_file, SimpleCollectionDatabase.READ)) { 
     100        logger.error("Could not open collection database!"); 
    88101        return false; 
    89102    } 
     103    this.macro_resolver = new GS2MacroResolver(this.coll_db); 
    90104    return true; 
    91105    } 
     
    93107    /** if id ends in .fc, .pc etc, then translate it to the correct id */ 
    94108    protected String translateId(String node_id) { 
    95     return this.gdbm_src.translateOID(node_id); 
     109    return this.coll_db.translateOID(node_id); 
    96110    } 
    97111 
     
    103117    */ 
    104118    protected String getDocType(String node_id) { 
    105     DBInfo info = this.gdbm_src.getInfo(node_id); 
     119    DBInfo info = this.coll_db.getInfo(node_id); 
    106120    if (info == null) { 
    107121        return GSXML.DOC_TYPE_SIMPLE; 
     
    124138    // now we just check the top node 
    125139    if (!is_top) { // we need to look at the top info 
    126         info = this.gdbm_src.getInfo(top_id); 
     140        info = this.coll_db.getInfo(top_id); 
    127141    } 
    128142    if (info == null) { 
     
    144158    /** returns a list of the child ids in order, null if no children */ 
    145159    protected ArrayList getChildrenIds(String node_id) { 
    146     DBInfo info = this.gdbm_src.getInfo(node_id); 
     160    DBInfo info = this.coll_db.getInfo(node_id); 
    147161    if (info == null) { 
    148162        return null; 
     
    170184 
    171185    protected String getMetadata(String node_id, String key){ 
    172     DBInfo info = this.gdbm_src.getInfo(node_id); 
     186    DBInfo info = this.coll_db.getInfo(node_id); 
    173187    if (info == null) { 
    174188        return ""; 
     
    200214    String lang = "en"; 
    201215    Element metadata_list = this.doc.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER); 
    202     DBInfo info = this.gdbm_src.getInfo(node_id); 
     216    DBInfo info = this.coll_db.getInfo(node_id); 
    203217    if (info == null) { 
    204218        return null; 
     
    251265        } 
    252266         
    253         DBInfo info = this.gdbm_src.getInfo(parent_id); 
     267        DBInfo info = this.coll_db.getInfo(parent_id); 
    254268        if (info==null) { 
    255269        return "-1"; 
     
    275289 
    276290    protected int getNumChildren(String node_id) { 
    277     DBInfo info = this.gdbm_src.getInfo(node_id); 
     291    DBInfo info = this.coll_db.getInfo(node_id); 
    278292    if (info == null) { 
    279293        return 0; 
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/service/GS2LuceneRetrieve.java

    r13916 r15787  
    2323import org.greenstone.gsdl3.util.GSFile; 
    2424import org.greenstone.gsdl3.util.GSXML; 
    25 import org.greenstone.gsdl3.util.GDBMWrapper; 
    2625import org.greenstone.gsdl3.util.DBInfo; 
    2726import org.greenstone.gsdl3.util.GSHTML; 
     
    109108        } 
    110109         
    111         long doc_num = this.gdbm_src.OID2Docnum(doc_id); 
    112         if (doc_num == -1) { 
     110        String doc_num = this.coll_db.OID2Docnum(doc_id); 
     111        if (doc_num == null || doc_num.equals("")) { 
    113112        throw new Exception("OID "+doc_id +" couldn't be converted to lucene doc num"); 
    114113        } 
    115114     
    116         DBInfo info=this.gdbm_src.getInfo(OID.getTop(doc_id)); 
     115        DBInfo info=this.coll_db.getInfo(OID.getTop(doc_id)); 
    117116        if (info == null) { 
    118         throw new Exception("Couldn't get GDBM database entry for "+OID.getTop(doc_id)); 
     117        throw new Exception("Couldn't get database entry for "+OID.getTop(doc_id)); 
    119118        } 
    120119         
     
    136135        current_section = full_document; 
    137136        } else { 
    138         current_section = GSXML.getNamedElement(full_document, SEC_LEVEL, ID_ATT, String.valueOf(doc_num)); 
     137        current_section = GSXML.getNamedElement(full_document, SEC_LEVEL, ID_ATT, doc_num); 
    139138        } 
    140139        if (current_section == null) { 
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/service/GS2MGPPRetrieve.java

    r14441 r15787  
    9393   */ 
    9494  protected Element getNodeContent(String doc_id, String lang) throws GSException { 
    95     long doc_num = this.gdbm_src.OID2Docnum(doc_id); 
     95    long doc_num = this.coll_db.OID2DocnumLong(doc_id); 
    9696    if (doc_num == -1) { 
    9797      logger.error("OID "+doc_id +" couldn't be converted to mgpp num"); 
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/service/GS2MGPPSearch.java

    r15191 r15787  
    2020 
    2121// Greenstone classes 
    22 import org.greenstone.mgpp.*; 
    23 import org.greenstone.gsdl3.util.*; 
     22import org.greenstone.mgpp.MGPPSearchWrapper; 
     23import org.greenstone.mgpp.MGPPTermInfo; 
     24import org.greenstone.mgpp.MGPPQueryResult; 
     25import org.greenstone.mgpp.MGPPDocInfo; 
     26 
     27import org.greenstone.gsdl3.util.GSFile; 
     28import org.greenstone.gsdl3.util.GSXML; 
     29 
    2430 
    2531// XML classes 
     
    6672  /** process a  query */ 
    6773  protected Element processAnyQuery(Element request, int query_type) { 
    68       synchronized (mgpp_src) { 
    69           return super.processAnyQuery(request, query_type); 
    70       } 
     74    synchronized (mgpp_src) { 
     75      return super.processAnyQuery(request, query_type); 
     76    } 
    7177  } 
    7278  /** configure this service */ 
     
    7682    } 
    7783     
    78     // the default level is also the level which gdbm is expecting 
     84    // the default level is also the level which the database is expecting 
    7985    // this must not be overwritten 
    80     mgpp_src.setReturnLevel(this.default_gdbm_level); 
     86    mgpp_src.setReturnLevel(this.default_db_level); 
    8187    // return term info 
    8288    mgpp_src.setReturnTerms(true); 
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/service/GS2MGRetrieve.java

    r15191 r15787  
    2020 
    2121// Greenstone classes 
    22 import org.greenstone.mg.*; 
     22import org.greenstone.mg.MGRetrieveWrapper; 
    2323import org.greenstone.gsdl3.core.GSException; 
    2424import org.greenstone.gsdl3.util.GSFile; 
     
    113113     */ 
    114114    protected Element getNodeContent (String doc_id, String lang) throws GSException { 
    115         long doc_num = this.gdbm_src.OID2Docnum (doc_id); 
     115        long doc_num = this.coll_db.OID2DocnumLong (doc_id); 
    116116        if (doc_num == -1) { 
    117117            logger.error ("OID "+doc_id +" couldn't be converted to mg num"); 
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/service/GoogleNgramMGPPSearch.java

    r15191 r15787  
    3737  extends GS2MGPPSearch { 
    3838   static Logger logger = Logger.getLogger(org.greenstone.gsdl3.service.GoogleNgramMGPPSearch.class.getName()); 
    39    protected GDBMWrapper gdbm_src = null; 
    4039   
    4140    /** constructor */ 
    4241    public GoogleNgramMGPPSearch(){ 
    43     super(); 
    44     gdbm_src = new GDBMWrapper(); 
    45      
     42    super();     
    4643    } 
    4744     
     
    5249    } 
    5350 
    54     // Open GDBM database for querying 
    55     String gdbm_db_file = GSFile.GDBMDatabaseFile(this.site_home, this.cluster_name, this.index_stem); 
    56         if (!this.gdbm_src.openDatabase(gdbm_db_file, GDBMWrapper.READER)) { 
    57         logger.error("Could not open GDBM database!"); 
    58         return false; 
    59     } 
    6051    this.default_max_docs = "-1"; 
    6152    this.default_hits_per_page = "30"; 
     
    7869          String num = Long.toString((((MGPPDocInfo) docs.elementAt(d)).num_)); 
    7970          String doc_id = internalNum2OID(num); 
    80           DBInfo gdbmInfo = this.gdbm_src.getInfo(doc_id); 
    81           String fre = (String)gdbmInfo.getInfo("Frequency"); 
    82           String tense = (String)gdbmInfo.getInfo("Tense"); 
     71          DBInfo dbInfo = this.coll_db.getInfo(doc_id); 
     72          String fre = (String)dbInfo.getInfo("Frequency"); 
     73          String tense = (String)dbInfo.getInfo("Tense"); 
    8374          
    8475          if(!fre.equals("")){ 
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/service/OAIPMH.java

    r14209 r15787  
    2727import org.greenstone.gsdl3.util.XMLConverter; 
    2828 
    29 import org.greenstone.gsdl3.util.GDBMWrapper; 
     29import org.greenstone.gsdl3.util.SimpleCollectionDatabase; 
    3030import org.greenstone.gsdl3.util.DBInfo; 
    3131// XML classes 
     
    4545import java.util.Map.Entry; 
    4646 
    47 import org.apache.log4j.*; 
     47import org.apache.log4j.Logger; 
    4848 
    4949/** Implements the oai metadata retrieval service for GS3 collections. 
    50  *  Dig into each collection's gdbm database and retrieve the metadata 
     50 *  Dig into each collection's database and retrieve the metadata 
    5151 * 
    5252 * @author <a href="mailto:xiao@cs.waikato.ac.nz">Xiao</a> 
     
    5757  static Logger logger = Logger.getLogger(org.greenstone.gsdl3.service.OAIPMH.class.getName()); 
    5858   
    59   protected GDBMWrapper gdbm_src = null; 
     59  protected SimpleCollectionDatabase coll_db = null; 
    6060   
    6161  protected String site_name = ""; 
     
    6565  /** constructor */ 
    6666  public OAIPMH() { 
    67     this.gdbm_src = new GDBMWrapper(); 
     67 
    6868  } 
    6969   
    7070  public void cleanUp() { 
    7171    super.cleanUp();//?? 
    72     this.gdbm_src.closeDatabase(); 
     72    this.coll_db.closeDatabase(); 
    7373  } 
    7474  /** configure this service */ 
     
    8989    this.config_info = info; 
    9090     
    91     // the index stem is either specified in the buildConfig.xml file or uses the collection name 
    92     Element index_stem_elem = (Element) GSXML.getChildByTagName(info, GSXML.INDEX_STEM_ELEM); 
    93     String index_stem = null; 
    94     if (index_stem_elem != null) { 
    95         index_stem = index_stem_elem.getAttribute(GSXML.NAME_ATT); 
    96     } 
    97     if (index_stem == null || index_stem.equals("")) { 
    98         index_stem = this.cluster_name; 
    99     } 
     91    // the index stem is either specified in the buildConfig.xml file or uses the collection name 
     92    Element index_stem_elem = (Element) GSXML.getChildByTagName(info, GSXML.INDEX_STEM_ELEM); 
     93    String index_stem = null; 
     94    if (index_stem_elem != null) { 
     95      index_stem = index_stem_elem.getAttribute(GSXML.NAME_ATT); 
     96    } 
     97    if (index_stem == null || index_stem.equals("")) { 
     98      index_stem = this.cluster_name; 
     99    } 
    100100   
    101     // Open GDBM database for querying 
    102     String gdbm_db_file = GSFile.GDBMDatabaseFile(this.site_home, this.cluster_name, index_stem); 
    103     if (!this.gdbm_src.openDatabase(gdbm_db_file, GDBMWrapper.READER)) { 
    104       logger.error("Could not open GDBM database!"); 
     101    // find out what kind of database we have 
     102    Element database_type_elem = (Element) GSXML.getChildByTagName(info, GSXML.DATABASE_TYPE_ELEM); 
     103    String database_type = null; 
     104    if (database_type_elem != null) { 
     105      database_type = database_type_elem.getAttribute(GSXML.NAME_ATT); 
     106    } 
     107    if (database_type == null || database_type.equals("")) { 
     108      database_type = "gdbm"; // the default 
     109    } 
     110    coll_db = new SimpleCollectionDatabase(database_type); 
     111    if (coll_db == null) { 
     112      logger.error("Couldn't create the collection database of type "+database_type); 
    105113      return false; 
    106114    } 
    107  
     115     
     116    // Open database for querying 
     117    String coll_db_file = GSFile.collectionDatabaseFile(this.site_home, this.cluster_name, index_stem, database_type); 
     118    if (!this.coll_db.openDatabase(coll_db_file, SimpleCollectionDatabase.READ)) { 
     119      logger.error("Could not open collection database!"); 
     120      return false; 
     121    } 
     122     
    108123    // the short_service_info is used by the message router to find the method names,  
    109124    //so we just use the doc variable in class ServiceRack to create the xml; but 
     
    214229    //get a DBInfo object of the identifier; if this identifier is not present in the database, 
    215230    // null is returned. 
    216     DBInfo info = this.gdbm_src.getInfo(oid); 
     231    DBInfo info = this.coll_db.getInfo(oid); 
    217232    if (info == null) { 
    218233      logger.error("OID: " + oid + " is not present in the database."); 
     
    294309    for(int i=0; i<oid_list.size(); i++) { 
    295310      String oid = (String)oid_list.get(i); 
    296       DBInfo info = this.gdbm_src.getInfo(oid); 
     311      DBInfo info = this.coll_db.getInfo(oid); 
    297312      if (info == null) { 
    298313        logger.error("Database does not contains information about oid: " +oid); 
     
    386401    for(int i=0; i<oid_list.size(); i++) { 
    387402      String oid = (String)oid_list.get(i); 
    388       DBInfo info = this.gdbm_src.getInfo(oid); 
     403      DBInfo info = this.coll_db.getInfo(oid); 
    389404      if (info == null) { 
    390405        logger.error("Database does not contains information about oid: " +oid); 
     
    506521     
    507522    DBInfo info = null;     
    508     info = this.gdbm_src.getInfo(oid); 
     523    info = this.coll_db.getInfo(oid); 
    509524    if (info == null) { //just double check 
    510525      return OAIXML.getResponse(OAIXML.createErrorElement(OAIXML.OAI_SERVICE_UNAVAILABLE, "")); 
     
    577592  /** returns a list of the child ids in order, null if no children */ 
    578593  protected ArrayList getChildrenIds(String node_id) { 
    579     DBInfo info = this.gdbm_src.getInfo(node_id); 
     594    DBInfo info = this.coll_db.getInfo(node_id); 
    580595    if (info == null) { 
    581596      return null; 
     
    614629  }   
    615630    /** @param keys - contains a list of keys in string format. 
    616      * Here is a typical record in the gdbm database, 'keys' contains the values in <...>: 
     631     * Here is a typical record in the collection database, 'keys' contains the values in <...>: 
    617632     *---------------------------------------------------------------------- 
    618633[HASH01a84acb0f1aad2380493b3a] 
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/util/GDBMWrapper.java

    r15191 r15787  
    55import au.com.pharos.gdbm.GdbmException; 
    66 
    7 import org.apache.log4j.*; 
     7import org.apache.log4j.Logger; 
    88 
    99/** java wrapper class for gdbm - uses Java-GDBM written by Martin Pool 
     
    1111 */ 
    1212 
    13 public class GDBMWrapper { 
     13public class GDBMWrapper  
     14  implements FlatDatabaseWrapper { 
    1415 
    15       static Logger logger = Logger.getLogger(org.greenstone.gsdl3.util.GDBMWrapper.class.getName()); 
    16  
    17  
    18     // Values must match those from gdbm.h - uses the definitions from GdbmFile ! 
    19     /** Indicates that the caller will just read the database.  Many 
    20      * readers may share a database. */ 
    21     public final static int READER = GdbmFile.READER; 
    22   
    23     /** The caller wants read/write access to an existing database and 
    24      * requires exclusive access. */ 
    25     public final static int WRITER = GdbmFile.WRITER; 
    26   
    27     /** The caller wants exclusive read/write access, and the database 
    28      * should be created if it does not already exist. */ 
    29     public final static int WRCREAT = GdbmFile.WRCREAT; 
    30   
    31     /** The caller wants exclusive read/write access, and the database 
    32      * should be replaced if it already exists. */ 
    33     public final static int NEWDB = GdbmFile.NEWDB; 
     16  static Logger logger = Logger.getLogger(org.greenstone.gsdl3.util.GDBMWrapper.class.getName()); 
     17   
     18  /* GdbmFile modes: 
     19     READER - read access, many readers may share the database 
     20     WRITER - read/write access, exclusive access 
     21     WRCREAT - read/write access, create db if doesn't exist 
     22     NEWDB - read/write access, db should be replaced if exists 
     23  */ 
     24   
    3425 
    3526    protected GdbmFile db_=null; 
    3627 
    37     /** open the database filename, with mode mode - uses the constants 
    38     above, eg GdbmFile.WRITER */ 
    39     public boolean openDatabase(String filename, int mode){ 
    40     try { 
    41         if (db_!=null) { 
    42         db_.close(); 
    43         } 
    44         db_ = new GdbmFile(filename, mode); 
    45     } catch ( GdbmException e) { // the database wasn't opened or created 
    46         logger.error("couldn't open database "+filename); 
    47         return false; 
    48     }  
    49     db_.setKeyPacking(new StringPacking()); 
    50     db_.setValuePacking(new StringPacking()); 
    51     return true; 
     28  /** open the database filename, with mode mode - uses the constants 
     29      above, eg GdbmFile.WRITER */ 
     30  public boolean openDatabase(String filename, int mode) { 
     31    // need to convert mode to GdbmFile mode 
     32    if (mode == READ) {  
     33      mode = GdbmFile.READER; 
     34    } else if (mode == WRITE) { 
     35      mode = GdbmFile.WRITER; 
     36    }   else { 
     37      logger.error ("invalid mode, "+mode+ ", opening db for reading only"); 
     38      mode = GdbmFile.READER; 
    5239    } 
     40       
     41    try { 
     42      if (db_!=null) { 
     43    db_.close(); 
     44      } 
     45      db_ = new GdbmFile(filename, mode); 
     46    } catch ( GdbmException e) { // the database wasn't opened or created 
     47      logger.error("couldn't open database "+filename); 
     48      return false; 
     49    }  
     50    db_.setKeyPacking(new StringPacking()); 
     51    db_.setValuePacking(new StringPacking()); 
     52    return true; 
     53  } 
     54   
     55  /** close the database associated with this wrapper */ 
     56  public void closeDatabase() { 
     57    try { 
     58      if (db_ != null) { 
     59    db_.close(); 
     60    db_ = null; 
     61      } 
     62    } catch (GdbmException e) { 
     63      // should never get here - close never actually throws an exception 
     64      logger.error("error on close()"); 
     65    } 
     66  } 
    5367 
    54     /** close the database associated with this wrapper */ 
    55     public void closeDatabase() { 
    56     try { 
    57         if (db_ != null) { 
    58         db_.close(); 
    59         db_ = null; 
    60         } 
    61     } catch (GdbmException e) { 
    62         // should never get here - close never actually throws an exception 
    63         logger.error("error on close()"); 
    64     } 
     68  public String getValue(String key) { 
     69    if (db_==null) { 
     70      return null; 
    6571    } 
     72    String s_info; 
     73    try { 
     74      s_info = (String)db_.fetch(key); 
     75    } catch (GdbmException e) { 
     76      logger.error("couldn't get record"); 
     77      return null; 
     78    } 
     79    if (s_info==null) { 
     80      // record not present 
     81      logger.error("key "+key+" not present in db"); 
     82      return null; 
     83    } 
     84    return s_info; 
     85  } 
    6686 
    67     /** returns a DBInfo object containing all the name-value pairs for  
    68      * main_key  
    69      * @see DBInfo 
    70      */ 
    71     public DBInfo getInfo(String main_key) { 
    72     if (db_==null) { 
    73         return null; 
    74     } 
    75     String s_info; 
    76     try { 
    77         s_info = (String)db_.fetch(main_key); 
    78     } catch (GdbmException e) { 
    79         logger.error("couldn't get record"); 
    80         return null; 
    81     } 
    82     if (s_info==null) { 
    83         // record not present 
    84         logger.error("key "+main_key+" not present in db"); 
    85         return null; 
    86     } 
    87     DBInfo info = new DBInfo(); 
     87  /** sets the key value as info  
     88   * TODO - not implemented yet */ 
     89  public boolean setValue (String key, String value) { 
     90    if (db_==null) { 
     91      return false; 
     92    } 
     93    return false; 
     94  } 
     95  /** deletes the entry for key  
     96   * TODO - not implemented yet */ 
     97  public boolean deleteKey(String key) { 
     98    if (db_==null) { 
     99      return false; 
     100    } 
     101    return false; 
     102  } 
    88103 
    89     String [] lines = s_info.split("\n"); 
    90     String key; 
    91     String value; 
    92     for (int i=0; i<lines.length; i++) { 
    93         logger.debug("line:"+lines[i]); 
    94         int a = lines[i].indexOf('<'); 
    95         int b= lines[i].indexOf('>'); 
    96         if (a==-1 || b==-1) { 
    97         logger.error("bad format in db"); 
    98         } 
    99         else { 
    100         key=lines[i].substring(a+1, b); 
    101         value=lines[i].substring(b+1); 
    102         logger.debug("key="+key+", val="+value); 
    103         info.addInfo(key, value); 
    104  
    105         } 
    106     } 
    107     return info; 
    108     } 
    109  
    110     /** sets all the name-value pairs in info as the content for key key  
    111      * TODO - not implemented yet */ 
    112     public boolean setInfo(String key, DBInfo info) { 
    113     if (db_==null) { 
    114         return false; 
    115     } 
    116     return true; 
    117     } 
    118     /** sets the key value as info  
    119      * TODO - not implemented yet */ 
    120     public boolean setInfo (String key, String info) { 
    121     if (db_==null) { 
    122         return false; 
    123     } 
    124     return true; 
    125     } 
    126     /** deletes the entry for key  
    127      * TODO - not implemented yet */ 
    128     public boolean deleteKey(String key) { 
    129     if (db_==null) { 
    130         return false; 
    131     } 
    132     return true; 
    133     } 
    134  
    135     // greenstone convenience methods - should these go into a separate class? 
    136     // yes I think so. 
    137     /** converts a greenstone OID to internal docnum */ 
    138     public long OID2Docnum(String OID) { 
    139     DBInfo info = getInfo(OID); 
    140     if (info != null) { 
    141         long real_num = Long.parseLong(info.getInfo("docnum")); 
    142         return real_num; 
    143     } 
    144     return -1; 
    145     } 
    146     /** converts a docnum to greenstone OID */ 
    147     public String docnum2OID(long docnum) { 
    148     return docnum2OID(Long.toString(docnum)); 
    149     } 
    150      
    151     /** converts a docnum to greenstone OID */ 
    152     public String docnum2OID(String docnum) { 
    153     DBInfo info = getInfo(docnum); 
    154     if (info!=null){ 
    155         String oid = info.getInfo("section"); 
    156         return oid; 
    157     }else{ 
    158         return null; 
    159     } 
    160     } 
    161  
    162     /** converts an external id to greenstone OID */ 
    163     public String externalId2OID(String extid) { 
    164     DBInfo info = getInfo(extid); 
    165     if (info != null) { 
    166         String oid = info.getInfo("section"); 
    167         return oid; 
    168     } 
    169     return null; 
    170     } 
    171     /** translates relative oids into proper oids: 
    172      * .pr (parent), .rt (root) .fc (first child), .lc (last child), 
    173      * .ns (next sibling), .ps (previous sibling)  
    174      * .np (next page), .pp (previous page) : links sections in the order that you'd read the document 
    175      * a suffix is expected to be present so test before using  
    176      */ 
    177     public String translateOID(String oid) { 
    178  
    179     int p = oid.lastIndexOf('.'); 
    180     if (p != oid.length()-3) { 
    181         logger.info("translateoid error: '.' is not the third to last char!!"); 
    182         return oid; 
    183     } 
    184      
    185     String top = oid.substring(0, p); 
    186     String suff = oid.substring(p+1); 
    187     // just in case we have multiple extensions, we must translate 
    188     // we process inner ones first 
    189     if (OID.needsTranslating(top)) { 
    190         top = translateOID(top); 
    191     } 
    192     if (suff.equals("pr")) { 
    193         return OID.getParent(top); 
    194     }  
    195     if (suff.equals("rt")) { 
    196         return OID.getTop(top); 
    197     }  
    198     if (suff.equals("np")) { 
    199         // try first child 
    200         String node_id = translateOID(top+".fc"); 
    201         if (!node_id.equals(top)) { 
    202         return node_id; 
    203         } 
    204         // try next sibling 
    205         node_id = translateOID(top+".ns"); 
    206         if (!node_id.equals(top)) { 
    207         return node_id; 
    208         } 
    209         // otherwise we keep trying parents sibling 
    210         String child_id = top; 
    211         String parent_id = OID.getParent(child_id); 
    212         while(!parent_id.equals(child_id)) { 
    213         node_id = translateOID(parent_id+".ns"); 
    214         if (!node_id.equals(parent_id)) { 
    215             return node_id; 
    216         } 
    217         child_id = parent_id; 
    218         parent_id = OID.getParent(child_id); 
    219         } 
    220         return top; // we couldn't get a next page, so just return the original 
    221     }  
    222     if (suff.equals("pp")) { 
    223         String prev_sib = translateOID(top+".ps"); 
    224         if (prev_sib.equals(top)) { 
    225         // no previous sibling, so return the parent 
    226         return OID.getParent(top); 
    227         } 
    228         // there is a previous sibling, so its either this section, or the last child of the last child.. 
    229         String last_child = translateOID(prev_sib+".lc"); 
    230         while (!last_child.equals(prev_sib)) { 
    231         prev_sib = last_child; 
    232         last_child = translateOID(prev_sib+".lc"); 
    233         } 
    234         return last_child; 
    235     }  
    236      
    237     int sibling_num = 0; 
    238     if (suff.equals("ss")) { 
    239         // we have to remove the sib num before we get top 
    240         p = top.lastIndexOf('.'); 
    241         sibling_num = Integer.parseInt(top.substring(p+1)); 
    242         top = top.substring(0, p); 
    243     } 
    244      
    245     // need to get info out of gdbm db - 
    246     String doc_id = top; 
    247     if (suff.endsWith("s")) { 
    248         doc_id = OID.getParent(top); 
    249         if (doc_id.equals(top)) { 
    250         // i.e. we are already at the top 
    251         return top; 
    252         } 
    253     } 
    254     DBInfo info = getInfo(doc_id); 
    255     if (info==null) { 
    256         logger.info("info is null!!"); 
    257         return top; 
    258     } 
    259      
    260     String contains = info.getInfo("contains"); 
    261     if (contains.equals("")) { 
    262         // something is wrong 
    263         return top; 
    264     } 
    265     contains = contains.replaceAll("\"", doc_id); 
    266     String [] children = contains.split(";"); 
    267     if (suff.equals("fc")) { 
    268         return children[0]; 
    269     } else if (suff.equals("lc")) { 
    270         return children[children.length-1]; 
    271     } else { 
    272         if (suff.equals("ss")) { 
    273         return children[sibling_num-1]; 
    274         } 
    275         // find the position that we are at. 
    276         int i=0; 
    277         while (i<children.length) { 
    278         if (children[i].equals(top)) { 
    279             break; 
    280         } 
    281         i++; 
    282         } 
    283          
    284         if (suff.equals("ns")) { 
    285         if (i==children.length-1) { 
    286             return children[i]; 
    287         } 
    288         return children[i+1]; 
    289         } else if (suff.equals("ps")) { 
    290         if (i==0) { 
    291             return children[i]; 
    292         } 
    293         return children[i-1]; 
    294         } 
    295     } 
    296      
    297     return top; 
    298     } 
    299104} 
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/util/GS2MacroResolver.java

    r14532 r15787  
    2828{ 
    2929 
    30     protected GDBMWrapper gdbm_src = null; 
     30    protected SimpleCollectionDatabase coll_db = null; 
    3131     
    3232    // need to make it not add macros if they are already present 
    33     public GS2MacroResolver(GDBMWrapper gdbm) { 
     33    public GS2MacroResolver(SimpleCollectionDatabase db) { 
    3434    super(); 
    35     gdbm_src = gdbm; 
     35    coll_db = db; 
     36    } 
     37 
     38    public GS2MacroResolver() { 
     39    super(); 
     40    } 
     41 
     42    public void setDB(SimpleCollectionDatabase db) { 
     43    this.coll_db = db; 
    3644    } 
    3745 
     
    107115        if (match.matches()) { 
    108116            if (node_info == null) { 
    109             node_info = gdbm_src.getInfo(doc_oid); 
     117            node_info = coll_db.getInfo(doc_oid); 
    110118            if (node_info == null) { 
    111119                break; 
     
    116124            // try the root node 
    117125            if (root_info == null && !OID.isTop(doc_oid)) { 
    118                 root_info = gdbm_src.getInfo(OID.getTop(doc_oid)); 
     126                root_info = coll_db.getInfo(OID.getTop(doc_oid)); 
    119127            } 
    120128            if (root_info == null) break; 
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/util/GSFile.java

    r15191 r15787  
    289289    } 
    290290 
    291     /** the gdbm database file -  
    292      * note, need to change extension depending on OS */ 
     291    /** the collection database file -  
     292     * note, need to change extension depending on OS and database type */ 
    293293    // The perl code can't detect big vs little endian on a Mac, so the Perl 
    294294    // code will always name the gdbm db file .bdb on a Mac whether its little 
    295295    // endian or not. A Mac little endian file is NOT the same as a Linux  
    296296    // little endian file 
    297     static public String GDBMDatabaseFile(String site_home,  
    298                       String collection_name, 
    299                       String index_stem) { 
    300  
    301     String db_ext = ".ldb"; 
    302     if (Misc.isMac() || Misc.isBigEndian()) { 
     297  // jdbm files are endian independent ?? 
     298    static public String collectionDatabaseFile(String site_home,  
     299                        String collection_name, 
     300                        String index_stem,  
     301                        String database_type) { 
     302 
     303        String db_ext = null; 
     304    if (database_type.equalsIgnoreCase("jdbm")) { 
     305      db_ext = ".db"; 
     306    } else { 
     307      // assume gdbm 
     308      db_ext = ".ldb"; 
     309      if (Misc.isMac() || Misc.isBigEndian()) { 
    303310        db_ext = ".bdb"; 
    304     } 
     311      } 
     312    }  
     313     
    305314    return site_home + File.separatorChar + 
    306315        "collect" + File.separatorChar + 
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/util/GSXML.java

    r15191 r15787  
    6464  public static final String DISPLAY_ELEM = "display"; 
    6565  public static final String LEVEL_ELEM = "level"; 
     66  public static final String DATABASE_TYPE_ELEM = "databaseType"; 
    6667  public static final String SHORTNAME_ATT = "shortname"; 
    6768  public static final String NOTIFY_ELEM = "notify"; 
    6869  public static final String NOTIFY_HOST_ATT = "host"; 
    69    
    7070  // elems for the pages to be processed by xslt 
    7171  public final static String PAGE_ELEM = "page"; 
     
    423423  /** returns the (first) child element with the given name */ 
    424424  public static Node getChildByTagName(Node n, String name) { 
    425      
    426     Node child = n.getFirstChild(); 
    427     while (child!=null) { 
    428       if (child.getNodeName().equals(name)) { 
    429         return child; 
    430       } 
    431       child = child.getNextSibling(); 
    432     } 
    433     return null; //not found 
     425      if(n != null) { // this line is an attempted solution to the NullPointerException mentioned  
     426      // in trac bug ticket #225. If n is null can't do n.getFirstChild() below. As per bug #225:  
     427      // GSXML.getNodeByPath() is called by GS2BrowseAction, which then calls this method. 
     428      // If n is null, null will be returned which GS2BrowseAction already checks for. It's here 
     429      // that the NullPointerException was thrown. 
     430  
     431      Node child = n.getFirstChild(); 
     432      while (child!=null) { 
     433          if (child.getNodeName().equals(name)) { 
     434          return child; 
     435          } 
     436          child = child.getNextSibling(); 
     437      } 
     438      } 
     439      return null; //not found 
    434440  } 
    435441   
  • greenstone3/branches/customizingGreenstone3/src/java/org/greenstone/gsdl3/util/OAIXML.java

    r14206 r15787  
    121121    public static final String NO_METADATA_FORMATS = "noMetadataFormats"; 
    122122     
    123     // The node id in the gdbm database, which contains all the OIDs in the database 
     123    // The node id in the collection database, which contains all the OIDs in the database 
    124124    public static final String BROWSELIST = "browselist"; 
    125125         
  • greenstone3/branches/customizingGreenstone3/web/WEB-INF/cgi/gliserver4gs3.pl

    r14602 r15787  
    118118    while (1) { } 
    119119    } 
     120    elsif ($cmd eq "file-exists") {  
     121    &file_exists($gsdl_cgi); 
     122    }    
    120123    else { 
    121124    $gsdl_cgi->generate_error("Unrecognised command: '$cmd'"); 
     
    542545} 
    543546 
     547# Method that will check if the given file exists 
     548# No error message: all messages generated are OK messages 
     549# This method will simply state whether the file exists or does not exist. 
     550sub file_exists 
     551{ 
     552    my ($gsdl_cgi, $username, $timestamp) = @_; 
     553 
     554    my ($gsdl_cgi) = @_; 
     555 
     556    my $collection = $gsdl_cgi->clean_param("c"); 
     557    if ((!defined $collection) || ($collection =~ m/^\s*$/)) { 
     558    $gsdl_cgi->generate_error("No collection specified."); 
     559    } 
     560    my $file = $gsdl_cgi->clean_param("file"); 
     561    if ((!defined $file) || ($file =~ m/^\s*$/)) { 
     562    $gsdl_cgi->generate_error("No file specified."); 
     563    } 
     564    $file =~ s/\|/&util::get_dirsep()/eg;  # Convert the '|' characters into whatever is right for this OS 
     565    
     566    # Not necessary: checking whether the user is authenticated to query existance of the file 
     567    #&authenticate_user($gsdl_cgi, $username, $collection); 
     568 
     569    my $gsdlhome = $ENV{'GSDLHOME'}; 
     570    my $collection_directory = &util::filename_cat($gsdlhome, "collect", $collection); 
     571    $gsdl_cgi->checked_chdir($collection_directory); 
     572 
     573    # Check that the collection file exists 
     574    if (-e $file) { 
     575    $gsdl_cgi->generate_ok_message("File $file exists."); 
     576    } else { 
     577    $gsdl_cgi->generate_ok_message("File $file does not exist."); 
     578    } 
     579} 
    544580 
    545581sub download_collection_file 
     
    862898    &lock_collection($gsdl_cgi, $username, $collection, $site) unless ($script eq "mkcol.pl"); 
    863899 
    864     # Last argument is the collection name, except for explode_metadata_database.pl 
     900    # Last argument is the collection name, except for explode_metadata_database.pl and 
     901    # replace_srcdoc_with_html (where there's a "file" option followed by the filename. These two preceed the collection name) 
    865902    my $perl_args = $collection; 
    866     if ($script eq "explode_metadata_database.pl") { 
    867     # Last argument is the file to be exploded 
     903    if ($script eq "explode_metadata_database.pl" || $script eq "replace_srcdoc_with_html.pl") { 
     904    # Last argument is the file to be exploded or it is the file to be replaced with its html version 
    868905    my $file = $gsdl_cgi->clean_param("file"); 
    869906    if ((!defined $file) || ($file =~ m/^\s*$/)) { 
     
    871908    } 
    872909    $gsdl_cgi->delete("file"); 
     910    $file =~ s/ /\\ /g; # escape all spaces in filename with a backslash, i.e. "\ ". 
    873911    $perl_args = $file; 
    874912    }