#!/bin/bash
# $Id: sm_set_java,v 1.2 2016/10/01 13:58:30 sesam Exp $
#
# Check for Java >= 17 and create symlink to <SESAM>/bin/sesam/java
#

#default
java_version_check='version.*"17["\.]\|version.*"21\.'

read_ini()
{
   . $( grep -i '^sm_ini=' /etc/sesam2000.ini|cut -d"=" -f2 ) 2>/dev/null
}

get_java_version()
{
   $1 -version 2>&1| grep "${java_version_check}"
}

set_java()
{
   JAVA_CHECK=$( get_java_version java )
   JAVA_BIT_CHECK=$( java -version 2>&1 | grep "64-[bB]it" )
   if [ "$JAVA_CHECK" != "" ] && [ "$JAVA_BIT_CHECK" != "" ]
   then
     echo "64-Bit Java VM >= 11 found: $( which java )"
     echo "Create link in 'sesam' directory."
     ln -s $( which java ) "${gv_ro_bin}/java"
     echo "STATUS=SUCCESS MSG=$( echo $JAVA_CHECK|cut -d '"' -f 2 )"
     exit 0
   fi
}

#For installation. No sm.ini available 
if [ -r "/etc/sesam2000.ini" ] && [ -r $( grep -i '^sm_ini=' /etc/sesam2000.ini|cut -d"=" -f2 ) 2>/dev/null ]
then
  read_ini
else
  gv_ro_bin="/opt/sesam/bin/sesam"
fi

JAVA_CHECK=$( get_java_version ${gv_ro_bin}/java )
JAVA_BIT_CHECK=$( "java" -version 2>&1 | grep "64-[bB]it" )
if [ "$JAVA_CHECK" != "" ] && [ "$JAVA_BIT_CHECK" != "" ]
then
  echo $JAVA_CHECK	
  echo "Correct 64-Bit Java VM >= 17 link already exists in 'sesam' directory."
  echo "STATUS=SUCCESS MSG=$( echo $JAVA_CHECK|cut -d '"' -f 2 )"
  exit 0
else
  echo "Old or non 64-Bit Java VM (<17) link found in 'sesam' directory. Remove link"
  [ -r "${gv_ro_bin}/java" -o -h "${gv_ro_bin}/java" ] && rm "${gv_ro_bin}/java"
fi

#Try default PATH
set_java
PATH_SAVE="$PATH"

#Oracle Java: /usr/java/latest
#TRY: /etc/alternatives/
#Old pathes with Java 11 for SDS
#for p in '/usr/java/latest' '/usr/lib64/jvm/java-17-openjdk' '/usr/lib/jvm/jre-17' '/usr/lib64/jvm/java-11-openjdk' '/usr/lib/jvm/java-11-openjdk-amd64' '/usr/lib/jvm/jre-11' '/usr/lib64/jvm/jre-11' '/usr/lib64/jvm/jre-11-openjdk'

for p in '/usr/java/latest' '/usr/lib64/jvm/jre-21' '/usr/lib/jvm/jre-21' '/usr/lib64/jvm/java-17-openjdk' '/usr/lib/jvm/jre-17' '/usr/lib64/jvm/java-17-openjdk-17'
do 
  PATH=$( ls -d $p|grep -v _exports 2>/dev/null|tail -1 )/bin:$PATH 2>/dev/null
  export PATH
  set_java
  PATH="$PATH_SAVE"
done

echo "STATUS=ERROR MSG=Error: No Java VM >= 17 found."
exit 2

