#!/bin/sh
### BEGIN INIT INFO
# Provides:            ofbiz
# Required-Start:      $local_fs $remote_fs $network $time
# Required-Stop:       $local_fs $remote_fs $network $time
# Should-Start:                postgresql mysql exim4
# Should-Stop:         postgresql mysql exim4
# Default-Start:       2 3 4 5
# Default-Stop:                0 1 6
# Short-Description:   OfBiz container
### END INIT INFO
#Licensed to the Apache Software Foundation (ASF) under one
#or more contributor license agreements.  See the NOTICE file
#distributed with this work for additional information
#regarding copyright ownership.  The ASF licenses this file
#to you under the Apache License, Version 2.0 (the
#"License"); you may not use this file except in compliance
#with the License.  You may obtain a copy of the License at
#
#http://www.apache.org/licenses/LICENSE-2.0
#
#Unless required by applicable law or agreed to in writing,
#software distributed under the License is distributed on an
#"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#KIND, either express or implied.  See the License for the
#specific language governing permissions and limitations
#under the License.

set -e

if ! [ -e "/usr/share/ofbiz/ofbiz.jar" ]; then
	exit 0
fi

PATH=/bin:/usr/bin:/sbin:/usr/sbin

# set defaults
DEFAULT=/etc/default/ofbiz
JAVA_HOME=""
JAVA_HOMES="/usr/lib/jvm/java-6-openjdk"
MEMIF=""
UMASK=002

. /lib/lsb/init-functions
. /etc/default/rcS

if [ -e /etc/default/locale ]; then
	. /etc/default/locale
	export LANG
fi

# allow local admin to change defaults
if [ -e "$DEFAULT" ]; then
	. "$DEFAULT"
fi

PATH=/bin:/usr/bin:/sbin:/usr/sbin

NAME=ofbiz
DESC="OfBiz Container"
OFBIZ_HOME=/usr/share/ofbiz
USER=ofbiz
PIDFILE=/var/run/ofbiz.pid
CLASS=org.ofbiz.base.start.Start

PROPS=""
if [ -f "/etc/ofbiz/debconf.cfg" ]; then
	PROPS="$PROPS -Dofbiz.system.props=/etc/ofbiz/debconf.cfg"
fi

if [ "x$JAVA_HOME" == x ]; then
	if [ "x$JAVA_HOMES" != x ]; then
		for possible in $JAVA_HOMES; do
			if [ -e "$possible/bin/java" ]; then
				JAVA_HOME="$possible"
				break
			fi
		done
	fi
	if [ "x$JAVA_HOME" == x ]; then
		log_failure_msg "Couldn't find a java."
		if [ "x$JAVA_HOMES" != x ]; then
			log_failure_msg "Tried $JAVA_HOMES"
		fi
		exit 1
	fi
fi
JAVA="$JAVA_HOME/bin/java"
CLASSPATH="$OFBIZ_HOME/ofbiz.jar:/usr/share/java/commons-daemon.jar"

run_ofbiz_cmd() {
	(
		cd "$OFBIZ_HOME"
		"$JAVA" $PROPS -jar ofbiz.jar "$1"
	)
}

if [ -z "$(which jsvc)" ]; then
	jsvc() {
		jsvc_jvm=""
		jsvc_wait=""
		jsvc_verbose_class=""
		jsvc_verbose_gc=""
		jsvc_verbose_jni=""
		jsvc_pidfile=""
		jsvc_detach=1
		jsvc_user=""
		jsvc_outfile="/dev/null"
		jsvc_errfile="/dev/null"
		jsvc_home=""
		jsvc_cp=""
		jsvc_extra=""
		jsvc_stop=""
		while [ $# -gt 0 ]; do
			case "$1" in
				(-version)		;;
				(-help)			;;
				(-?)			;;
				(-check)		;;
				(-jvm)			jsvc_jvm="$2"; shift;;
				(-wait)			jsvc_wait="$2"; shift;;
				(-stop)			jsvc_stop=1;;
				(-verbose:class)	jsvc_verbose_class=1; shift;;
				(-verbose:gc)		jsvc_verbose_gc=1; shift;;
				(-verbose:jni)		jsvc_verbose_jni=1; shift;;
				(-pidfile)		jsvc_pidfile="$2"; shift;;
				(-nodetach)		jsvc_detach="";;
				(-user)			jsvc_user="$2"; shift;;
				(-outfile)		jsvc_outfile="$2"; shift;;
				(-errfile)		jsvc_errfile="$2"; shift;;
				(-home)			jsvc_home="$2"; shift;;
				(-classpath)		jsvc_cp="$2"; shift;;
				(-cp)			jsvc_cp="$2"; shift;;
				(-D*)			jsvc_extra="$jsvc_extra \"$1\"";;
				(-X*)			jsvc_extra="$jsvc_extra \"$1\"";;
				(*)			break;;
			esac
			shift
		done
		if ! [ "$jsvc_home" ]; then log_failure_msg "-home not set"; exit 1; fi
		if ! [ "$jsvc_cp" ]; then log_failure_msg "-cp not set"; exit 1; fi
		if [ "$jsvc_jvm" ]; then log_failure_msg "-jvm not supported"; exit 1; fi
		if [ "$jsvc_wait" ]; then log_failure_msg "-wait not supported"; exit 1; fi
		if [ "$jsvc_stop" ]; then log_failure_msg "-stop not supported"; exit 1; fi
		jsvc_args=""
		if [ "$jsvc_verbose_class" ]; then :; fi
		if [ "$jsvc_verbose_gc" ]; then :; fi
		if [ "$jsvc_verbose_jni" ]; then :; fi
		jsvc_command_file=$(mktemp)
		echo "#!/bin/sh" > "$jsvc_command_file"
		chmod +x "$jsvc_command_file"
		echo "rm -f \"$jsvc_command_file\"" >> "$jsvc_command_file"
		if [ "$jsvc_pidfile" ]; then
			touch "$jsvc_pidfile"
			if [ "$jsvc_user" ]; then
				chown "$jsvc_user" "$jsvc_pidfile"
			fi
			echo "echo \$\$ > \"$jsvc_pidfile\"" >> "$jsvc_command_file"
		fi
		echo "exec \"$JAVA\" -classpath \"$jsvc_cp\" $jsvc_extra $@" >> "$jsvc_command_file"
		if [ "$jsvc_user" ]; then
			chown "$jsvc_user" "$jsvc_command_file"
			jsvc_command="su -c \"$jsvc_command_file\" -s \"/bin/sh\" \"$jsvc_user\""
		else
			jsvc_command="$jsvc_command_file"
		fi
		jsvc_command="$jsvc_command 1>\"$jsvc_outfile\" 2>\"$jsvc_errfile\""
		if [ "$jsvc_detach" ]; then
			eval $jsvc_command &
		else
			trap "rm -f \"$jsvc_command_file\"" EXIT
			eval $jsvc_command
		fi
		return $?
	}
fi

get_status() {
	status="$(run_ofbiz_cmd -status 2>/dev/null | sed -n 's/^Current Status : //p')"
	case "$status" in
		(Running|Starting|Stopping|Not\ Running)
			echo $status
		;;
		(*)
			echo Not Running
		;;
	esac
}

wait_for_status() {
	count="$1"
	while :; do
		if [ "$(get_status)" = "$2" ]; then
			break;
		fi
		count=$(($count - 1))
		if [ "$count" -eq 0 ]; then
			log_failure_msg "Timeout waiting for $3"
			exit 1
		fi
		log_begin_msg "."
		sleep 1
	done
}

ofbiz_shutdown() {
	run_ofbiz_cmd -shutdown
}

wait_for_stop() {
	wait_for_status 30 "Not Running" "stop"
}

start() {
	case "$(get_status)" in
		(Stopping)
			log_progress_msg "(waiting for stop"
			wait_for_stop
			log_progress_msg ")"
		;;
		(Not\ Running)
		;;
		(Starting|Running)
			log_progress_msg "(already running)"
			return
		;;
		(*)
			log_progress_msg "(forcing stop"
			ofbiz_shutdown
			wait_for_stop
			log_progress_msg ")"
		;;
	esac
	(
		cd "$OFBIZ_HOME"
		touch /var/log/ofbiz/ofbiz.log
		chown ofbiz.ofbiz /var/log/ofbiz/ofbiz.log
		jsvc -pidfile "$PIDFILE" \
			-user $USER \
			-outfile /var/log/ofbiz/console.log -errfile '&1' \
			-home "$JAVA_HOME" -cp "$CLASSPATH" \
			$PROPS \
			$MEMIF \
			$CLASS
	)
	wait_for_status 40 "Running" "start"
}

stop() {
	case "$(get_status)" in
		(Not\ Running)
		;;
		(*)
			ofbiz_shutdown
			wait_for_stop
		;;
	esac
	if [ -e "$PIDFILE" ]; then
		rm "$PIDFILE"
	fi
}

install() {
	case "$(get_status)" in
		(Stopping)
			log_progress_msg "(waiting for stop"
			wait_for_stop
			log_progress_msg ")"
		;;
		(Not\ Running)
		;;
		(Starting|Running)
			log_failure_msg "(running, can't install)"
			exit 1
		;;
	esac
	(
		cd "$OFBIZ_HOME"
		touch /var/log/ofbiz/ofbiz.log
		chown ofbiz.ofbiz /var/log/ofbiz/ofbiz.log
		jsvc -pidfile "$PIDFILE" \
			-nodetach \
			-user $USER \
			-outfile /dev/fd/3 -errfile '&1' \
			-home "$JAVA_HOME" -cp "$CLASSPATH" \
			$PROPS \
			$MEMIF \
			$CLASS \
			install "$@" 3>&1 | \
			tee -a /var/log/ofbiz/install.log
	)
}

module_hook() {
	files=""
	result="0"
	while [ $# -gt 0 ]; do
		case "$1" in
			(-file=*)
				file="$(echo "$1" | sed 's/^-file=//')"
				if ! [ -e "$file" ]; then
					log_failure_msg "File $file does not exist"
					result=1
				else
					files="$files,$file"
				fi
			;;
			(-file)
				file="$2"
				if ! shift; then
					log_failure_msg "No file specified"
					result=1
				elif ! [ -e "$file" ]; then
					log_failure_msg "File $file does not exist"
					result=1
				else
					files="$files,$file"
				fi
			;;
			(*)
				log_failure_msg "Unknown argument($1)"
				exit 1
			;;
		esac
		shift
	done
	if ! [ "$files" ]; then
		return 0
	elif [ "$result" eq 1 ]; then
		return 1
	fi
	files="$(echo "$files" | cut -f 2- -d ,)"
	was_running=""
	case "$(get_status)" in
		(Not\ Running)
		;;
		(Stopping)
			wait_for_stop
		;;
		(*)
			log_daemon_msg "Stopping $DESC" "$NAME"
			ofbiz_shutdown
			wait_for_stop
			log_end_msg 0
			was_running=1
		;;
	esac
	cd "$OFBIZ_HOME"
	if ! jsvc \
		-user $USER -outfile /dev/tty -errfile '&1' -nodetach \
		-home "$JAVA_HOME" -cp "$CLASSPATH" \
		$CLASS install -file="$files"; then
		log_failure_msg "Error installing files"
		result=1
	fi
	if [ "$was_running" ]; then
		log_daemon_msg "Starting $DESC" "$NAME"
		start
		log_end_msg 0
	fi
	return "$result"
}
cmd="$1"
shift || true
case "$cmd" in
	(start)
		log_daemon_msg "Starting $DESC" "$NAME"
		start
		log_end_msg 0
	;;
	(stop)
		log_daemon_msg "Stopping $DESC" "$NAME"
		stop
		log_end_msg 0
	;;
	(install)
		log_daemon_msg "Installing $DESC" "$NAME"
		install "$@"
		log_end_msg 0
	;;
	(reload|restart|force-reload)
		log_daemon_msg "Restarting $DESC" "$NAME"
		stop
		start
		log_end_msg 0
	;;
	(module-hook)
		if ! module_hook "$@"; then
			exit 1
		fi
	;;
	(*)
		log_success_msg "Usage: $0 {start|stop|install|reload|force-reload|restart"
		exit 1
	;;
esac
