#!/bin/sh

###############################################################
# Copyright (c) Virtimo AG, Germany.
# https://www.virtimo.de
# All rights reserved.
#
# Script to stop Karaf and OpenSearch
###############################################################

PRG="$0"
while [ -h "$PRG" ] ; do
  ls=$(ls -ld "$PRG")
  link=$(expr "$ls" : '.*-> \(.*\)$')
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=$(dirname "$PRG")/"$link"
  fi
done

PRGDIR=$(dirname "$PRG")
KARAF_STOP="${PRGDIR}/../karaf/bin/stop"
KARAF_STATUS="${PRGDIR}/../karaf/bin/status"

## Function to find OpenSearch pid ##
echo_opensearch_pid() {
	  PATTERN_CHECK="org.opensearch.bootstrap.OpenSearch"

	  if [ "$(uname)" = "Darwin" ]; then
        PIDS1=$(ps u -U "$USER" | grep -E ".* [0-9]+ .*[j]ava .*${PATTERN_CHECK}" | awk '{ print $2 }')
    else
        PIDS1=$(ps -u "$USER" u | grep -E ".* [0-9]+ .*[j]ava .*${PATTERN_CHECK}" | awk '{ print $2; }')
    fi

	  # make sure result is a number
    echo "$PIDS1" | grep -E "^[1-9][0-9]*" > /dev/null
	  if [ $? -gt 0 ]; then
		    echo ""
	  else
		    echo "$PIDS1"
	  fi
}

## Function to find Karaf status ##
get_karaf_status() {
	"$KARAF_STATUS"
}

########### Stop script starts here #############################

## Stop Karaf ##
STATUSMESSAGE=$(get_karaf_status)
STATUS=$?
if [ $STATUS -eq 1 ]; then
	echo "Karaf not running"
elif [ $STATUS -eq 0 ]; then
	echo "Stopping Karaf ..."

	"$KARAF_STOP"
	STATUSTEXT=$(get_karaf_status)
	STATUS1=$?
	while [ $STATUS1 -eq 0 ]; do
		STATUSMESSAGE=$(get_karaf_status)
		STATUS1=$?
	done
	echo "Karaf stopped"
else
	echo "Unable to stop Karaf"
fi

## Stop OpenSearch ##
OPENSEARCH_PID=$(echo_opensearch_pid)

if [ -z "${OPENSEARCH_PID}" ]; then
	echo "OpenSearch not running"
else
	echo "Stopping OpenSearch ..."
	kill "$OPENSEARCH_PID"
	echo "OpenSearch stopped"
fi
