#!/bin/ksh

# Component: imadmin
#
# Description:
#  Control script of component imadmin
#
# Last Updated     : $Author$
# Update Date Time : $Date$
# RCS File Name    : $RCSfile$
# RCS Revision     : $Revision$
# Locked by        : $Locker$
# Symbolic name    : $Name$
# State            : $State$

#--- INIT ------------------------------
#needs $HOME
. $HOME/etc/ctrl.main.shi

[ -f $HOME/etc/setenv.sh ] && . $HOME/etc/setenv.sh

#--- FUNC ------------------------------
do_shell_()
{
	cat <<-EndOfInlineData
		IMADMIN_HOME=$HOME/component/imadmin
		DEVSERVTBL=DevServ
		WORKFLOWTBL=Workflow
		MSGFLOWTBL=MsgFlow
		LDAPCONFTBL=LDAPConfigs
	EndOfInlineData
} #do_shell_()

do_aftersubmit_()
{
	do_start_

} #do_aftersubmit_

do_crontab_()
{
	JAVA_SERVER_PORT=5555
	[ -f "$CONF/taskd.rc" ] && . "$CONF/taskd.rc"

	# Get time for starting timeout users from crontabSchedule settings
	[ -f "$CONF/crontabSchedule.shi" ] && . $CONF/crontabSchedule.shi
	[ -z "$TimeoutUsers" ] && TimeoutUsers="04-59/5 *"

	cat <<-EOI
		$TimeoutUsers * * * $TASKD_HOME/runjavacmd -c "0 imagemed.imsession.TimeoutUsers" -p $JAVA_SERVER_PORT
	EOI
} #do_crontab_()  


do_start_()
{
	# Creating/Modifying table structures will be called in component cases for all tables

	# Except the DevServ table 
	$MYSQL_HOME/bin/mysqlshow $DBNAME $DEVSERVTBL >/dev/null 2>/dev/null
	if [ "$?" -ne "0" ] ; then
		$MYSQL_HOME/bin/mysql $DBNAME < $IMADMIN_HOME/$DEVSERVTBL.ysql >/dev/null 2>/dev/null
		echo "INSERT INTO $DEVSERVTBL (DEVICE,SERVICE) SELECT ID,'AFwd' FROM $TARGETTBL WHERE TYPE='P';" | $MYSQL_HOME/bin/mysql $DBNAME 2>/dev/null
		echo "INSERT INTO $DEVSERVTBL (DEVICE,SERVICE) SELECT ID,'ARtv' FROM $TARGETTBL WHERE TYPE='A';" | $MYSQL_HOME/bin/mysql $DBNAME 2>/dev/null
		echo "INSERT INTO $DEVSERVTBL (DEVICE,SERVICE) SELECT ID,'UnEd' FROM $TARGETTBL WHERE TYPE='A' OR TYPE='Q';" | $MYSQL_HOME/bin/mysql $DBNAME 2>/dev/null
		echo "INSERT INTO $DEVSERVTBL (DEVICE,SERVICE) SELECT ID,'QR_P' FROM $TARGETTBL WHERE TYPE='A' OR TYPE='Q';" | $MYSQL_HOME/bin/mysql $DBNAME 2>/dev/null
		echo "INSERT INTO $DEVSERVTBL (DEVICE,SERVICE) SELECT ID,'StrU' FROM $TARGETTBL" | $MYSQL_HOME/bin/mysql $DBNAME 2>/dev/null
		echo "INSERT INTO $DEVSERVTBL (DEVICE,SERVICE) SELECT ID,'QR_U' FROM $TARGETTBL" | $MYSQL_HOME/bin/mysql $DBNAME 2>/dev/null
		echo "INSERT INTO $DEVSERVTBL (DEVICE,SERVICE) SELECT ID,'StrP' FROM $TARGETTBL WHERE TYPE<>'M';" | $MYSQL_HOME/bin/mysql $DBNAME 2>/dev/null
		echo "INSERT INTO $DEVSERVTBL (DEVICE,SERVICE) SELECT ID,'MWLU' FROM $TARGETTBL WHERE TYPE='M';" | $MYSQL_HOME/bin/mysql $DBNAME 2>/dev/null
	else
		echo "DELETE FROM $DEVSERVTBL WHERE SERVICE IN ('AUpd','UnFw','PbRD','AETi','ApID','FcID','Ackn');" | $MYSQL_HOME/bin/mysql $DBNAME 2>/dev/null
	fi

	# And MsgFlow table
	$MYSQL_HOME/bin/mysqlshow $DBNAME $MSGFLOWTBL >/dev/null 2>/dev/null
	if [ "$?" -ne "0" ] ; then
		$MYSQL_HOME/bin/mysql $DBNAME < $IMADMIN_HOME/$MSGFLOWTBL.ysql >/dev/null 2>/dev/null
	fi

    # link classes into $HOME/htdocs/WEB-INF/classes
    if [ ! -h $HOME/htdocs/WEB-INF/classes ] ; then
        CWD=`pwd`
        cd $HOME/htdocs/WEB-INF/classes
        if [ ! -h $HOME/htdocs/WEB-INF/classes/imadmin ] ; then
            ln -s $IMADMIN_HOME/classes/imadmin
        fi
        cd $CWD
    fi
} #do_start_()


#
# List files/tables to be backed up grouped by categories
#
# output lines should be in '<category> <type> <names>' format
#
do_listbackup_()
{
	sCONF=${CONF#$HOME/}
	cat <<-EOFLISTBACKUP
		data.users FILE ${USERS_DATA#$HOME/} ${REPOSITORY_USERS#$HOME/}
		data.users DATABASE Access Groups
		config.server FILE $sCONF/self.rec $sCONF/config.xml $sCONF/default_config.xml $sCONF/profile.xml $sCONF/default_profile.xml
		config.system FILE $sCONF/security.rec $sCONF/localIPs.cfg ${VAR#$HOME/}/volume_info.prp
		config.gui FILE $sCONF/institution
	EOFLISTBACKUP
}

#--- MAIN ------------------------------
check_action_ $1
if [ 0 = $? ]; then
	do_$1_

else
	echo "--- Component imadmin [ctrl $$]: Bad command: $1" >&2
	exit 1

fi
