#!/bin/bash
#------- ABSCHNITT : Modul Identifikation -------------------------------------
#
# Modul Name       : webapps-loadCallparams.sh
# .     Funktion   : Webapps URL-Aufrufparameter anlegen und aktivieren
# .     Verwendung : Webapps
# Autor            : vbrukman
# Verantwortlich   : teamreport
# Kontrolle        :
#
#------- ABSCHNITT : Modul Beschreibung ---------------------------------------
#

#------- ABSCHNITT : Defines, Prozeduren, Typen und Daten ---------------------
DEVNULL=${DEVNULL:-/dev/null}; export DEVNULL
name=`basename $0`
pwd=$(pwd)
DEBUG=0

unset rmdir  # rmdir von Aufrufern nicht uebernehmen

#------------------------------------------------------------------------------
# zeigt die Usage an
#------------------------------------------------------------------------------
usage() {
 echo "" >&2
 echo "usage: $name -p PASS" >&2
 echo "   * Option -?: usage" >&2
 echo "" >&2
 exit 1
}

#------------------------------------------------------------------------------
# Exit-Prozedur zum kontrollierten Beenden
#------------------------------------------------------------------------------
# Exit-Prozedur zum kontrollierten Beenden incl. Aufraeumen
# Im Fehlerfall ($1 != 0) wird $rmdir aufgehoben
# Wenn die globale Variable rm_rmdir auf 1 steht, wird $rmdir auch bei $1 != 0
# weggeworfen
# Parameter
#     $1 = Exit status
#     $2 = Fehlermeldung
#------------------------------------------------------------------------------
rm_rmdir=1
myexit()
{
  exitcode=$1
  errmsg=$2
  cd $pwd
  # Temp-Verzeichnis loeschen
#  if [ -n "$rmdir" ];then
#     if [ $rm_rmdir -eq 1 -o \( $DEBUG -eq 0 -a $exitcode -eq 0 \) ];then
#        rm -rf $rmdir
#     else
#        ech "rmdir aufbewahrt: $rmdir" >&2
#     fi
#  fi
  if [ -n "$errmsg" ];then
      ech $name: "$errmsg" >&2
  fi
  exit $1
}

#------- ABSCHNITT : Optionen -------------------------------------------------
# Options- und Nichtoptionsargumente koennen Blanks enthalten.

mandtest.sh -f || myexit 1 "Skript im Mandanten aufrufen!"

while [ $# -gt 0 ]
do
  case $1 in
   -p) shift
       passwort="$1"
     ;;
   -?) usage
       ;;
    *) echo "wrong argument $1"   # fehlerhafte Option
       exit 1
       ;;
  esac
  shift
done

[ -z "$passwort" ] && myexit 1 "Passwort fehlt"

#------- ABSCHNITT : Hauptprogramm --------------------------------------------
# main
trap "myexit 1 Abort!!" 1 2 

TMP=${TMP:-/tmp}              # Setze TMP auf /tmp, falls TMP leer oder nicht
                              # existent
[ ! -d $TMP ] && TMP=/tmp
rmdir="$TMP/$$.${name}.d"
rm -rf $rmdir || myexit 1 "Kann Verzeichnis rmdir=$rmdir nicht loeschen."
mkdir $rmdir  || myexit 1 "Kann Verzeichnis rmdir=$rmdir nicht anlegen."


# ---
# 1. Import der neuen URL-Aufrufparameter
# ---
echo "URL-Aufrufparameter fuer Webapp Documents importieren"

PARAMS_DOCUMENTS_FILE="$rmdir/webapps_newcallparams_documents_input.edp"

cat > $PARAMS_DOCUMENTS_FILE << EOF
#!ACTION=STORE
#!TRANSACTION=1
#!EDP_TRANSMODE=1
#!EDP_UPDATEMODE=ERRABORT
#!CHARSET=ISO8859-1
#!LINESEPARATOR=#
#!FLDDELIMITER=;
#!DONTCHANGE=-
#!CHARSET=ISO8859
# ********************************************
# 99:2 - Struktur / Structure
# ********************************************
#!DATABASE=99
#!GROUP=2

nummer;nummer;such;name;nameueb;verw;token;\\
zn;ref;
50089;50089;DMS_WEBAPP_URL;[[DMS Webapp URL]];1;2009;DMS_WEBAPP_URL;\\
1;50091;
50088;50088;STRU-DMS_WEBAPP;[[DMS Webapp]];1;2009;&;\\
1;50089;

# ********************************************
# 99:1 - Schema
# ********************************************
#!DATABASE=99
#!GROUP=1

nummer;nummer;such;name;nameueb;struktur;message;msgpos;
50095;50095;DMS_WEBAPP;[[DMS Webapp]];1;50088;50089;50091;
EOF

PATESTFLAGGEN='-f298 -f261' edpimport.sh -p "$passwort" $PARAMS_DOCUMENTS_FILE > rmtmp/webapps-loadCallparams.out 2>rmtmp/webapps-loadCallparams.error

CALLPARAMS_DOCUMENTS_FILE="$rmdir/webapps_newcallparams_documents_input.edp"

cat > $CALLPARAMS_DOCUMENTS_FILE << EOF
# EDP import file generated by edpexport.sh
# cmd line: edpexport.sh -P -l 87:15 -f nummer,nummer,such,name,zielschema,aufrktxt,zn,zielvar,aufrwtyp,aufrwert,aufrpflicht -k such=NDOCUMENTS- -Z -O IMPORT:STORE:87:15
#!DATABASE=87
#!GROUP=15

nummer;nummer;such;name;zielschema;aufrktxt;\\
zn;zielvar;aufrwtyp;aufrwert;aufrpflicht;
56227;56227;NDOCUMENTS-00-01;Dokumente Neue DMS WebApp;50095;V V-00-01    ;\\
1;dmsfield;Konstante;KuLiNr;ja;\\
2;dmsvalue;Kopffeld;nummer;ja;\\
3;dmssearch;Konstante;query;ja;
56228;56228;NDOCUMENTS-00-02;Dokumente Neue DMS WebApp;50095;V V-00-02    ;\\
1;dmsfield;Konstante;KtktNr;ja;\\
2;dmsvalue;Kopffeld;nummer;ja;\\
3;dmssearch;Konstante;query;ja;
56229;56229;NDOCUMENTS-00-06;Dokumente Neue DMS WebApp;50095;V V-00-06    ;\\
1;dmsfield;Konstante;KuLiNr;ja;\\
2;dmsvalue;Kopffeld;nummer;ja;\\
3;dmssearch;Konstante;query;ja;
56230;56230;NDOCUMENTS-00-07;Dokumente Neue DMS WebApp;50095;V V-00-07    ;\\
1;dmsfield;Konstante;KtktNr;ja;\\
2;dmsvalue;Kopffeld;nummer;ja;\\
3;dmssearch;Konstante;query;ja;
56231;56231;NDOCUMENTS-01-01;Dokumente Neue DMS WebApp;50095;V V-01-01    ;\\
1;dmsfield;Konstante;KuLiNr;ja;\\
2;dmsvalue;Kopffeld;nummer;ja;\\
3;dmssearch;Konstante;query;ja;
56232;56232;NDOCUMENTS-01-02;Dokumente Neue DMS WebApp;50095;V V-01-02    ;\\
1;dmsfield;Konstante;KtktNr;ja;\\
2;dmsvalue;Kopffeld;nummer;ja;\\
3;dmssearch;Konstante;query;ja;
56233;56233;NDOCUMENTS-02-01;Dokumente Neue DMS WebApp;50095;V V-02-01    ;\\
1;dmsfield;Konstante;ArtNr;ja;\\
2;dmsvalue;Kopffeld;nummer;ja;\\
3;dmssearch;Konstante;query;ja;
56200;56200;NDOCUMENTS-03-20;Dokumente Neue DMS WebApp;50095;V V-03-20    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56201;56201;NDOCUMENTS-03-21;Dokumente Neue DMS WebApp;50095;V V-03-21    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56202;56202;NDOCUMENTS-03-22;Dokumente Neue DMS WebApp;50095;V V-03-22    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56203;56203;NDOCUMENTS-03-23;Dokumente Neue DMS WebApp;50095;V V-03-23    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56204;56204;NDOCUMENTS-03-24;Dokumente Neue DMS WebApp;50095;V V-03-24    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56205;56205;NDOCUMENTS-03-25;Dokumente Neue DMS WebApp;50095;V V-03-25    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56206;56206;NDOCUMENTS-03-27;Dokumente Neue DMS WebApp;50095;V V-03-27    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56207;56207;NDOCUMENTS-03-28;Dokumente Neue DMS WebApp;50095;V V-03-28    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56208;56208;NDOCUMENTS-03-29;Dokumente Neue DMS WebApp;50095;V V-03-29    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56209;56209;NDOCUMENTS-03-30;Dokumente Neue DMS WebApp;50095;V V-03-30    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56210;56210;NDOCUMENTS-03-31;Dokumente Neue DMS WebApp;50095;V V-03-31    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56211;56211;NDOCUMENTS-04-20;Dokumente Neue DMS WebApp;50095;V V-04-20    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56212;56212;NDOCUMENTS-04-21;Dokumente Neue DMS WebApp;50095;V V-04-21    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56213;56213;NDOCUMENTS-04-22;Dokumente Neue DMS WebApp;50095;V V-04-22    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56235;56235;NDOCUMENTS-04-23;Dokumente Neue DMS WebApp;50095;V V-04-23    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56214;56214;NDOCUMENTS-04-24;Dokumente Neue DMS WebApp;50095;V V-04-24    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;linkeddoc;ja;
56215;56215;NDOCUMENTS-06-00;Dokumente Neue DMS WebApp;50095;V V-06-00    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;query;ja;
56216;56216;NDOCUMENTS-09-01;Dokumente Neue DMS WebApp;50095;V V-09-01    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;query;ja;
56217;56217;NDOCUMENTS-104-01;Dokumente Neue DMS WebApp;50095;V V-104-01   ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;query;ja;
56218;56218;NDOCUMENTS-105-01;Dokumente Neue DMS WebApp;50095;V V-105-01   ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;query;ja;
56219;56219;NDOCUMENTS-105-02;Dokumente Neue DMS WebApp;50095;V V-105-02   ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;query;ja;
56220;56220;NDOCUMENTS-110-00;Dokumente Neue DMS WebApp;50095;V V-110-00   ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;query;ja;
56221;56221;NDOCUMENTS-116-01;Dokumente Neue DMS WebApp;50095;V V-116-01   ;\\
1;dmsfield;Konstante;SPrNr;ja;\\
2;dmsvalue;Kopffeld;nummer;ja;\\
3;dmssearch;Konstante;query;ja;
56222;56222;NDOCUMENTS-122-01;Dokumente Neue DMS WebApp;50095;V V-122-01   ;\\
1;dmsfield;Konstante;VKSAnfNr;ja;\\
2;dmsvalue;Kopffeld;nummer;ja;\\
3;dmssearch;Konstante;query;ja;
56223;56223;NDOCUMENTS-59-00;Dokumente Neue DMS WebApp;50095;V V-59-00    ;\\
1;dmsfield;Konstante;CharNr;ja;\\
2;dmsvalue;Kopffeld;nummer;ja;\\
3;dmssearch;Konstante;query;ja;
56224;56224;NDOCUMENTS-66-03;Dokumente Neue DMS WebApp;50095;V V-66-03    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;query;ja;
56225;56225;NDOCUMENTS-66-07;Dokumente Neue DMS WebApp;50095;V V-66-07    ;\\
1;dmsfield;Konstante;AbasID;ja;\\
2;dmsvalue;Kopffeld;id;ja;\\
3;dmssearch;Konstante;query;ja;
56226;56226;NDOCUMENTS-86-05;Dokumente Neue DMS WebApp;50095;V V-86-05    ;\\
1;dmsfield;Konstante;ProjNr;ja;\\
2;dmsvalue;Kopffeld;nummer;ja;\\
3;dmssearch;Konstante;query;ja;
EOF

PATESTFLAGGEN='-f298 -f261' edpimport.sh -p "$passwort" $CALLPARAMS_DOCUMENTS_FILE >> rmtmp/webapps-loadCallparams.out 2>>rmtmp/webapps-loadCallparams.error

# ---
# 2a. Neue abgespeckte von URL-Aufrufparameter zum späteren Joinen
# ---

CALLPARAMS_DOCUMENTS_MINI="$rmdir/webapps_callparams_documents_mini.csv"

edpexport.sh -p "$passwort" -l 87:15 -f nummer,such,aufrktxt -k 'zielschema=50095;such=NDOCUMENTS-' | awk -F';' -v OFS=';' '{for (i=1;i<=NF;i++) gsub(/^[[:blank:]]+|[[:blank:]]+$/,"",$i); print $0}' > $CALLPARAMS_DOCUMENTS_MINI 2>>rmtmp/webapps-loadCallparams.error
# example: 562274;NDOCUMENTS-00-01;V V-00-01;

# ---
# 2b. Liste der Aufrufparamterzuordnung zum späteren Joinen (indaufruf)
# ---

CALLPARAMS_DOCUMENTS_FIELDMAPPING="$rmdir/webapps_callparams_documents_fieldmapping.csv"

edpexport.sh -p "$passwort" -l 87:16 -f 'id,aufrktxt,aufrtab,buttonfeld,lieferumfang,feldaktzeile,buttonfeld,stdaufruf' -k 'buttonfeld=dokumentbaurl;lieferumfang=(Yes)' | awk -F';' -v OFS=';' '{for (i=1;i<=NF;i++) gsub(/^[[:blank:]]+|[[:blank:]]+$/,"",$i); print $0}' > $CALLPARAMS_DOCUMENTS_FIELDMAPPING 2>>rmtmp/webapps-loadCallparams.error
# example: (51091,87,0);V V-00-01;nein;dokumentbaurl;ja;;dokumentbaurl;DOCUMENTS;

# aufrktxt;aufrtab;buttonfeld;>ladetab;<;lieferumfang;feldaktzeile;buttonfeld;stdaufruf

# ---
# 2c. Joinen der zwei Dateien
# ---
# CALLPARAMS_DOCUMENTS_MINI => NR==FNR: a[aufrktxt]=nummer
# CALLPARAMS_DOCUMENTS_FIELDMAPPING => NR!=FNR (Join über aufrktxt)

CALLPARAMS_DOCUMENTS_JOIN_CSV="$rmdir/webapps_callparams_documents_fieldmapping_joined.csv"
CALLPARAMS_DOCUMENTS_JOIN_EDP="$rmdir/webapps_callparams_documents_fieldmapping_joined.edp"

awk -F';' 'NR==FNR{a[$3]=$1}NR!=FNR{print $0";"(a[$2]?a[$2]";":";")}' $CALLPARAMS_DOCUMENTS_MINI $CALLPARAMS_DOCUMENTS_FIELDMAPPING > $CALLPARAMS_DOCUMENTS_JOIN_CSV
# example: (51091,87,0);V V-00-01;nein;dokumentbaurl;ja;;dokumentbaurl;DOCUMENTS;;56154;

awk -F';' 'BEGIN {OFS=";"; print "id;aufrktxt;aufrtab;buttonfeld;>ladetab;<;buttonfeld;indaufruf"} {print $1, $2, $3, $4, ";", $4, $10 }' $CALLPARAMS_DOCUMENTS_JOIN_CSV > $CALLPARAMS_DOCUMENTS_JOIN_EDP

echo "URL-Aufrufparameter den Feldern dokumentbaurl zuordnen"
echo $CALLPARAMS_DOCUMENTS_JOIN_EDP
PATESTFLAGGEN='-f298 -f261' edpimport.sh -p "$passwort" -a UPDATE -b 87:16 -I $CALLPARAMS_DOCUMENTS_JOIN_EDP >> rmtmp/webapps-loadCallparams.out 2>>rmtmp/webapps-loadCallparams.error


edpinfosys.sh -p "$passwort" -N GENAPEVENT -s 'kontexttyp=(3)',bstart= >> rmtmp/webapps-loadCallparams.out 2>>rmtmp/webapps-loadCallparams.error

myexit 0 # Nur mit myexit verlassen, wegen Aufraeumen des TMP-Verzeichnisses
