Changeset 15787


Ignore:
Timestamp:
2008-05-29T13:29:54+12:00 (16 years ago)
Author:
oranfry
Message:

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

Location:
greenstone3/branches/customizingGreenstone3
Files:
26 edited
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:[email protected]">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    }
Note: See TracChangeset for help on using the changeset viewer.