#!/bin/bash

printf "\n\tCONFIGURAÇÃO JAVA WEBSTART PARA O SISCONDJ\n\nConfiguração da associação do Java Webstart para a abertura de arquivos JNLP. \nEsse script deve ser executado com o usuário local, não com o root. \nTodas as alterações serão feitas apenas localmente, não afetando os outros usuários.\n\n"

if [[ $(whoami) == "root" ]]
then
	printf "\nERRO: tente executar o script novamente com algum usuário local ou sem 'sudo'"
	exit 1
fi

while true; do
    read -p "Deseja continuar? [Sim] [NÃO]: " yn
    case $yn in
        S|s|Sim|sim) printf "\nContinuando com a configuração..."; break;;
        *) printf "\nSaindo da configuração"; exit;;
    esac
done

JAVA_WS_LOC=""

if [ -n "$JAVA_HOME" ]
then 
	JAVA_WS_LOC="$JAVA_HOME/bin/javaws"
else 
	if [[ $(which javaws) ]];
	then 
		JAVA_WS_LOC=`which javaws`
	else
		echo "\nJAVA WEB START não localizado. Crie a variável de ambiente JAVA_HOME apontando para o Java instalado e execute novamente este script."
		exit 1
	fi
fi

printf "\nO javaws foi localizado em '$JAVA_WS_LOC' e será usado para configurar a abertura de arquivos JNLP (Java Webstart)"

LOCAL_APPLICATIONS_FOLDER="$HOME/.local/share/applications"
LOCAL_APPLICATION_NAME="$LOCAL_APPLICATIONS_FOLDER/java-web-start.desktop"

if [[ $(grep application/x-java-jnlp-file $LOCAL_APPLICATIONS_FOLDER/*.desktop) ]]
then
	printf "\nJá há configurado localmente um aplicativo para a abertura de arquivos JNLP. Essas configurações serão substituídas, mas será criado um backup."
	#TODO oq fazer quando há vários arquivos com essa configuração?
	LOCAL_APPLICATION_NAME=`grep -l application/x-java-jnlp-file $LOCAL_APPLICATIONS_FOLDER/*.desktop | head -n1`
	cp -f $LOCAL_APPLICATION_NAME "$LOCAL_APPLICATION_NAME.$(date +%Y%m%d%H%M%S)"
fi

cat > $LOCAL_APPLICATION_NAME << EOF
[Desktop Entry]
Encoding=UTF-8
Name=Java Web Start
Comment=Java Web Start
Exec=$JAVA_WS_LOC %u
Terminal=false
Type=Application
Icon=javaws
Categories=Application;Network;Java;JWS
MimeType=application/x-java-jnlp-file;
EOF

printf "\nArquivo de configuração da aplicação 'javaws' finalizado. Agora é necessário gerar a associação entre essa aplicação e o tipo JNLP."

LOCAL_MIME_NAME="$LOCAL_APPLICATIONS_FOLDER/mimeapps.list"

if [ ! -e $LOCAL_MIME_NAME ] 
then
	touch $LOCAL_MIME_NAME
fi

sed -e '/application\/x-java-jnlp-file/ s/^#*/#/' -i $LOCAL_MIME_NAME

echo "application/x-java-jnlp-file=$(echo $LOCAL_APPLICATION_NAME | grep -o [^/]*$)" >> $LOCAL_MIME_NAME

printf "\nConfigurações finalizadas. Por favor, reinicie o computador para ter certeza que essas novas configurações sejam carregadas.\nDepois acesse novamente o SisconDJ, baixe e execute o arquivo JNLP conforme orientado.\n\n\tObrigado.\n"
