#!/bin/bash
#
#Beschreibung: importiert Daten aus iTrain in LibreOffice Calc 
#
#benötigt: unzip LibreOffice
#
#Aufruf: iTrain2Calc.sh Dateiname Filtername
#
#Hinweise und Fehler an tuxator@tuxator.de 
#
#Status: ok
###################################################################
#
#Variablen
retval=0
#
#Prüfung auf Voraussetzungen
for cmd in /usr/bin/unzip /usr/bin/libreoffice
do
	if [[ ! -e ${cmd} ]]; then
		retval=1
	fi
done
if [[ ! ${2} ]]; then
	retval=2
fi
if [[ ! -f ${1} ]]; then
	retval=3
fi
# Name der iTrain-tcdz-Datei 
infilename=${1}
# Prüfe auf iTrain-Datei
#Dateiendung holen
suffix=$(echo ${infilename##*.})
if [[ ${suffix} != "tcdz" ]] && [[ ${suffix} != "tcd" ]]; then
	retval=4
fi
# Name des Filters
filtername=${2}
###################################################################
if [[ ${retval} = 0 ]]; then
	# aktuellen IFS sichern
	currentifs=${IFS}
	# IFS auf Zeilenumbruch
	IFS=$'\n'
	# Prüfe auf Zip-Datei
	if [[ ${suffix} = "tcdz" ]]; then
		# Hole Dateinamen aus Zip-Datei
		filename=$(unzip -Z1 ${infilename})
		# entpacke Datei nach /tmp
		unzip -bq ${infilename} -d /tmp
		# übergebe Calc Datei und Filter
		libreoffice --calc --infilter="${filtername}" /tmp/${filename}
		# bereinige /tmp
		rm /tmp/${filename}
	else
		# übergebe Calc Datei und Filter
		libreoffice --calc --infilter="${filtername}" ${infilename}
	fi
	# setze IFS zurück
	IFS=${currentifs}
fi
###################################################################
#Fehlerbehandlung
case ${retval} in
	1)
	echo "${0}: Ausführung nicht möglich. ${cmd} nicht gefunden"
	;;
	2)
	echo "${0}: Ausführung nicht möglich. Fehlender Filter."
	;;
	3)
	echo "${0}: Ausführung nicht möglich. Datei nicht gefunden."
	;;
	4)
	echo "${0}: Ausführung nicht möglich. Datei ist keine iTrain-Datei."
	;;
esac
###################################################################
exit ${retval}
