#!/bin/sh
#*************************************************************************
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# 
# Copyright 2008 by Sun Microsystems, Inc.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# $RCSfile: cwscheckapi,v $
#
# $Revision: 1.3.36.1 $
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org.  If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#***********************************************************************/


EXIT_SUCCESS=0
EXIT_FAILURE=1
EXIT_ERROR=2
EXIT_BUG=10

usage() {
        echo "Usage: $SCRIPTNAME [-m MODULE1[,MODULEn]] [-o] [-h] [-d] [-i] [-t] [-s] [-a]" >&2
        echo "" >&2
        echo "[-m] list of modules to test like: '-m sw,sc,sd' or '-m all' for all modules" >&2
        echo "" >&2
        echo "[-o] force OpenOffice.org installation instead of StarOffice" >&2
        echo "" >&2
        echo "[-d] debug installation and UnoAPI-Tests" >&2
        echo "" >&2
        echo "[-i] debug installation" >&2
        echo "" >&2
        echo "[-t] debug UnoAPI-Tests" >&2
        echo "" >&2
        echo "[-s] skip installation of Office" >&2
        echo "" >&2
        echo "[-a] NoCwsAttach: do not attach UnoAPI-Test result to EIS database" >&2
        echo "" >&2
        echo "further informations: http://wiki.services.openoffice.org/wiki/Cwscheckapi" >&2
        echo "" >&2
        exit $EXIT_FAILURE
}
DEBUG_I=false
DEBUG_T=false
INSTALL=true
ATTACH=ture
MODULES="auto"
OOO=false

while getopts ':m:ditsaho' OPTION ; do
        case $OPTION in
        d)        DEBUG_I=true
                  DEBUG_T=true
                ;;
        m)        MODULES="$OPTARG"
                ;;
        o)        OOO=true
                ;;
        i)        DEBUG_I=true
                ;;
        t)        DEBUG_T=true
                ;;
        s)        INSTALL=false
                ;;
        a)        ATTACH=false
                ;;
        h)        usage $EXIT_SUCCESS
                ;;
        \?)        echo "unkown option \"-$OPTARG\"." >&2
                usage $EXIT_ERROR
                ;;
        *)        echo "this is not possible...">&2
                usage $EXIT_BUG
                ;;
        esac
done

shift `expr $OPTIND - 1`


DESTPATH=/tmp/$USER/cwscheckapi
LOCALINSTALLDIR=$DESTPATH/office
LOCALUNPACKDIR=$DESTPATH/unpack
export LOCALINSTALLDIR
export LOCALUNPACKDIR

unset LD_LIBRARY_PATH
unset FORCE2ARCHIVE

date 2>&1

if [ $INSTALL = true ]; then
	
    
	if [ $DEBUG_I = true ]; then
        echo "start installation: `date`"
		echo call "$SOLARENV/bin/installoffice.pl -cwscheckapi true -dest $LOCALINSTALLDIR -debug $DEBUG_I"
    fi
    perl -w $SOLARENV/bin/installoffice.pl -cwscheckapi true -dest $LOCALINSTALLDIR -ooo $OOO -debug $DEBUG_I

    EXITVAL=$?
    
    if [ $EXITVAL -ne 0 ]; then
        echo "ERROR: could not install office"
        exit $EXITVAL
    fi
	echo "`date` installation successfull, start testing...." 
fi

if [ $DEBUG_T = true ]; then
    echo find $LOCALINSTALLDIR -name soffice
fi

OFFICEBIN=`find $LOCALINSTALLDIR -name soffice`

if [ ! -f "$OFFICEBIN" ]; then
    echo "could not find 'soffice' in subfolders of $LOCALINSTALLDIR";
    exit 1
fi


JARFOLDER=$SOLARVERSION/$INPATH/bin$UPDMINOREXT
SOLVER_LIB=$SOLARVERSION/$INPATH/lib$UPDMINOREXT
myCLASSPATH=$JARFOLDER/OOoRunner.jar:$JARFOLDER/ridl.jar:$JARFOLDER/unoil.jar:$JARFOLDER/jurt.jar:$JARFOLDER/juh.jar:$JARFOLDER/java_uno.jar
myCLASSPATH=$myCLASSPATH:$JARFOLDER/ridl.jar:$JARFOLDER/unoil.jar:$JARFOLDER/jurt.jar:$JARFOLDER/juh.jar:$JARFOLDER/java_uno.jar
myCLASSPATH=$myCLASSPATH:/net/unoapi/export/unoapi/bin/mysql.jar:$SOLVER_LIB
PARAM=""
if [ -n "$JAVAI" ]; then
        JAVABIN=$JAVAI
elif [ -n "$JAVA_HOME" ]; then
        JAVABIN=$JAVA_HOME/bin/java
else
        echo "please set environment variable JAVA_HOME"
        exit 1
fi

if [ -n "$WORK_STAMP" ]; then
	if [ -n "$CWS_WORK_STAMP" ]; then
        PARAM="$PARAM -Version cws_${CWS_WORK_STAMP}"
	else
	    echo "######"
	    echo CAUTION! You\'re working on the MWS
	    echo "######"
        PARAM="$PARAM -Version ${WORK_STAMP}_${UPDMINOR}"
	fi
fi

PARAM="$PARAM -cmd '$OFFICEBIN  -nofirststartwizard -norestore -nocrashreport -nolockcheck -accept=pipe,name=$USER;urp;'"
PARAM="$PARAM -cs pipe,name=$USER"
PARAM="$PARAM -NoOffice true"
PARAM="$PARAM -OOO_EnvSet setsolar"
PARAM="$PARAM -SRC_ROOT $SRC_ROOT"
PARAM="$PARAM -COMP_ENV $INPATH"
PARAM="$PARAM -Shell /usr/bin/tcsh"
PARAM="$PARAM -tb java_complex"
PARAM="$PARAM -TimeOut 90000"
PARAM="$PARAM -o complex.unoapi.CheckModuleAPI::module($MODULES)"
if [ $ATTACH = false ]; then
    PARAM="$PARAM -nca true"
fi
if [ $DEBUG_T = true ]; then
    PARAM="$PARAM -debug true -log true"
fi

#XDEBUG=" -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8001 " 
COMMAND="$JAVABIN -Xmx120m $XDEBUG -cp $myCLASSPATH org.openoffice.Runner $PARAM $*"
echo "( unset LD_LIBRARY_PATH ; $COMMAND )"

LOGFILE=$DESTPATH/cwscheckapi.log
( unset LD_LIBRARY_PATH ; $COMMAND | tee $LOGFILE)

echo
echo A logfile could be found here: $LOGFILE

date 2>&1