Compare commits

..

No commits in common. 'master' and 'etl_0.4_Release' have entirely different histories.

  1. 2
      .classpath
  2. 25
      build.xml
  3. 3
      src-modules/module/etl/bin/SQL_ENV_etl.sam
  4. 47
      src-modules/module/etl/bin/etl_execute_unload_job.x
  5. 47
      src-modules/module/etl/bin/etl_execute_upload_job.x
  6. 546
      src-modules/module/etl/conf/etl.xml
  7. 3
      src-modules/module/etl/conf/includes.txt
  8. 38
      src-modules/module/etl/masken/42000_felderinfo.unl
  9. 4
      src-modules/module/etl/masken/42000_masken_felder_bez.unl
  10. 68
      src-modules/module/etl/schluesseltabellen/create_load_etl_masken.sql
  11. 22
      src-modules/module/etl/schluesseltabellen/create_load_etl_qa_project.sql
  12. 67
      src-modules/module/etl/schluesseltabellen/create_load_etl_rpta_column_layout.sql
  13. 49
      src-modules/module/etl/schluesseltabellen/create_load_etl_sichten.sql
  14. 4
      src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl
  15. 12
      src-modules/module/etl/schluesseltabellen/etl_manager_tab_prepare.sql
  16. 187
      src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql
  17. 62
      src-modules/module/etl/schluesseltabellen/etl_step_sichten_trans.sql
  18. 52
      src-modules/module/etl/schluesseltabellen/etl_step_users_and_groups_trans.sql
  19. 1021
      src-modules/module/etl/schluesseltabellen/etl_transfer.xsl
  20. 239
      src-modules/module/etl/schluesseltabellen/fm_templates.unl
  21. 106
      src-modules/module/etl/schluesseltabellen/masken_fuellen.sql
  22. 17
      src-modules/module/etl/schluesseltabellen/themenbaum_fuellen.sql
  23. 61
      src-modules/module/etl/schluesseltabellen/trans_etl_sichten.sql
  24. 322
      src-modules/module/etl/schluesseltabellen/trans_rpta_column_layout.sql
  25. 42
      src-modules/module/etl/upgrade/etl_upgrade_man.sql
  26. 7
      src/de/superx/elt/EtlActionJob.java
  27. 137
      src/de/superx/elt/EtlFmParser.java
  28. 11
      src/de/superx/elt/EtlUtils.java
  29. 6
      src/de/superx/elt/SqlExecutor.java
  30. 2
      src/de/superx/elt/TableUploader.java
  31. 213
      src/de/superx/sxrest/JobEtlXml.java
  32. 5
      src/de/superx/sxrest/MaskXml.java
  33. BIN
      superx/WEB-INF/lib/superx-etl.jar
  34. 259
      superx/edit/etl/etl_job_bearbeiten.jsp
  35. 158
      superx/edit/etl/etl_job_param_bearbeiten.jsp
  36. 360
      superx/edit/etl/etl_manager.jsp
  37. 218
      superx/edit/etl/etl_step_bearbeiten.jsp
  38. 150
      superx/edit/etl/etl_step_property_bearbeiten.jsp
  39. 109
      superx/edit/etl/etl_step_type_liste.jsp
  40. 143
      superx/edit/etl/saveEtlXml.jsp
  41. 54
      superx/images/downloadblck.svg
  42. 55
      superx/images/eye.svg
  43. 63
      superx/images/resultset_up.svg

2
.classpath

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
<classpathentry kind="src" path="src"/>
<classpathentry kind="lib" path="/kern/superx/WEB-INF/lib/freemarker-2.3.25.jar"/>
<classpathentry kind="lib" path="/kern/superx/WEB-INF/lib/postgresql-42.2.19.jar"/>
<classpathentry kind="lib" path="/kern/superx/WEB-INF/lib/superx5.0.jar"/>
<classpathentry kind="lib" path="/kern/superx/WEB-INF/lib/saxon-he-10.5.jar"/>
<classpathentry kind="lib" path="/kern/superx/WEB-INF/lib_ext/servlet-api.jar"/>
<classpathentry kind="lib" path="/kern/superx/WEB-INF/lib/jersey-core-1.11.jar"/>
@ -18,6 +19,5 @@ @@ -18,6 +19,5 @@
<classpathentry kind="lib" path="/kern/superx/WEB-INF/lib/dom4j-1.6.1.jar"/>
<classpathentry kind="lib" path="/kern/superx/WEB-INF/lib/kettle-engine-6.0.0.0-353.jar"/>
<classpathentry kind="lib" path="/kern/superx/WEB-INF/lib/metastore-6.0.0.0-353.jar"/>
<classpathentry kind="lib" path="/kern/superx/WEB-INF/lib/superx5.2.jar" sourcepath="/kern/src/"/>
<classpathentry kind="output" path="superx/WEB-INF/classes"/>
</classpath>

25
build.xml

@ -76,8 +76,6 @@ ant -DWEBAPP=$WEBAPP cleanBuildPath @@ -76,8 +76,6 @@ ant -DWEBAPP=$WEBAPP cleanBuildPath
<antcall target="module_copy_source" />
<antcall target="call_module_scripts_create_ant" />
<antcall target="module_copy_webapp_files" />
<antcall target="generate_etl_jobs" />
</target>
<target name="module_copy_source" description="Gruppe: Kopiere Modul Sourcen in den WEB-INF-Verzeichnisbaum">
<echo message="Start module_copy_sources für Modul ${MODULE} in Pfad ${MODULE_PATH}" />
@ -101,29 +99,6 @@ ant -DWEBAPP=$WEBAPP cleanBuildPath @@ -101,29 +99,6 @@ ant -DWEBAPP=$WEBAPP cleanBuildPath
<chmod dir="${MODULE_PATH}/rohdaten" perm="ugo+x" includes="**/*.x" />
</target>
<target name="generate_etl_jobs" description="generiert die ETL Scripte für Sonderladeroutinen" >
<echo message="Start etl-job users_and_groups für Modul ${MODULE} in Pfad ${MODULE_PATH}" />
<xslt in="${MODULE_PATH}/conf/${MODULE}.xml" style="${MODULE_PATH}/schluesseltabellen/etl_transfer.xsl"
out="${MODULE_PATH}/schluesseltabellen/etl_step_users_and_groups.sql" force="true">
<outputproperty name="method" value="text" />
<param name="job" expression="users_and_groups" />
</xslt>
<echo message="Datei erzeugt: ${MODULE_PATH}/schluesseltabellen/etl_step_users_and_groups.sql" />
<xslt in="${MODULE_PATH}/conf/${MODULE}.xml" style="${MODULE_PATH}/schluesseltabellen/etl_transfer.xsl"
out="${MODULE_PATH}/schluesseltabellen/etl_step_sichten.sql" force="true">
<outputproperty name="method" value="text" />
<param name="job" expression="sichten" />
</xslt>
<echo message="Datei erzeugt: ${MODULE_PATH}/schluesseltabellen/etl_step_sichten.sql" />
<xslt in="${MODULE_PATH}/conf/${MODULE}.xml" style="${MODULE_PATH}/schluesseltabellen/etl_transfer.xsl"
out="${MODULE_PATH}/schluesseltabellen/etl_step_sx_captions.sql" force="true">
<outputproperty name="method" value="text" />
<param name="job" expression="sx_captions" />
</xslt>
<echo message="Datei erzeugt: ${MODULE_PATH}/schluesseltabellen/etl_step_sx_captions.sql" />
</target>
<target name="module_copy_webapp_files" description="Kopiere webapp-Dateien in den WEBAPP-Verzeichnisbaum">
<echo message="Start module_copy_webapp_files für Modul ${MODULE} in Pfad ${MODULE_PATH}" />
<copy todir="${WEBAPP}" overwrite="true">

3
src-modules/module/etl/bin/SQL_ENV_etl.sam

@ -13,7 +13,4 @@ ETL_LOGMAIL=$LOGMAIL; export ETL_LOGMAIL @@ -13,7 +13,4 @@ ETL_LOGMAIL=$LOGMAIL; export ETL_LOGMAIL
PATH=$ETL_PFAD/bin:$PATH
export PATH
JAVA_OPTS="$JAVA_OPTS -DSUPERX_DIR=$SUPERX_DIR"
export JAVA_OPTS

47
src-modules/module/etl/bin/etl_execute_unload_job.x

@ -1,47 +0,0 @@ @@ -1,47 +0,0 @@
#!/bin/bash
#Änderungen
#---------------------------------------------------------------------
# Shell-Kommando "etl_execute_unload_job.x"
#
#---------------------------------------------------------------------
if [ "$1" = "" ]
then echo "Aufruf: etl_execute_unload_job.x job_uniquename FILTER <Ausgabedatei (optional)>"
echo " "
echo "Aktion: etl_execute_unload_job.x entlaedt Tabellen."
echo " Mit Hilfe von etl_execute_upload_job.x koennen diese Daten importiert werden."
echo " "
exit 0
fi
#-------------------------------------------------------------------
#-- Metadaten entladen
#-------------------------------------------------------------------
JOB_UNIQUENAME=$1
FILTER=$2
if [ "$3" == "" ]
then outfile=$JOB_UNIQUENAME.xml
else
outfile=$3
fi
SX_CLIENT=jdbc
export SX_CLIENT
CP=".:$JDBC_CLASSPATH"
CMD="java $JAVA_OPTS -cp $CP de.superx.elt.bin.EtlJobExecutor -dbproperties:$DB_PROPERTIES -job:$JOB_UNIQUENAME -outfile:$outfile -params:$FILTER"
echo $CMD
$CMD

47
src-modules/module/etl/bin/etl_execute_upload_job.x

@ -1,47 +0,0 @@ @@ -1,47 +0,0 @@
#!/bin/bash
#Änderungen
#---------------------------------------------------------------------
# Shell-Kommando "etl_execute_unload_job.x"
#
#---------------------------------------------------------------------
if [ "$1" = "" ]
then echo "Aufruf: etl_execute_upload_job.x job_uniquename FILTER <Eingabedatei (optional)>"
echo " "
echo "Aktion: etl_execute_upload_job.x laedt Tabellen."
echo " "
echo " "
exit 0
fi
#-------------------------------------------------------------------
#-- Metadaten entladen
#-------------------------------------------------------------------
JOB_UNIQUENAME=$1
FILTER=$2
if [ "$3" == "" ]
then infile=$JOB_UNIQUENAME.xml
else
infile=$3
fi
SX_CLIENT=jdbc
export SX_CLIENT
CP=".:$JDBC_CLASSPATH"
CMD="java $JAVA_OPTS -cp $CP de.superx.elt.bin.EtlJobExecutor -dbproperties:$DB_PROPERTIES -job:$JOB_UNIQUENAME -params:PATH_TO_INPUTFILE=$infile"
echo $CMD
$CMD

546
src-modules/module/etl/conf/etl.xml

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE module SYSTEM "../../../conf/superx-module.dtd"> -->
<module name="etl" version="0.6" sachgebiet_id="270"
<module name="etl" version="0.4b" sachgebiet_id="270"
sachgebiet="Laderoutinen" systeminfo_id="270"
system="Laderoutinen" thema="Laderoutinen" thema_parent="Abfragen">
<database name="superx" system="superx">
@ -9,256 +9,6 @@ system="Laderoutinen" thema="Laderoutinen" thema_parent="Abfragen"> @@ -9,256 +9,6 @@ system="Laderoutinen" thema="Laderoutinen" thema_parent="Abfragen">
rightname="CS_BIA_STANDARDREPORTS_ADMIN[ETL]" />
</sachgebiete>
<!--die folgenden Tabellen sind Teil des Kernmoduls und müssen auskommentiert bleiben-->
<!--
<table name="etl_step" thema="Administration" releaseUnload="demo"
typ="Schlüsseltabelle">
<description>Schlüsseltabelle für Ladeschritte</description>
<columns>
<column name="tid" type="SERIAL" size="" default=""
notnull="true" description="tid" isKey="true" />
<column name="uniquename" type="VARCHAR" size="255" default=""
notnull="true" description="Unique Name" />
<column name="caption" type="VARCHAR" size="255" default=""
notnull="" description="Bezeichnung" />
<column name="systeminfo_id" type="INTEGER" size="" default=""
notnull="true" description="Komponente" />
<column name="step_type_id" type="INTEGER" size="2" default=""
notnull="true" description="Typ des Schrittes">
<comment>1=Gruppierung,
2=Loadtable,3=nativeaction,4=loadmask,5=select</comment>
</column>
<column name="logfile" type="VARCHAR" size="255" default=""
notnull="false" description="Logdatei" />
<column name="custom_step" type="SMALLINT" size="255"
default="1" notnull="false" description="Ladeschritt custom">
<comment>1=ja, d.h. von der Hochschule angepaßt, 0=nein, d.h.
Auslieferung der Software</comment>
</column>
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>etl_step</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>etl_step_pk</fld>
</row>
</rs>
</primaryKeys>
<indexes>
</indexes>
</table>
<table name="etl_step_type" thema="Administration" releaseUnload="demo"
typ="Schlüsseltabelle">
<description>Schlüsseltabelle für Arten von Ladeschritten, z.B.
loadtable, nativeaction,unload</description>
<columns>
<column name="tid" type="SERIAL" size="" default=""
notnull="true" description="tid" isKey="true" />
<column name="uniquename" type="VARCHAR" size="255" default=""
notnull="true" description="Unique Name" />
<column name="caption" type="VARCHAR" size="255" default=""
notnull="" description="Bezeichnung" />
<column name="handler" type="VARCHAR" size="255" default=""
notnull="false" description="Handler-Anwendung" />
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>etl_step_type</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>etl_step_type_pk</fld>
</row>
</rs>
</primaryKeys>
<indexes>
</indexes>
</table>
<table name="etl_step_type_param" thema="Administration" releaseUnload="demo"
typ="Schlüsseltabelle">
<description>Schlüsseltabelle für Parameter für Arten von
Ladeschritten</description>
<columns>
<column name="tid" type="SERIAL" size="" default=""
notnull="true" description="tid" isKey="true" />
<column name="etl_step_type_id" type="INTEGER" size=""
default="" notnull="true" description="Arten des Ladeschritts" />
<column name="uniquename" type="VARCHAR" size="255" default=""
notnull="true" description="Unique Name" />
<column name="name" type="VARCHAR" size="255" default=""
notnull="" description="Bezeichnung" />
<column name="param_default" type="VARCHAR" size="255"
default="" notnull="false" description="Defaultwert" />
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>etl_step_type_param</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>etl_step_type_param_pk</fld>
</row>
</rs>
</primaryKeys>
<indexes>
</indexes>
</table>
<table name="etl_step_property" thema="Administration" releaseUnload="demo"
typ="Schlüsseltabelle">
<description>Schlüsseltabelle für Eigenschaften von Ladeschritten
</description>
<columns>
<column name="tid" type="SERIAL" size="" default=""
notnull="true" description="tid" isKey="true" />
<column name="etl_step_id" type="INTEGER" size="" default=""
notnull="true" description="Arten des Ladeschritts" />
<column name="prop_name" type="VARCHAR" size="255" default=""
notnull="" description="Bezeichnung" />
<column name="prop_value" type="TEXT" size="255" default=""
notnull="false" description="Wert" />
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>etl_step_property</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>etl_step_property_pk</fld>
</row>
</rs>
</primaryKeys>
<indexes>
</indexes>
</table>
<table name="etl_step_relation" thema="Administration" releaseUnload="demo"
typ="Schlüsseltabelle">
<description>Schlüsseltabelle für Beziehungen zwischen Ladeschritten,
und Ausführungssteuerung</description>
<columns>
<column name="tid" type="SERIAL" size="" default=""
notnull="true" description="tid" isKey="true" />
<column name="step_id" type="INTEGER" size="2" default=""
notnull="true" description="Ladeschritt"></column>
<column name="parent_step_id" type="INTEGER" size="2"
default="" notnull="false" description="Übergeordneter Ladeschritt"></column>
<column name="job_id" type="INTEGER" size="2" default=""
notnull="true" description="Ladejob"></column>
<column name="force_continue" type="SMALLINT" size="2"
default="1" notnull="false"
description="Ladejob bei Fehler weiterführen"></column>
<column name="step_active" type="SMALLINT" size="2"
default="1" notnull="false" description="Ladeschritt aktiv"></column>
<column name="sortnr" type="INTEGER" size="2" default="1"
notnull="false" description="Ladeschritt Sortiernr."></column>
<column name="custom_step" type="SMALLINT" size="2"
default="1" notnull="false" description="Ladeschritt custom">
<comment>1=ja, d.h. von der Hochschule angepaßt, 0=nein, d.h.
Auslieferung der Software</comment>
</column>
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>etl_step_relation</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>etl_step_relation_pk</fld>
</row>
</rs>
</primaryKeys>
<indexes>
</indexes>
</table>
<table name="etl_job" thema="Administration" releaseUnload="demo"
typ="Schlüsseltabelle">
<description>Schlüsseltabelle für Ladejobs</description>
<columns>
<column name="tid" type="SERIAL" size="" default=""
notnull="true" description="tid" isKey="true" />
<column name="uniquename" type="VARCHAR" size="255" default=""
notnull="true" description="Schlüssel" />
<column name="caption" type="VARCHAR" size="255" default=""
notnull="" description="Bezeichnung" />
<column name="systeminfo_id" type="INTEGER" size="" default=""
notnull="true" description="Komponente" />
<column name="logfile" type="VARCHAR" size="255" default=""
notnull="false" description="Logdatei" />
<column name="custom_job" type="SMALLINT" size="255"
default="1" notnull="false" description="Job custom">
<comment>1=ja, d.h. von der Hochschule angepaßt, 0=nein, d.h.
Auslieferung der Software von HIS, 2=Auslieferung durch SuperX</comment>
</column>
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>etl_job</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>etl_job_pk</fld>
</row>
</rs>
</primaryKeys>
<indexes>
<index name="ix_etl_job1" type="unique">
<index-column name="uniquename" />
</index>
</indexes>
</table>
<table name="etl_job_param" thema="Administration" releaseUnload="demo"
typ="Schlüsseltabelle">
<description>Schlüsseltabelle für Parameter für Ladejobs</description>
<columns>
<column name="tid" type="SERIAL" size="" default=""
notnull="true" description="tid" isKey="true" />
<column name="etl_job_id" type="INTEGER" size="" default=""
notnull="true" description="Ladejob" />
<column name="uniquename" type="VARCHAR" size="255" default=""
notnull="true" description="Schlüssel" />
<column name="name" type="VARCHAR" size="255" default=""
notnull="" description="Bezeichnung" />
<column name="param_default" type="VARCHAR" size="255"
default="" notnull="false" description="Defaultwert" />
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>etl_job_param</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>etl_job_param_pk</fld>
</row>
</rs>
</primaryKeys>
<indexes>
</indexes>
</table>-->
<table name="etl_job_metadata" thema="Administration" releaseUnload="demo"
typ="Schlüsseltabelle">
<description>Schlüsseltabelle für Metadaten Ladejobs</description>
@ -288,48 +38,6 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[ETL]" /> @@ -288,48 +38,6 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[ETL]" />
<indexes>
</indexes>
</table>
<table name="etl_manager_tab" thema="Administration" releaseUnload="demo"
typ="Schlüsseltabelle">
<description>Schlüsseltabelle für Ladejob im ETL-Manager</description>
<columns>
<column name="tid" type="SERIAL" size="" default=""
notnull="true" description="tid" isKey="true" />
<column name="uniquename" type="VARCHAR" size="255" default=""
notnull="true" description="Unique Name" />
<column name="caption" type="VARCHAR" size="255" default=""
notnull="" description="Bezeichnung" />
<column name="systeminfo_id" type="INTEGER" size="" default=""
notnull="true" description="Komponente" />
<column name="job_export" type="VARCHAR" size="255" default=""
notnull="" description="Job zum Exportieren" />
<column name="job_import" type="VARCHAR" size="255" default=""
notnull="" description="Job zum Importieren" />
<column name="job_param_ui" type="VARCHAR" size="255" default=""
notnull="" description="Identifikator im Job" />
<column name="maskeninfo_id" type="INTEGER" size="" default=""
notnull="false" description="Maske (für Suche/Auswahl)" />
<column name="felderinfo_id" type="INTEGER" size="" default=""
notnull="false" description="Maskenfeld (für Suche/Auswahl)" />
<column name="active" type="INTEGER" size="" default="1"
notnull="true" description="Aktiv" />
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>etl_manager_tab</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>etl_manager_tab_pk</fld>
</row>
</rs>
</primaryKeys>
<indexes>
</indexes>
</table>
<views>
</views>
@ -384,13 +92,7 @@ parent="Laderoutinen">Abfragen zur Administration</thema> @@ -384,13 +92,7 @@ parent="Laderoutinen">Abfragen zur Administration</thema>
displayType="select" visibleFields="caption" format="%s">
<relation-column from="tid" to="parent_step_id" />
</relation>
<!-- etl_job_param -->
<relation from="etl_job" to="etl_job_param" delete="FALSE"
displayType="select" visibleFields="caption" format="%s">
<relation-column from="tid" to="etl_job_id" />
</relation>
</data-integrity>
</data-integrity>
</database>
<install_upgrade_job>
@ -446,9 +148,7 @@ parent="Laderoutinen">Abfragen zur Administration</thema> @@ -446,9 +148,7 @@ parent="Laderoutinen">Abfragen zur Administration</thema>
</action>
</install-upgrade-step>
<install-upgrade-step name="install_masks" type="container" id="etl_install_masks_containernode">
<action error="stop">
<loadtable refresh="true" delimiter="^" header="false" tabname="etl_step_type"><file path="$ETL_PFAD/schluesseltabellen/etl_step_type.unl"/></loadtable>
</action>
<action error="stop"/>
</install-upgrade-step>
</install_upgrade_job>
@ -461,196 +161,19 @@ parent="Laderoutinen">Abfragen zur Administration</thema> @@ -461,196 +161,19 @@ parent="Laderoutinen">Abfragen zur Administration</thema>
<nativeaction sql="update systeminfo set datum=today() where tid in (270)" scriptfile="" database=""/>
</action>
</etl-step>
<etl-step id="users_and_groups" name="Konfiguration User/Gruppen" type="manual" generateExecutable="etl_transfer" visible="true" active="true">
<description>Entlädt und lädt die User- und Gruppen-Rechtetabellen zur Übertragung in eine andere Säule </description>
<etl_transfer>
<etl_transfer_params>
<etl_transfer_param name="TID">
<description>Userinfo-ID. Wenn 0, dann werden alle User geladen</description>
<default>0</default>
</etl_transfer_param>
</etl_transfer_params>
<etl_transfer_groups>
<etl_transfer_group uniquename="user_stammdaten">User-Daten</etl_transfer_group>
<etl_transfer_group uniquename="group_stammdaten">Gruppen-Daten</etl_transfer_group>
</etl_transfer_groups>
<etl_transfer_tables>
<etl_transfer_table name="userinfo" transfer_group="user_stammdaten">
<whereclause>tid=$TID or $TID=0</whereclause>
<orderclause>benutzer</orderclause>
</etl_transfer_table>
<etl_transfer_table name="user_institution" transfer_group="user_stammdaten">
<whereclause> userid=$TID or $TID=0</whereclause>
<orderclause>1,2</orderclause>
</etl_transfer_table>
<etl_transfer_table name="user_masken_bez" transfer_group="user_stammdaten">
<whereclause> userinfo_id=$TID or $TID=0</whereclause>
<orderclause>1,2</orderclause>
</etl_transfer_table>
<etl_transfer_table name="user_sachgeb_bez" transfer_group="user_stammdaten">
<whereclause> userinfo_id=$TID or $TID=0</whereclause>
<orderclause>1,2</orderclause>
</etl_transfer_table>
<etl_transfer_table name="user_pw" transfer_group="user_stammdaten">
<whereclause> userinfo_id=$TID or $TID=0</whereclause>
<orderclause>1</orderclause>
</etl_transfer_table>
<etl_transfer_table name="user_sichtarten" transfer_group="user_stammdaten">
<whereclause> userinfo_id=$TID or $TID=0</whereclause>
<orderclause>1,2</orderclause>
</etl_transfer_table>
<etl_transfer_table name="user_sichten" transfer_group="user_stammdaten">
<whereclause> userinfo_id=$TID or $TID=0</whereclause>
<orderclause>1,2</orderclause>
</etl_transfer_table>
<!--gruppen:-->
<etl_transfer_table name="groupinfo" transfer_group="group_stammdaten">
<whereclause> tid in (select groupinfo_id from user_group_bez B
where B.userinfo_id=$TID)
or $TID=0 </whereclause>
<orderclause>name</orderclause>
</etl_transfer_table>
<etl_transfer_table name="group_field_pref" transfer_group="group_stammdaten">
<whereclause> groupinfo_id in (select groupinfo_id from user_group_bez B
where B.userinfo_id=$TID)
or $TID=0 </whereclause>
<orderclause>1,2</orderclause>
</etl_transfer_table>
<etl_transfer_table name="group_masken_bez" transfer_group="group_stammdaten">
<whereclause> groupinfo_id in (select groupinfo_id from user_group_bez B
where B.userinfo_id=$TID)
or $TID=0 </whereclause>
<orderclause>1,2</orderclause>
</etl_transfer_table>
<etl_transfer_table name="group_sachgeb_bez" transfer_group="group_stammdaten">
<whereclause> groupinfo_id in (select groupinfo_id from user_group_bez B
where B.userinfo_id=$TID)
or $TID=0 </whereclause>
<orderclause>1,2</orderclause>
</etl_transfer_table>
<etl_transfer_table name="group_sichtarten" transfer_group="group_stammdaten">
<whereclause> groupinfo_id in (select groupinfo_id from user_group_bez B
where B.userinfo_id=$TID)
or $TID=0 </whereclause>
<orderclause>1,2</orderclause>
</etl_transfer_table>
<etl_transfer_table name="group_sichten" transfer_group="group_stammdaten">
<whereclause> groupinfo_id in (select groupinfo_id from user_group_bez B
where B.userinfo_id=$TID)
or $TID=0 </whereclause>
<orderclause>1,2</orderclause>
</etl_transfer_table>
<etl_transfer_table name="user_group_bez" transfer_group="group_stammdaten">
<whereclause> groupinfo_id in (select groupinfo_id from user_group_bez B
where B.userinfo_id=$TID)
or $TID=0 </whereclause>
<orderclause>1,2</orderclause>
</etl_transfer_table>
</etl_transfer_tables>
<etl_nativeactions>
<etl_nativeaction name="Trans-Schritt_users_groups" filename="$SUPERX_DIR/db/module/etl/schluesseltabellen/etl_step_users_and_groups_trans.sql" />
</etl_nativeactions>
</etl_transfer>
</etl-step>
<etl-step id="sichten" name="Sichten" type="manual" generateExecutable="etl_transfer" visible="true" active="true">
<description>Entlädt und lädt die Sichten zur Übertragung in eine andere Säule </description>
<etl_transfer>
<etl_transfer_params>
<etl_transfer_param name="TID">
<description>Sicht-TID. Wenn 0, dann werden alle Sichten geladen</description>
<default>0</default>
</etl_transfer_param>
</etl_transfer_params>
<etl_transfer_groups>
<etl_transfer_group uniquename="sichten_stammdaten">Sichten</etl_transfer_group>
</etl_transfer_groups>
<etl_transfer_tables>
<etl_transfer_table name="sichten" transfer_group="sichten_stammdaten">
<whereclause>tid=$TID or $TID=0</whereclause>
<orderclause>name_intern</orderclause>
</etl_transfer_table>
</etl_transfer_tables>
<etl_nativeactions>
<etl_nativeaction name="Trans-Schritt_sichten" filename="$SUPERX_DIR/db/module/etl/schluesseltabellen/etl_step_sichten_trans.sql" />
</etl_nativeactions>
</etl_transfer>
</etl-step>
<etl-step id="sx_captions" name="Beschriftungen" type="manual" generateExecutable="etl_transfer" visible="true" active="true">
<description>Entlädt und lädt die Beschriftungen zur Übertragung in eine andere Säule </description>
<etl_transfer>
<etl_transfer_params>
<etl_transfer_param name="TID">
<description>Caption-TID. Wenn 0, dann werden alle Beschriftungen geladen</description>
<default>0</default>
</etl_transfer_param>
</etl_transfer_params>
<etl_transfer_groups>
<etl_transfer_group uniquename="sx_captions_stammdaten">Beschriftungen</etl_transfer_group>
</etl_transfer_groups>
<etl_transfer_tables>
<etl_transfer_table name="sx_captions" transfer_group="sx_captions_stammdaten">
<whereclause>tid=$TID or $TID=0</whereclause>
<orderclause>id,table_name,field_name,record_no,locale</orderclause>
</etl_transfer_table>
</etl_transfer_tables>
<etl_nativeactions>
<etl_nativeaction name="Trans-Schritt_sx_captions" filename="$SUPERX_DIR/db/module/etl/schluesseltabellen/etl_step_sx_captions_trans.sql" />
</etl_nativeactions>
</etl_transfer>
</etl-step>
</etl>
<install>
<install-step name="Füllen der Modul-Tabellen">
<action error="stop">
<loadtable refresh="true" delimiter="^" header="false" tabname="etl_manager_tab"><file path="$ETL_PFAD/schluesseltabellen/etl_manager_tab.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="etl_step_type"><file path="$ETL_PFAD/schluesseltabellen/etl_step_type.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="etl_manager_tab"><file path="$ETL_PFAD/schluesseltabellen/etl_manager_tab.unl"/></loadtable>
<nativeaction sql="" scriptfile="$ETL_PFAD/schluesseltabellen/sachgebiete_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$ETL_PFAD/schluesseltabellen/etl_step_fuellen.sql" database=""/>
<!--<nativeaction sql="" scriptfile="$ETL_PFAD/schluesseltabellen/etl_step_users_groups.sql" database=""/>-->
<nativeaction sql="" scriptfile="$ETL_PFAD/schluesseltabellen/etl_step_sichten.sql" database=""/>
<nativeaction sql="" scriptfile="$ETL_PFAD/schluesseltabellen/etl_step_sx_captions.sql" database=""/>
<!--<nativeaction sql="" scriptfile="$ETL_PFAD/schluesseltabellen/sx_jobs_fuellen.sql" database=""/>-->
</action>
<action>
<nativeaction sql="" scriptfile="$ETL_PFAD/schluesseltabellen/etl_manager_tab_prepare.sql" database=""/>
</action>
</install-step>
</install>
@ -670,23 +193,12 @@ version integer @@ -670,23 +193,12 @@ version integer
<action error="stop">
<loadtable refresh="true" delimiter="^" header="false" tabname="tmp_templates"><file path="$ETL_PFAD/schluesseltabellen/fm_templates.unl"/></loadtable>
<nativeaction sql="" scriptfile="$ETL_PFAD/schluesseltabellen/fm_templates_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$ETL_PFAD/upgrade/etl_upgrade_man.sql" database=""/>
</action>
<action error="stop">
<loadtable refresh="true" delimiter="^" header="false" tabname="etl_manager_tab"><file path="$ETL_PFAD/schluesseltabellen/etl_manager_tab.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="etl_step_type"><file path="$ETL_PFAD/schluesseltabellen/etl_step_type.unl"/></loadtable>
<nativeaction sql="" scriptfile="$ETL_PFAD/schluesseltabellen/etl_step_fuellen.sql" database=""/>
<!--<nativeaction sql="" scriptfile="$ETL_PFAD/schluesseltabellen/etl_step_users_groups.sql" database=""/>-->
<nativeaction sql="" scriptfile="$ETL_PFAD/schluesseltabellen/etl_step_sichten.sql" database=""/>
<nativeaction sql="" scriptfile="$ETL_PFAD/schluesseltabellen/etl_step_sx_captions.sql" database=""/>
<nativeaction sql="" scriptfile="$ETL_PFAD/schluesseltabellen/sachgebiete_fuellen.sql" database=""/>
</action>
<action>
<nativeaction sql="" scriptfile="$ETL_PFAD/schluesseltabellen/etl_manager_tab_prepare.sql" database=""/>
</action>
</upgrade-step>
</upgrade>
@ -733,7 +245,7 @@ mode="update_insert_delete_copy"> @@ -733,7 +245,7 @@ mode="update_insert_delete_copy">
<customfield name="job_id" type="hidden" overrideValue="tid" />
<customfield name="name" nullFieldValue="" visibleSize="30" />
<customfield name="uniquename" visibleSize="50" nullFieldValue="" />
<customfield type="link" name="Details" path="/superx/edit/etl/etl_job_param_edit.jsp" linkVar="tid" linkid="tid"/>
<customfield name="param_default" nullFieldValue="" visibleSize="30" />
</customfield>
<customfield name="Ladeschritte" type="subform" multipart="false" autoUpdate="false"
maxRows="*" table="etl_step_relation" parentField="tid" childField="job_id"
@ -752,50 +264,6 @@ mode="update_insert_delete_copy"> @@ -752,50 +264,6 @@ mode="update_insert_delete_copy">
</customfield>
</form>
<form name="etl_step_property_edit"
table="etl_step_property"
path="/edit/etl/etl_step_property_edit.jsp"
followUp=""
caption="Eigenschaften von für Ladeschritten verwalten"
orderBy=""
gotoHt=""
helpfile=""
maxRows="1"
mode="full">
<description>In diesem Formular können Sie Parameter für Ladejobs verwalten.</description>
<filters>
<filter mandatory="true" type="equals">tid</filter>
</filters>
<field-selection complete="false" />
<customfield name="tid" nullFieldValue="" />
<customfield name="etl_step_id" nullFieldValue="" visibleSize="30" />
<customfield name="prop_name" nullFieldValue="" visibleSize="30" />
<customfield name="prop_value" nullFieldValue="" pattern="" visibleSize="50" />
</form>
<form name="etl_job_param_edit"
table="etl_job_param"
path="/edit/etl/etl_job_param_edit.jsp"
followUp=""
caption="Parameter für Ladejobs verwalten"
orderBy=""
gotoHt=""
helpfile=""
maxRows="1"
mode="full">
<description>In diesem Formular können Sie Parameter für Ladejobs verwalten.</description>
<filters>
<filter mandatory="true" type="equals">tid</filter>
</filters>
<field-selection complete="false" />
<customfield name="tid" nullFieldValue="" />
<customfield name="etl_job_id" nullFieldValue="" visibleSize="30" />
<customfield name="uniquename" nullFieldValue="" visibleSize="30" />
<customfield name="name" nullFieldValue="" pattern="" visibleSize="50" />
<customfield name="param_default" nullFieldValue="" pattern="" visibleSize="50" />
</form>
<form name="etl_step_edit"
table="etl_step"
path="/edit/etl/etl_step_edit.jsp"
@ -826,12 +294,10 @@ mode="update_insert_delete_copy"> @@ -826,12 +294,10 @@ mode="update_insert_delete_copy">
<customfield name="tid" nullFieldValue="" />
<customfield name="etl_step_id" type="hidden" overrideValue="tid" />
<customfield name="prop_name" nullFieldValue="" visibleSize="30" />
<customfield type="link" name="Details" path="/superx/edit/etl/etl_step_property_edit.jsp" linkVar="tid" linkid="tid"/>
<customfield name="prop_value" visibleSize="50" nullFieldValue="" />
</customfield>
<!--<customfield name="prop_value" visibleSize="50" nullFieldValue="" />
</customfield>-->
</form>
<form name="etl_step_type_list"
table="etl_step_type"
path="/edit/etl/etl_step_type_list.jsp"

3
src-modules/module/etl/conf/includes.txt

@ -1,7 +1,4 @@ @@ -1,7 +1,4 @@
doku/etl_modul/etl.html
WEB-INF/conf/edustore/db/bin/SQL_ENV_etl.sam
WEB-INF/lib/superx-etl.jar
images/eye.svg
images/downloadblck.svg
images/resultset_up.svg

38
src-modules/module/etl/masken/42000_felderinfo.unl

@ -2,39 +2,5 @@ @@ -2,39 +2,5 @@
42001^Laderoutine^0^0^0^150^80^1^integer^200^0^1^<<SQL>> select tid,caption from etl_job order by 2;^^^
42002^Arten von Ladeschritten^100^0^0^150^300^1^char^30^0^18^^^<<SQL>>select '../edit/etl/etl_step_type_list.jsp' from xdummy;^
42003^Name^20^0^0^150^150^1^sql^50^0^0^^^^
42004^Sicht^30^0^0^150^200^20^sql^200^0^1^<<SQL>> select tid,trim(art) || '- ' || trim(name) from sichten where aktiv=1 and position('<#' in quelle) =0 order by 2;^hidden^^
42005^Job-Management^1000^0^0^150^300^1^char^30^0^18^^^<<SQL>>select '../edit/etl/etl_manager.jsp' from xdummy;^
42006^Maske^1^0^0^100^380^20^sql^30^0^1^<<SQL>> select M.tid, M.tid || ' - ' || M.name from maskeninfo M, sachgeb_maske_bez S where M.tid=S.maskeninfo_id order by 1;^hidden^^
42007^Testfall-Projekt^15^0^0^150^80^20^sql^200^0^1^<<SQL>> --freemarker template\
<sqlvars>\
<sqlvar name="QA_installed">\
select 1 from xdummy where 0 &lt; (select count(*) from db_version where his_system='qa')\
union select 0 from xdummy where \
0 = (select count(*) from db_version where his_system='qa');\
</sqlvar>\
</sqlvars>\
\
<#if QA_installed==1>\
select tid,name from qa_project where active=1 order by 2;\
<#else>\
select null::char(1),'Keine Auwahl möglich' from xdummy\
</#if>\
\
/* <<just a comment to make it a modal dialog>> */^hidden^^
42008^Spaltenlayout^15^0^0^150^80^20^sql^200^0^1^<<SQL>> --freemarker template\
<sqlvars>\
<sqlvar name="RPTA_installed">\
select 1 from xdummy where 0 &lt; (select count(*) from db_version where his_system='rpta')\
union select 0 from xdummy where \
0 = (select count(*) from db_version where his_system='rpta');\
</sqlvar>\
</sqlvars>\
\
<#if RPTA_installed==1>\
select tid,caption from rpta_column_layout order by 2;\
<#else>\
select null::char(1),'Keine Auwahl möglich' from xdummy\
</#if>\
\
/* <<just a comment to make it a modal dialog>> */^hidden^^
42009^Komponente^17^0^0^130^100^1^integer^30^0^1^<<SQL>> select tid,name from systeminfo order by 2^ ^ ^
42004^Komponente^30^0^0^150^200^1^integer^200^0^1^<<SQL>> select tid,name from systeminfo order by 2;^^^
42005^ETL-Manager^1000^0^0^150^300^1^char^30^0^18^^^<<SQL>>select '../edit/etl/etl_manager.jsp' from xdummy;^

4
src-modules/module/etl/masken/42000_masken_felder_bez.unl

@ -4,7 +4,3 @@ @@ -4,7 +4,3 @@
42000^42003^
42000^42004^
42000^42005^
42000^42006^
42000^42007^
42000^42008^
42000^42009^

68
src-modules/module/etl/schluesseltabellen/create_load_etl_masken.sql

@ -1,68 +0,0 @@ @@ -1,68 +0,0 @@
--Freemarker Template
--used in etl-job sx_insert_mask
<#if SQLdialect='Postgres'>
drop table if exists tmp_maskeninfo;
drop table if exists tmp_felderinfo;
drop table if exists tmp_masken_felder_bez;
drop table if exists tmp_sachgeb_maske_bez;
drop table if exists tmp_maske_system_bez;
</#if>
create table tmp_maskeninfo(
tid INTEGER not null,
name CHAR(255) not null,
select_stmt text ,
xil_proplist text ,
chart_xtitel CHAR(50) ,
chart_ytitel CHAR(50) ,
erlaeuterung CHAR(255) ,
cleanup_stmt CHAR(240) ,
default_file CHAR(200) ,
frontend SMALLINT ,
breite INTEGER ,
hoehe INTEGER ,
ampel SMALLINT ,
hilfe SMALLINT ,
hinweis text
)
;
create table tmp_felderinfo(
tid INTEGER not null,
name VARCHAR(255) not null,
nummer INTEGER not null,
x INTEGER ,
y INTEGER ,
buttonbreite INTEGER ,
feldbreite INTEGER ,
zeilenanzahl INTEGER ,
typ CHAR(15) ,
laenge INTEGER ,
obligatorisch INTEGER ,
art INTEGER ,
relation text ,
attribut CHAR(100) ,
defaultwert TEXT
)
;
create table tmp_masken_felder_bez(
maskeninfo_id INTEGER ,
felderinfo_id INTEGER
)
;
create table tmp_sachgeb_maske_bez(
sachgebiete_id INTEGER ,
maskeninfo_id INTEGER
)
;
create table tmp_maske_system_bez(
maskeninfo_id INTEGER not null,
systeminfo_id INTEGER not null
)
;

22
src-modules/module/etl/schluesseltabellen/create_load_etl_qa_project.sql

@ -1,22 +0,0 @@ @@ -1,22 +0,0 @@
--Freemarker Template
--used in etl-job qa_project_upload
<#if SQLdialect='Postgres'>
drop table if exists tmp_etl_qa_project;
drop table if exists tmp_etl_sachgeb_sichtarten;
</#if>
CREATE TABLE tmp_etl_qa_project(
uniquename VARCHAR(255) ,
name VARCHAR(255) ,
systeminfo_id INTEGER ,
sachgebiete_id INTEGER ,
active SMALLINT ,
created_from INTEGER ,
issue_link VARCHAR(255)
)
;

67
src-modules/module/etl/schluesseltabellen/create_load_etl_rpta_column_layout.sql

@ -1,67 +0,0 @@ @@ -1,67 +0,0 @@
--Freemarker Template
--used in etl-job qa_project_upload
<#if SQLdialect='Postgres'>
drop table if exists tmp_rpta_resultset;
drop table if exists tmp_etl_rpta_column_layout;
drop table if exists tmp_rpta_column;
drop table if exists tmp_rpta_column2layout;
</#if>
CREATE TABLE tmp_rpta_resultset (
tid integer,
caption character varying(255),
uniquename character varying(255),
fieldclause text,
joinclause text,
whereclause text,
systeminfo_id integer,
is_virtual smallint
);
CREATE TABLE tmp_etl_rpta_column_layout (
tid integer,
uniquename character varying(255),
caption character varying(255),
resultset_id integer,
whereclause text,
description text,
userinfo_id integer,
sortnr integer,
sortclause text,
is_virtual smallint,
resultset_uniquename character varying(255)
);
CREATE TABLE tmp_rpta_column (
tid integer,
uniquename character varying(255),
caption character varying(255),
srcfieldname character varying(255),
column_type integer,
col_function text,
is_aggregate smallint,
resultset_id integer,
custom integer,
description text,
targetfieldname character varying(255)
);
CREATE TABLE tmp_rpta_column2layout (
tid integer,
column_id integer,
layout_id integer,
sortnr smallint,
is_visible smallint,
visible_size smallint,
format_code varchar(255),
targetfieldname character varying(255),
caption character varying(255),
description text
);

49
src-modules/module/etl/schluesseltabellen/create_load_etl_sichten.sql

@ -1,49 +0,0 @@ @@ -1,49 +0,0 @@
--Freemarker Template
--used in etl-job sx_insert_mask
<#if SQLdialect='Postgres'>
drop table if exists tmp_etl_sichten;
drop table if exists tmp_etl_sachgeb_sichtarten;
</#if>
CREATE TABLE tmp_etl_sichten (
-- tid integer,
--
-- parent CHAR(255) ,
systeminfoid INTEGER default 0 not null,
art CHAR(40) ,
type INTEGER default 10 not null,
name_intern CHAR(200) ,
name CHAR(200) ,
-- beschreibung CHAR(255) ,
sortnr INTEGER default 0 not null,
quelle TEXT ,
-- alt_hier_id CHAR(150) ,
-- treecfgtable CHAR(255) ,
-- treecfgid CHAR(150) ,
-- label SMALLINT default 0 not null,
-- user_rechte SMALLINT default 1 not null,
-- rechtequelle CHAR(255) ,
-- sesamkey CHAR(100) ,
standbutton SMALLINT default 0 not null,
-- attribut1 CHAR(255) ,
-- attribut2 CHAR(255) ,
-- attribut3 INTEGER ,
-- attribut4 INTEGER ,
-- xmlmaxentries INTEGER ,
-- gueltig_seit DATE default date('01.01.1900') not null,
-- gueltig_bis DATE default date('01.01.3000') not null,
-- cacheapplet CHAR(255) ,
-- cachexml CHAR(255) ,
aktiv SMALLINT default 1
);
create table tmp_etl_sachgeb_sichtarten(
sachgebiete_id INTEGER ,
sichtart CHAR(255)
)
;

4
src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl

@ -1,4 +0,0 @@ @@ -1,4 +0,0 @@
1^MASK^Masken^0^sx_select_mask^sx_insert_mask^TID^42000^42006^1^
2^SICHT^Sichten^0^sichten_unload^sichten_upload^SICHTEN_TID^42000^42004^1^
3^QA_PROJECT^Testfälle^0^qa_project_unload^qa_project_upload^QA_PROJECT_ID^42000^42007^1^
4^RPTA_COLUMN_LAYOUT^Spaltenlayouts^0^rpta_column_layout_unload^rpta_column_layout_upload^RPTA_COLUMN_LAYOUT_TID^42000^42008^1^

12
src-modules/module/etl/schluesseltabellen/etl_manager_tab_prepare.sql

@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
--freemarker template
<sqlvars>
<sqlvar name="QA_installed">
select 1 from xdummy where 0 &lt; (select count(*) from db_version where his_system='qa')
union select 0 from xdummy where
0 = (select count(*) from db_version where his_system='qa');
</sqlvar>
</sqlvars>
<#if QA_installed==0>
update etl_manager_tab set active=0 where uniquename='QA_PROJECT';
</#if>

187
src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql

@ -8,11 +8,7 @@ @@ -8,11 +8,7 @@
{"uniquename":"sx_insert_mask", "name":"Maske hochladen", "systeminfo_id":270 ,"logfile":""},
{"uniquename":"kern_konstanten_update", "name":"Konstanten aktualisieren", "systeminfo_id":270 ,"logfile":""},
{"uniquename":"sichten_unload", "name":"Sichten entladen", "systeminfo_id":270 ,"logfile":""},
{"uniquename":"sichten_upload", "name":"Sichten hochladen", "systeminfo_id":270 ,"logfile":""},
{"uniquename":"sos_gewichtung_unload", "name":"Gewichtungen entladen", "systeminfo_id":270 ,"logfile":""},
{"uniquename":"qa_project_unload", "name":"Testfallprojekte entladen", "systeminfo_id":260 ,"logfile":""},
{"uniquename":"rpta_column_layout_unload", "name":"Spaltenlayout entladen", "systeminfo_id":330 ,"logfile":""},
{"uniquename":"rpta_column_layout_upload", "name":"Spaltenlayout hochladen", "systeminfo_id":330 ,"logfile":""}
{"uniquename":"sos_gewichtung_unload", "name":"Gewichtungen entladen", "systeminfo_id":270 ,"logfile":""}
] />
@ -29,29 +25,10 @@ @@ -29,29 +25,10 @@
{"etl_job":"kern_konstanten_update","param_name":"SUPERX_DIR", "name":"Superx-Pfad zu WEB-INF/conf/edustore", "param_default":"$WEBAPP/WEB-INF/conf/edustore"},
{"etl_job":"kern_konstanten_update","param_name":"PATH_TO_INPUTFILE", "name":"Eingabepfad", "param_default":"$SUPERX_DIR/db/install/schluesseltabellen/kern_feste_konstanten_fuellen.sql"},
{"etl_job":"sichten_unload","param_name":"SICHTEN_TID", "name":"Sicht", "param_default":""},
{"etl_job":"sichten_unload","param_name":"NAME_INTERN", "name":"ID", "param_default":""},
{"etl_job":"sichten_unload","param_name":"PATH_TO_OUTPUTFILE", "name":"Ausgabedatei", "param_default":"$SUPERX_DIR/db/masken/sichten.xml"},
{"etl_job":"sichten_unload","param_name":"SYSTEMINFO_ID", "name":"Komponente", "param_default":""},
{"etl_job":"sichten_unload","param_name":"PATH_TO_OUTPUTFILE", "name":"Ausgabedatei", "param_default":"$SUPERX_DIR/db/masken/sichten_$SYSTEMINFO_ID.xml"},
{"etl_job":"sichten_unload","param_name":"FORMAT", "name":"Ausgabeformat", "param_default":"XML"},
{"etl_job":"sichten_upload","param_name":"SICHTEN_TID", "name":"Sicht", "param_default":""},
{"etl_job":"sichten_upload","param_name":"NAME_INTERN", "name":"ID", "param_default":""},
{"etl_job":"sichten_upload","param_name":"PATH_TO_INPUTFILE", "name":"Eingabedatei", "param_default":""},
{"etl_job":"sichten_upload","param_name":"FORMAT", "name":"Format", "param_default":"XML"},
{"etl_job":"qa_project_unload","param_name":"QA_PROJECT_ID", "name":"Testfall-Projekt", "param_default":""},
{"etl_job":"qa_project_unload","param_name":"PATH_TO_OUTPUTFILE", "name":"Ausgabedatei", "param_default":"$SUPERX_DIR/db/masken/qa_project_$QA_PROJECT_ID.xml"},
{"etl_job":"qa_project_unload","param_name":"FORMAT", "name":"Ausgabeformat", "param_default":"XML"},
{"etl_job":"rpta_column_layout_unload","param_name":"RPTA_COLUMN_LAYOUT_TID", "name":"Spaltenlayout", "param_default":""},
{"etl_job":"rpta_column_layout_unload","param_name":"PATH_TO_OUTPUTFILE", "name":"Ausgabedatei", "param_default":"$SUPERX_DIR/db/masken/rpta_column_layout_$RPTA_COLUMN_LAYOUT_UNIQUENAME.xml"},
{"etl_job":"rpta_column_layout_unload","param_name":"FORMAT", "name":"Ausgabeformat", "param_default":"XML"},
{"etl_job":"rpta_column_layout_upload","param_name":"SYSTEMINFO_ID", "name":"Komponente", "param_default":""},
{"etl_job":"rpta_column_layout_upload","param_name":"RPTA_COLUMN_LAYOUT_TID", "name":"ID", "param_default":""},
{"etl_job":"rpta_column_layout_upload","param_name":"PATH_TO_INPUTFILE", "name":"Eingabedatei", "param_default":""},
{"etl_job":"rpta_column_layout_upload","param_name":"FORMAT", "name":"Format", "param_default":"XML"},
{"etl_job":"sos_gewichtung_unload","param_name":"SYSTEMINFO_ID", "name":"Komponente", "param_default":""},
{"etl_job":"sos_gewichtung_unload","param_name":"PATH_TO_OUTPUTFILE", "name":"Ausgabedatei", "param_default":"$SUPERX_DIR/db/db/module/sos/schluesseltabellen/sichten_$SYSTEMINFO_ID.xml"},
{"etl_job":"sos_gewichtung_unload","param_name":"FORMAT", "name":"Ausgabeformat", "param_default":"XML"}
@ -70,16 +47,21 @@ @@ -70,16 +47,21 @@
{"etl_job":"sx_select_mask", "uniquename":"unload_sx_stylesheets", "name":"sx_stylesheets entladen", "type":"UNLOAD"},
{"etl_job":"sx_select_mask", "uniquename":"unload_stylesheet_field", "name":"stylesheet_field entladen", "type":"UNLOAD"},
{"etl_job":"sx_insert_mask", "uniquename":"create_tmp_etl_masken", "name":"Tabellen tmp_etl_masken erzeugen", "type":"DOSQL" },
{"etl_job":"sx_insert_mask", "uniquename":"delete_maskeninfo", "name":"Maskeninfo löschen", "type":"DOQUERY" },
{"etl_job":"sx_insert_mask", "uniquename":"upload_maskeninfo", "name":"Maskeninfo hochladen", "type":"LOAD" },
{"etl_job":"sx_insert_mask", "uniquename":"delete_felderinfo", "name":"felderinfo löschen", "type":"DOQUERY" },
{"etl_job":"sx_insert_mask", "uniquename":"upload_felderinfo", "name":"felderinfo hochladen", "type":"LOAD" },
{"etl_job":"sx_insert_mask", "uniquename":"delete_masken_felder_bez", "name":"masken_felder_bez löschen", "type":"DOQUERY" },
{"etl_job":"sx_insert_mask", "uniquename":"upload_masken_felder_bez", "name":"masken_felder_bez hochladen", "type":"LOAD" },
{"etl_job":"sx_insert_mask", "uniquename":"delete_sachgeb_maske_bez", "name":"sachgeb_maske_bez löschen", "type":"DOQUERY" },
{"etl_job":"sx_insert_mask", "uniquename":"upload_sachgeb_maske_bez", "name":"sachgeb_maske_bez hochladen", "type":"LOAD" },
{"etl_job":"sx_insert_mask", "uniquename":"delete_maske_system_bez", "name":"maske_system_bez löschen", "type":"DOQUERY" },
{"etl_job":"sx_insert_mask", "uniquename":"upload_maske_system_bez", "name":"maske_system_bez hochladen", "type":"LOAD" },
{"etl_job":"sx_insert_mask", "uniquename":"create_tmp_etl_themenbaum", "name":"Tabelle tmp_etl_themenbaum erzeugen", "type":"DOSQL" },
{"etl_job":"sx_insert_mask", "uniquename":"create_tmp_etl_stylesheets", "name":"Tabelle tmp_etl_stylesheets erzeugen", "type":"DOSQL" },
@ -89,7 +71,6 @@ @@ -89,7 +71,6 @@
{"etl_job":"sx_insert_mask", "uniquename":"upload_tmp_etl_mask_style", "name":"tmp_etl_mask_style hochladen", "type":"LOAD" },
{"etl_job":"sx_insert_mask", "uniquename":"upload_tmp_etl_stylesheet_field", "name":"tmp_etl_stylesheet_field hochladen", "type":"LOAD" },
{"etl_job":"sx_insert_mask", "uniquename":"masken_fuellen", "name":"masken_fuellen", "type":"DOSQL" },
{"etl_job":"sx_insert_mask", "uniquename":"themenbaum_fuellen", "name":"themenbaum_fuellen", "type":"DOSQL" },
{"etl_job":"sx_insert_mask", "uniquename":"sx_stylesheets_fuellen", "name":"sx_stylesheets_fuellen", "type":"DOSQL" },
@ -97,75 +78,53 @@ @@ -97,75 +78,53 @@
{"etl_job":"sichten_unload", "uniquename":"unload_sichten_ges", "name":"Sichten entladen", "type":"MSG"},
{"etl_job":"sichten_unload", "uniquename":"unload_sichtentab", "name":"Sichten entladen", "type":"UNLOAD", "parent":"unload_sichten_ges"},
{"etl_job":"sichten_unload", "uniquename":"unload_sichten_sachgeb", "name":"Sachgebiete von Sichten entladen", "type":"UNLOAD", "parent":"unload_sichten_ges"},
{"etl_job":"sichten_unload", "uniquename":"unload_sichten_sachgeb", "name":"Sachgebiete von Sichtarten entladen", "type":"UNLOAD", "parent":"unload_sichten_ges"},
{"etl_job":"sichten_upload", "uniquename":"create_tmp_etl_sichten", "name":"Tabelle tmp_etl_sichten erzeugen", "type":"DOSQL" },
{"etl_job":"sichten_upload", "uniquename":"upload_tmp_etl_sichten", "name":"tmp_etl_sichten hochladen", "type":"LOAD" },
{"etl_job":"sichten_upload", "uniquename":"upload_tmp_etl_sachgeb_sichtarten", "name":"upload_tmp_etl_sachgeb_sichtarten hochladen", "type":"LOAD" },
{"etl_job":"sichten_upload", "uniquename":"trans_etl_sichten", "name":"etl_sichten füllen", "type":"DOSQL" },
{"etl_job":"sos_gewichtung_unload", "uniquename":"unload_sos_gewichtung_ges", "name":"Gewichtungen entladen", "type":"MSG"},
{"etl_job":"sos_gewichtung_unload", "uniquename":"unload_sos_gewichtung", "name":"Gewichtungen entladen", "type":"UNLOAD", "parent":"unload_sos_gewichtung_ges"},
{"etl_job":"qa_project_unload", "uniquename":"qa_project_unload_ges", "name":"Testfall-Projekt entladen", "type":"MSG"},
{"etl_job":"qa_project_unload", "uniquename":"unload_qa_project_tab", "name":"Projekte entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
{"etl_job":"qa_project_unload", "uniquename":"unload_qa_resultset_tab", "name":"Resultsets entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
{"etl_job":"qa_project_unload", "uniquename":"unload_qa_dbtest_tab", "name":"DB-Tests entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
{"etl_job":"qa_project_unload", "uniquename":"unload_qa_dbtest_assertion_tab", "name":"DB-Test Erwartungen entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
{"etl_job":"qa_project_unload", "uniquename":"unload_qa_dbtest2project_tab", "name":"DB-Test zu Projekt entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
{"etl_job":"qa_project_unload", "uniquename":"unload_qa_mask_execution_tab", "name":"Masken-Tests entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
{"etl_job":"qa_project_unload", "uniquename":"unload_qa_mask_execution_assert_tab", "name":"Masken-Test Erwartungen entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
{"etl_job":"qa_project_unload", "uniquename":"unload_qa_mask_execution2project_tab", "name":"Masken-Test zu Projekt entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
{"etl_job":"rpta_column_layout_unload", "uniquename":"rpta_column_layout_unload_ges", "name":"Spaltenlayout-Projekt entladen", "type":"MSG"},
{"etl_job":"rpta_column_layout_unload", "uniquename":"unload_rpta_resultset_tab", "name":"Resultset entladen", "type":"UNLOAD", "parent":"rpta_column_layout_unload_ges"},
{"etl_job":"rpta_column_layout_unload", "uniquename":"unload_rpta_column_layout_tab", "name":"Spaltenlayout entladen", "type":"UNLOAD", "parent":"rpta_column_layout_unload_ges"},
{"etl_job":"rpta_column_layout_unload", "uniquename":"unload_rpta_column_tab", "name":"Spalten entladen", "type":"UNLOAD", "parent":"rpta_column_layout_unload_ges"},
{"etl_job":"rpta_column_layout_unload", "uniquename":"unload_rpta_column2layout_tab", "name":"Spalten zu Layout entladen", "type":"UNLOAD", "parent":"rpta_column_layout_unload_ges"},
{"etl_job":"rpta_column_layout_upload", "uniquename":"create_tmp_rpta_column_layout", "name":"Tabelle tmp_rpta_column_layout erzeugen", "type":"DOSQL" },
{"etl_job":"rpta_column_layout_upload", "uniquename":"upload_rpta_resultset_tab", "name":"tmp_rpta_resultset hochladen", "type":"LOAD" },
{"etl_job":"rpta_column_layout_upload", "uniquename":"upload_rpta_column_layout_tab", "name":"tmp_rpta_column_layout hochladen", "type":"LOAD" },
{"etl_job":"rpta_column_layout_upload", "uniquename":"upload_rpta_column_tab", "name":"tmp_rpta_column hochladen", "type":"LOAD" },
{"etl_job":"rpta_column_layout_upload", "uniquename":"upload_rpta_column2layout_tab", "name":"tmp_rpta_column2layout hochladen", "type":"LOAD" },
{"etl_job":"rpta_column_layout_upload", "uniquename":"trans_rpta_column_layout", "name":"rpta_column_layout füllen", "type":"DOSQL" }
{"etl_job":"sos_gewichtung_unload", "uniquename":"unload_sos_gewichtung", "name":"Gewichtungen entladen", "type":"UNLOAD", "parent":"unload_sos_gewichtung_ges"}
] />
<#assign etl_step_properties = [
{"etl_step":"unload_masken_stammdaten","prop_name":"msg", "prop_value":"Entlade Stammdaten Maske/n $TID" },
{"etl_step":"unload_maskeninfo","prop_name":"select_stmt", "prop_value":"select tid,name,select_stmt,xil_proplist,chart_xtitel,chart_ytitel,erlaeuterung,cleanup_stmt,default_file,frontend,breite,hoehe,ampel,hilfe,hinweis from maskeninfo where tid in ($TID)" },
{"etl_step":"unload_felderinfo","prop_name":"select_stmt", "prop_value":"select tid ,name,nummer,x,y,buttonbreite,feldbreite,zeilenanzahl,typ,laenge,obligatorisch,art,relation,attribut,defaultwert from felderinfo where tid in (select felderinfo_id from masken_felder_bez where maskeninfo_id in ( $TID )) order by tid" },
{"etl_step":"unload_masken_felder_bez","prop_name":"select_stmt", "prop_value":"select maskeninfo_id,felderinfo_id from masken_felder_bez where maskeninfo_id in ( $TID ) order by 1,2" },
{"etl_step":"unload_sachgeb_maske_bez","prop_name":"select_stmt", "prop_value":"select sachgebiete_id,maskeninfo_id from sachgeb_maske_bez where maskeninfo_id in ( $TID ) order by 1,2" },
{"etl_step":"unload_maske_system_bez","prop_name":"select_stmt", "prop_value":"select maskeninfo_id,systeminfo_id from maske_system_bez where maskeninfo_id in ( $TID ) order by 1,2" },
{"etl_step":"unload_themenbaum","prop_name":"select_stmt", "prop_value":"select name,maskeninfo_id,parent,(select name from themenbaum where tid=T.parent) as parent_name,gueltig_seit,gueltig_bis,erlaeuterung,sort,css_class from themenbaum T where maskeninfo_id in ( $TID ) union select name,maskeninfo_id,parent,(select name from themenbaum where tid=T.parent) as parent_name, gueltig_seit,gueltig_bis,erlaeuterung,sort,css_class from themenbaum T where T.tid=(select T2.parent from themenbaum T2 where T2.maskeninfo_id in ( $TID )) order by 2,1" },
{"etl_step":"unload_sx_mask_style","prop_name":"select_stmt", "prop_value":"select maskeninfo_id,stylesheet_id,ord,(select filename from sx_stylesheets where tid=S.stylesheet_id) as stylesheet_filename from sx_mask_style S where maskeninfo_id in ( $TID ) order by 1,2,3" },
{"etl_step":"unload_sx_stylesheets","prop_name":"select_stmt", "prop_value":"select S.tid,S.filename,S.caption,S.description,S.relation,S.useragent,S.contenttype,S.is_generic,S.toolbar_icon_filepath,S.usage_resultset_data,S.stylesheet_type,S.jr_datasource from sx_stylesheets S, sx_mask_style M where S.tid=M.stylesheet_id and M.maskeninfo_id in ( $TID ) order by 1,2,3" },
{"etl_step":"unload_stylesheet_field","prop_name":"select_stmt", "prop_value":"select F.tid,F.stylesheet_id,S.filename as stylesheet_filename,F.tablename,F.fieldname FROM stylesheet_field F, sx_stylesheets S, sx_mask_style M where F.stylesheet_id=S.tid and S.tid=M.stylesheet_id and M.maskeninfo_id in ( $TID ) order by 1,2,3,4,5" },
{"etl_step":"create_tmp_etl_masken","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/create_load_etl_masken.sql" },
{"etl_step":"upload_maskeninfo","prop_name":"target_table", "prop_value":"tmp_maskeninfo" },
{"etl_step":"unload_masken_stammdaten","prop_name":"msg", "prop_value":"Entlade Stammdaten Maske $TID" },
{"etl_step":"unload_maskeninfo","prop_name":"select_stmt", "prop_value":"select tid,name,select_stmt,xil_proplist,chart_xtitel,chart_ytitel,erlaeuterung,cleanup_stmt,default_file,frontend,breite,hoehe,ampel,hilfe,hinweis from maskeninfo where tid=$TID" },
{"etl_step":"unload_felderinfo","prop_name":"select_stmt", "prop_value":"select tid ,name,nummer,x,y,buttonbreite,feldbreite,zeilenanzahl,typ,laenge,obligatorisch,art,relation,attribut,defaultwert from felderinfo where tid in (select felderinfo_id from masken_felder_bez where maskeninfo_id = $TID) order by tid" },
{"etl_step":"unload_masken_felder_bez","prop_name":"select_stmt", "prop_value":"select maskeninfo_id,felderinfo_id from masken_felder_bez where maskeninfo_id=$TID order by 1,2" },
{"etl_step":"unload_sachgeb_maske_bez","prop_name":"select_stmt", "prop_value":"select sachgebiete_id,maskeninfo_id from sachgeb_maske_bez where maskeninfo_id=$TID order by 1,2" },
{"etl_step":"unload_maske_system_bez","prop_name":"select_stmt", "prop_value":"select maskeninfo_id,systeminfo_id from maske_system_bez where maskeninfo_id=$TID order by 1,2" },
{"etl_step":"unload_themenbaum","prop_name":"select_stmt", "prop_value":"select name,maskeninfo_id,parent,(select name from themenbaum where tid=T.parent) as parent_name,gueltig_seit,gueltig_bis,erlaeuterung,sort,css_class from themenbaum T where maskeninfo_id=$TID order by 2,1" },
{"etl_step":"unload_sx_mask_style","prop_name":"select_stmt", "prop_value":"select maskeninfo_id,stylesheet_id,ord,(select filename from sx_stylesheets where tid=S.stylesheet_id) as stylesheet_filename from sx_mask_style S where maskeninfo_id=$TID order by 1,2,3" },
{"etl_step":"unload_sx_stylesheets","prop_name":"select_stmt", "prop_value":"select S.tid,S.filename,S.caption,S.description,S.relation,S.useragent,S.contenttype,S.is_generic,S.toolbar_icon_filepath,S.usage_resultset_data,S.stylesheet_type,S.jr_datasource from sx_stylesheets S, sx_mask_style M where S.tid=M.stylesheet_id and M.maskeninfo_id=$TID order by 1,2,3" },
{"etl_step":"unload_stylesheet_field","prop_name":"select_stmt", "prop_value":"select F.tid,F.stylesheet_id,S.filename as stylesheet_filename,F.tablename,F.fieldname FROM stylesheet_field F, sx_stylesheets S, sx_mask_style M where F.stylesheet_id=S.tid and S.tid=M.stylesheet_id and M.maskeninfo_id=$TID order by 1,2,3,4,5" },
{"etl_step":"delete_maskeninfo","prop_name":"select_stmt", "prop_value":"delete from maskeninfo where tid=$TID" },
{"etl_step":"upload_maskeninfo","prop_name":"target_table", "prop_value":"maskeninfo" },
{"etl_step":"upload_maskeninfo","prop_name":"format", "prop_value":"xml" },
{"etl_step":"upload_maskeninfo","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_maskeninfo\"]/rs/row" },
{"etl_step":"upload_maskeninfo","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
{"etl_step":"upload_felderinfo","prop_name":"target_table", "prop_value":"tmp_felderinfo" },
{"etl_step":"delete_felderinfo","prop_name":"select_stmt", "prop_value":"delete from felderinfo where tid in (select felderinfo_id from masken_felder_bez where maskeninfo_id =$TID)" },
{"etl_step":"upload_felderinfo","prop_name":"target_table", "prop_value":"felderinfo" },
{"etl_step":"upload_felderinfo","prop_name":"format", "prop_value":"xml" },
{"etl_step":"upload_felderinfo","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_felderinfo\"]/rs/row" },
{"etl_step":"upload_felderinfo","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
{"etl_step":"upload_masken_felder_bez","prop_name":"target_table", "prop_value":"tmp_masken_felder_bez" },
{"etl_step":"delete_masken_felder_bez","prop_name":"select_stmt", "prop_value":"delete from masken_felder_bez where maskeninfo_id =$TID" },
{"etl_step":"upload_masken_felder_bez","prop_name":"target_table", "prop_value":"masken_felder_bez" },
{"etl_step":"upload_masken_felder_bez","prop_name":"format", "prop_value":"xml" },
{"etl_step":"upload_masken_felder_bez","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_masken_felder_bez\"]/rs/row" },
{"etl_step":"upload_masken_felder_bez","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
{"etl_step":"upload_sachgeb_maske_bez","prop_name":"target_table", "prop_value":"tmp_sachgeb_maske_bez" },
{"etl_step":"delete_sachgeb_maske_bez","prop_name":"select_stmt", "prop_value":"delete from sachgeb_maske_bez where maskeninfo_id =$TID" },
{"etl_step":"upload_sachgeb_maske_bez","prop_name":"target_table", "prop_value":"sachgeb_maske_bez" },
{"etl_step":"upload_sachgeb_maske_bez","prop_name":"format", "prop_value":"xml" },
{"etl_step":"upload_sachgeb_maske_bez","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_sachgeb_maske_bez\"]/rs/row" },
{"etl_step":"upload_sachgeb_maske_bez","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
{"etl_step":"upload_maske_system_bez","prop_name":"target_table", "prop_value":"tmp_maske_system_bez" },
{"etl_step":"delete_maske_system_bez","prop_name":"select_stmt", "prop_value":"delete from maske_system_bez where maskeninfo_id =$TID" },
{"etl_step":"upload_maske_system_bez","prop_name":"target_table", "prop_value":"maske_system_bez" },
{"etl_step":"upload_maske_system_bez","prop_name":"format", "prop_value":"xml" },
{"etl_step":"upload_maske_system_bez","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_maske_system_bez\"]/rs/row" },
{"etl_step":"upload_maske_system_bez","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
@ -192,81 +151,17 @@ @@ -192,81 +151,17 @@
{"etl_step":"upload_tmp_etl_stylesheet_field","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_stylesheet_field\"]/rs/row" },
{"etl_step":"upload_tmp_etl_stylesheet_field","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
{"etl_step":"create_tmp_etl_sichten","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/create_load_etl_sichten.sql" },
{"etl_step":"upload_tmp_etl_sichten","prop_name":"target_table", "prop_value":"tmp_etl_sichten" },
{"etl_step":"upload_tmp_etl_sichten","prop_name":"format", "prop_value":"xml" },
{"etl_step":"upload_tmp_etl_sichten","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_sichtentab\"]/rs/row" },
{"etl_step":"upload_tmp_etl_sichten","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
{"etl_step":"upload_tmp_etl_sachgeb_sichtarten","prop_name":"target_table", "prop_value":"tmp_etl_sachgeb_sichtarten" },
{"etl_step":"upload_tmp_etl_sachgeb_sichtarten","prop_name":"format", "prop_value":"xml" },
{"etl_step":"upload_tmp_etl_sachgeb_sichtarten","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_sichten_sachgeb\"]/rs/row" },
{"etl_step":"upload_tmp_etl_sachgeb_sichtarten","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
{"etl_step":"trans_etl_sichten","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/trans_etl_sichten.sql" },
{"etl_step":"masken_fuellen","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/masken_fuellen.sql" },
{"etl_step":"themenbaum_fuellen","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/themenbaum_fuellen.sql" },
{"etl_step":"sx_stylesheets_fuellen","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/sx_stylesheets_fuellen.sql" },
{"etl_step":"kern_konstanten_update","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
{"etl_step":"unload_sichten_ges","prop_name":"msg", "prop_value":"Entlade Sichten" },
{"etl_step":"unload_sichtentab","prop_name":"select_stmt", "prop_value":"SELECT S.systeminfoid,S.art,S.type,S.name_intern,S.name,S.sortnr,S.quelle,S.standbutton,S.aktiv FROM sichten S where S.tid in ( $SICHTEN_TID ) order by art,sortnr ,name;" },
{"etl_step":"unload_sichten_sachgeb","prop_name":"select_stmt", "prop_value":"SELECT A.sichtart,A.sachgebiete_id FROM sachgeb_sichtarten A where A.sichtart in (select distinct S.art from sichten S where S.tid in ( $SICHTEN_TID )) order by 1,2;" },
{"etl_step":"unload_sichten_ges","prop_name":"msg", "prop_value":"Entlade Sichten Komponente $SYSTEMINFO_ID" },
{"etl_step":"unload_sichtentab","prop_name":"select_stmt", "prop_value":"SELECT S.systeminfoid,S.art,S.type,S.name_intern,S.name,S.sortnr,S.quelle,S.standbutton FROM sichten S where S.systeminfoid= $SYSTEMINFO_ID and position(''<#'' in quelle) =0 order by art,sortnr ,name;" },
{"etl_step":"unload_sichten_sachgeb","prop_name":"select_stmt", "prop_value":"SELECT A.sichtart,A.sachgebiete_id FROM sachgeb_sichtarten A where A.sichtart in (select distinct S.art from sichten S where S.systeminfoid= $SYSTEMINFO_ID) order by 1,2;" },
{"etl_step":"unload_sos_gewichtung_ges","prop_name":"msg", "prop_value":"Entlade Gewichtungen Komponente $SYSTEMINFO_ID" },
{"etl_step":"unload_sos_gewichtung","prop_name":"select_stmt", "prop_value":" SELECT art, ch35_ang_abschluss, fach_nr, kz_fach, text, faktor FROM sos_gewichtung where ch35_ang_abschluss in (''B5'',''B6'',''B7'',''B8'',''M3'',''M4'',''M7'',''M8'') and art=''vzae'' order by 1,2,3,4,5 ;" },
{"etl_step":"qa_project_unload_ges","prop_name":"msg", "prop_value":"Entlade Testfall-Projekt $QA_PROJECT_ID Stammdaten" },
{"etl_step":"unload_qa_project_tab","prop_name":"select_stmt", "prop_value":"SELECT uniquename, name, systeminfo_id, sachgebiete_id, active, created_from, issue_link FROM qa_project where tid= $QA_PROJECT_ID order by 1;" },
{"etl_step":"unload_qa_resultset_tab","prop_name":"select_stmt", "prop_value":"SELECT R.uniquename, R.name, R.systeminfo_id, R.fromclause, R.fieldclause, R.groupbyclause, R.orderbyclause FROM qa_resultset R where R.tid in (select distinct T.resultset_id from qa_dbtest T, qa_dbtest2project P where P.dbtest_id=T.tid and P.project_id= $QA_PROJECT_ID ) order by 1;" },
{"etl_step":"unload_qa_dbtest_tab","prop_name":"select_stmt", "prop_value":"SELECT T.uniquename,T.name,T.systeminfo_id,R.uniquename as resultset_uniquename,T.whereclause,T.description,T.active from qa_dbtest T,qa_resultset R where R.tid=T.resultset_id and T.tid in (select P.dbtest_id from qa_dbtest2project P where P.project_id= $QA_PROJECT_ID ) order by 1;" },
{"etl_step":"unload_qa_dbtest_assertion_tab","prop_name":"select_stmt", "prop_value":"SELECT T.uniquename as dbtest_uniquename,A.rownr,A.def_col_caption,A.def_col_name,A.def_col_value,A.def_col_function from qa_dbtest T, qa_dbtest_assertion A where A.dbtest_id=T.tid and T.tid in (select P.dbtest_id from qa_dbtest2project P where P.project_id= $QA_PROJECT_ID ) order by 1;" },
{"etl_step":"unload_qa_dbtest2project_tab","prop_name":"select_stmt", "prop_value":"SELECT T.uniquename as dbtest_uniquename,P.uniquename as project_uniquename,DP.issue_id FROM qa_dbtest2project DP, qa_dbtest T, qa_project P where DP.dbtest_id=T.tid and DP.project_id=P.tid and DP.project_id= $QA_PROJECT_ID order by 1;" },
{"etl_step":"unload_rpta_column_layout_ges","prop_name":"msg", "prop_value":"Entlade Spaltenlayout $RPTA_COLUMN_LAYOUT_TID Stammdaten" },
{"etl_step":"unload_rpta_resultset_tab","prop_name":"select_stmt", "prop_value":"SELECT R.* from rpta_resultset R where R.tid in (select L.resultset_id from rpta_column_layout L where L.tid in ( $RPTA_COLUMN_LAYOUT_TID )) order by 1;" },
{"etl_step":"unload_rpta_column_layout_tab","prop_name":"select_stmt", "prop_value":"SELECT L.*,R.uniquename as resultset_uniquename from rpta_column_layout L, rpta_resultset R where R.tid=L.resultset_id and L.tid in ( $RPTA_COLUMN_LAYOUT_TID ) order by 1;" },
{"etl_step":"unload_rpta_column_tab","prop_name":"select_stmt", "prop_value":"select * from rpta_column where tid in (select column_id from rpta_column2layout L where L.layout_id in ( $RPTA_COLUMN_LAYOUT_TID ) ) order by 1;" },
{"etl_step":"unload_rpta_column2layout_tab","prop_name":"select_stmt", "prop_value":"select L.tid,
L.column_id,
L.layout_id,
L.sortnr,
L.is_visible,
L.visible_size,
F.uniquename as format_code,
L.targetfieldname,
L.caption,
L.description from rpta_column2layout L left outer join rpta_format_code F on (F.tid=L.format_code_id) where L.layout_id in ( $RPTA_COLUMN_LAYOUT_TID ) order by 1;" },
{"etl_step":"create_tmp_rpta_column_layout","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/create_load_etl_rpta_column_layout.sql" },
{"etl_step":"upload_rpta_resultset_tab","prop_name":"target_table", "prop_value":"tmp_rpta_resultset" },
{"etl_step":"upload_rpta_resultset_tab","prop_name":"format", "prop_value":"xml" },
{"etl_step":"upload_rpta_resultset_tab","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_rpta_resultset_tab\"]/rs/row" },
{"etl_step":"upload_rpta_resultset_tab","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
{"etl_step":"upload_rpta_column_layout_tab","prop_name":"target_table", "prop_value":"tmp_etl_rpta_column_layout" },
{"etl_step":"upload_rpta_column_layout_tab","prop_name":"format", "prop_value":"xml" },
{"etl_step":"upload_rpta_column_layout_tab","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_rpta_column_layout_tab\"]/rs/row" },
{"etl_step":"upload_rpta_column_layout_tab","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
{"etl_step":"upload_rpta_column_tab","prop_name":"target_table", "prop_value":"tmp_rpta_column" },
{"etl_step":"upload_rpta_column_tab","prop_name":"format", "prop_value":"xml" },
{"etl_step":"upload_rpta_column_tab","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_rpta_column_tab\"]/rs/row" },
{"etl_step":"upload_rpta_column_tab","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
{"etl_step":"upload_rpta_column2layout_tab","prop_name":"target_table", "prop_value":"tmp_rpta_column2layout" },
{"etl_step":"upload_rpta_column2layout_tab","prop_name":"format", "prop_value":"xml" },
{"etl_step":"upload_rpta_column2layout_tab","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_rpta_column2layout_tab\"]/rs/row" },
{"etl_step":"upload_rpta_column2layout_tab","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
{"etl_step":"trans_rpta_column_layout","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/trans_rpta_column_layout.sql" },
{"etl_step":"unload_qa_mask_execution_tab","prop_name":"select_stmt", "prop_value":"SELECT E.name,E.userinfo_id,E.maskeninfo_id,E.is_active,E.stylesheet_id,E.contenttype,E.output_filename,E.systeminfo_id,E.uniquename FROM qa_mask_execution E where E.tid in (select P.mask_execution_id from qa_mask_execution2project P where P.project_id= $QA_PROJECT_ID ) order by 1;" },
{"etl_step":"unload_qa_mask_execution_assert_tab","prop_name":"select_stmt", "prop_value":"SELECT E.uniquename,A.rownr,A.colnr,A.result_value_min,A.result_value_max,A.is_active,A.caption FROM qa_mask_execution E, qa_mask_execution_assert A where E.tid=A.mask_execution_id and E.tid in (select P.mask_execution_id from qa_mask_execution2project P where P.project_id= $QA_PROJECT_ID ) order by 1;" },
{"etl_step":"unload_qa_mask_execution2project_tab","prop_name":"select_stmt", "prop_value":"SELECT E.uniquename as mask_execution_uniquename,P.uniquename as project_uniquename,DP.issue_id FROM qa_mask_execution2project DP, qa_mask_execution E, qa_project P where DP.mask_execution_id=E.tid and DP.project_id=P.tid and DP.project_id= $QA_PROJECT_ID order by 1;" }
{"etl_step":"unload_sos_gewichtung","prop_name":"select_stmt", "prop_value":" SELECT art, ch35_ang_abschluss, fach_nr, kz_fach, text, faktor FROM sos_gewichtung where ch35_ang_abschluss in (''B5'',''B6'',''B7'',''B8'',''M3'',''M4'',''M7'',''M8'') and art=''vzae'' order by 1,2,3,4,5 ;" }
@ -274,7 +169,9 @@ @@ -274,7 +169,9 @@
<#assign testfaelle = [
{"testcase":"test_sx_select_mask","assertion":1, "sql":"select count(*) from etl_job where uniquename='sx_select_mask'" },
{"testcase":"test_sx_insert_mask","assertion":1, "sql":"select count(*) from etl_job where uniquename='sx_insert_mask'" },
{"testcase":"test_sx_insert_mask_params","assertion":3, "sql":"select count(*) from etl_job_param P, etl_job J where J.tid=P.etl_job_id and J.uniquename='sx_insert_mask'" }
{"testcase":"test_sx_insert_mask_params","assertion":3, "sql":"select count(*) from etl_job_param P, etl_job J where J.tid=P.etl_job_id and J.uniquename='sx_insert_mask'" },
{"testcase":"test_sx_insert_mask_steps","assertion":18, "sql":"select count(*) from etl_step S, etl_step_relation R, etl_job J where J.tid=R.job_id and S.tid=R.step_id and J.uniquename='sx_insert_mask'" },
{"testcase":"test_sx_select_mask_steps","assertion":10, "sql":"select count(*) from etl_step S, etl_step_relation R, etl_job J where J.tid=R.job_id and S.tid=R.step_id and J.uniquename='sx_select_mask'" }
] />

62
src-modules/module/etl/schluesseltabellen/etl_step_sichten_trans.sql

@ -1,62 +0,0 @@ @@ -1,62 +0,0 @@
begin work;
delete from sichten where name_intern in (select name_intern from tmp_sichten);
insert into sichten(parent,
systeminfoid,
art,
type,
name_intern,
name,
beschreibung,
sortnr,
quelle,
alt_hier_id,
treecfgtable,
treecfgid,
label,
user_rechte,
rechtequelle,
sesamkey,
standbutton,
attribut1,
attribut2,
attribut3,
attribut4,
xmlmaxentries,
gueltig_seit,
gueltig_bis,
cacheapplet,
cachexml,
aktiv) select parent,
systeminfoid,
art,
type,
name_intern,
name,
beschreibung,
sortnr,
quelle,
alt_hier_id,
treecfgtable,
treecfgid,
label,
user_rechte,
rechtequelle,
sesamkey,
standbutton,
attribut1,
attribut2,
attribut3,
attribut4,
xmlmaxentries,
gueltig_seit,
gueltig_bis,
cacheapplet,
cachexml,
aktiv from tmp_sichten;
drop table tmp_sichten;
commit;

52
src-modules/module/etl/schluesseltabellen/etl_step_users_and_groups_trans.sql

@ -1,52 +0,0 @@ @@ -1,52 +0,0 @@
begin work;
delete from userinfo where benutzer in (select benutzer from tmp_userinfo);
delete from user_institution where userid in (select userid from tmp_user_institution);
delete from user_masken_bez where userinfo_id in (select userinfo_id from tmp_user_masken_bez);
delete from user_sachgeb_bez where userinfo_id in (select userinfo_id from tmp_user_sachgeb_bez);
delete from user_pw where userinfo_id in (select userinfo_id from tmp_user_pw);
delete from user_sichtarten where userinfo_id in (select userinfo_id from tmp_user_sichtarten);
delete from user_sichten where userinfo_id in (select userinfo_id from tmp_user_sichten);
delete from groupinfo where tid in (select tid from tmp_groupinfo);
delete from group_field_pref where groupinfo_id in (select groupinfo_id from tmp_group_field_pref);
delete from group_masken_bez where groupinfo_id in (select groupinfo_id from tmp_group_masken_bez);
delete from group_sachgeb_bez where groupinfo_id in (select groupinfo_id from tmp_group_sachgeb_bez);
delete from group_sichtarten where groupinfo_id in (select groupinfo_id from tmp_group_sichtarten);
delete from group_sichten where groupinfo_id in (select groupinfo_id from tmp_group_sichten);
delete from user_group_bez where groupinfo_id in (select groupinfo_id from tmp_user_group_bez);
insert into userinfo select * from tmp_userinfo ;
insert into user_institution select * from tmp_user_institution ;
insert into user_masken_bez select * from tmp_user_masken_bez ;
insert into user_sachgeb_bez select * from tmp_user_sachgeb_bez ;
insert into user_pw select * from tmp_user_pw ;
insert into user_sichtarten select * from tmp_user_sichtarten ;
insert into user_sichten select * from tmp_user_sichten ;
insert into groupinfo select * from tmp_groupinfo ;
insert into group_field_pref select * from tmp_group_field_pref ;
insert into group_masken_bez select * from tmp_group_masken_bez ;
insert into group_sachgeb_bez select * from tmp_group_sachgeb_bez ;
insert into group_sichtarten select * from tmp_group_sichtarten;
insert into group_sichten select * from tmp_group_sichten ;
insert into user_group_bez select * from tmp_user_group_bez ;
drop table tmp_userinfo;
drop table tmp_user_institution;
drop table tmp_user_masken_bez;
drop table tmp_user_sachgeb_bez;
drop table tmp_user_pw;
drop table tmp_user_sichtarten;
drop table tmp_user_sichten;
drop table tmp_groupinfo;
drop table tmp_group_field_pref;
drop table tmp_group_masken_bez;
drop table tmp_group_sachgeb_bez;
drop table tmp_group_sichtarten;
drop table tmp_group_sichten;
drop table tmp_user_group_bez;
commit;

1021
src-modules/module/etl/schluesseltabellen/etl_transfer.xsl

File diff suppressed because it is too large Load Diff

239
src-modules/module/etl/schluesseltabellen/fm_templates.unl

@ -1,56 +1,4 @@ @@ -1,56 +1,4 @@
17^ETL_MAKROS^<#macro ETL_STEPS_FUELLEN>\
<@etl_steps_def_check/>\
\
<#-- Hinterlegen von Defaultwerten für step_properties -->\
<#assign new_etl_step_properties = etl_step_properties>\
<#foreach step in etl_steps>\
<#-- gültig für alle Steps -->\
<#if etl_step_lookup_systeminfo(step.etl_job)==-1><#stop "DEFINITIONSFEHLER: Etl_step '"+step.uniquename+ "' verweist auf job '"+step.etl_job+"' der liefert aber keine systeminfo_id"> </#if>\
<@check_etl_properties step_uniquename=step.uniquename propname="systemInfoId" defaultvalue=etl_step_lookup_systeminfo(step.etl_job)/>\
<@check_etl_properties step_uniquename=step.uniquename propname="active" defaultvalue="true"/>\
<@check_etl_properties step_uniquename=step.uniquename propname="custom" defaultvalue="true"/>\
\
<#switch step.type>\
<#case "UNLOAD">\
<@check_etl_properties step_uniquename=step.uniquename propname="sourceVersions" defaultvalue=""/>\
<@check_etl_properties step_uniquename=step.uniquename propname="sqlVarSource" defaultvalue="eduetl"/>\
<#break>\
<#case "LOAD">\
<@check_etl_properties step_uniquename=step.uniquename propname="database" defaultvalue="eduetl"/>\
<@check_etl_properties step_uniquename=step.uniquename propname="delimiter" defaultvalue="\^"/>\
<@check_etl_properties step_uniquename=step.uniquename propname="header" defaultvalue="false"/>\
<@check_etl_properties step_uniquename=step.uniquename propname="refresh" defaultvalue="true"/>\
<@check_etl_properties step_uniquename=step.uniquename propname="usePostgresCopyApi" defaultvalue="true"/>\
<#break>\
<#case "DOQUERY">\
<@check_etl_properties step_uniquename=step.uniquename propname="databaseSystem" defaultvalue="postgres"/>\
<@check_etl_properties step_uniquename=step.uniquename propname="dataSource" defaultvalue="eduetl"/>\
<@check_etl_properties step_uniquename=step.uniquename propname="sourceVersions" defaultvalue=""/>\
<@check_etl_properties step_uniquename=step.uniquename propname="sqlVarDataSource" defaultvalue="eduetl"/>\
<#break>\
<#case "DOSQL">\
<@check_etl_properties step_uniquename=step.uniquename propname="databaseSystem" defaultvalue="postgres"/>\
<@check_etl_properties step_uniquename=step.uniquename propname="dataSource" defaultvalue="eduetl"/>\
<@check_etl_properties step_uniquename=step.uniquename propname="sqlVarDataSource" defaultvalue="eduetl"/>\
<@check_etl_properties step_uniquename=step.uniquename propname="limitDebugStmts" defaultvalue="-1"/>\
<#break>\
<#default>\
\
</#switch>\
</#foreach>\
<#assign etl_step_properties = new_etl_step_properties>\
\
\
--Bezeichnungen aktualisieren\
<#foreach etl_job in etl_jobs>\
update etl_job set caption='${etl_job.name}' where uniquename='${etl_job.uniquename}'; -- ggfs noch systeminfo_id?\
</#foreach>\
<#foreach etl_step in etl_steps>\
update etl_step set caption='${etl_step.name}' where uniquename='${etl_step.uniquename}' and tid in\
(select step_id from etl_step_relation where job_id in (select tid from etl_job where uniquename='${etl_step.etl_job}'));\
</#foreach>\
\
\
216^ETL_MAKROS^<#macro ETL_STEPS_FUELLEN>\
\
\
create temp table tmp_etl_step(\
@ -115,34 +63,6 @@ custom_step SMALLINT default 1\ @@ -115,34 +63,6 @@ custom_step SMALLINT default 1\
) \
;\
\
--jobs with custom_job=0 get deleted in HISinOne-BI\
--therefore set to 2:\
update etl_job set custom_job=2\
where custom_job=0\
and uniquename in ('sx_select_mask','sx_insert_mask',\
'kern_konstanten_update',\
'sichten_unload',\
'sos_gewichtung_unload');\
\
\
update etl_step set custom_step=2\
where custom_step=0\
and tid in (select R.step_id from etl_step_relation R, etl_job J\
where R.job_id=J.tid\
and J.uniquename in ('sx_select_mask','sx_insert_mask',\
'kern_konstanten_update',\
'sichten_unload',\
'sos_gewichtung_unload'));\
\
update etl_step_relation set custom_step=2\
where custom_step=0\
and job_id in (select J.tid\
from etl_job J\
where J.uniquename in ('sx_select_mask','sx_insert_mask',\
'kern_konstanten_update',\
'sichten_unload',\
'sos_gewichtung_unload'));\
\
<#foreach etl_job in etl_jobs>\
\
truncate table tmp_etl_job;\
@ -161,9 +81,10 @@ insert into tmp_etl_job(uniquename,caption,systeminfo_id,logfile,already_exists, @@ -161,9 +81,10 @@ insert into tmp_etl_job(uniquename,caption,systeminfo_id,logfile,already_exists,
values ('${etl_job.uniquename}',\
'${etl_job.name}',\
${etl_job.systeminfo_id},\
'${etl_job.logfile}',0,2);\
\
'${etl_job.logfile}',0,0);\
\
<#if SQLdialect='Postgres'>\
--Postgres Dialekt:\
\
update tmp_etl_job set tid=J.tid,\
already_exists=1,\
@ -174,6 +95,33 @@ from etl_job J where J.uniquename=tmp_etl_job.uniquename\ @@ -174,6 +95,33 @@ from etl_job J where J.uniquename=tmp_etl_job.uniquename\
and J.systeminfo_id=tmp_etl_job.systeminfo_id\
;\
\
<#else>\
\
--Informix Dialekt:\
update tmp_etl_job set (tid,\
already_exists,\
caption,\
logfile,\
custom_job) \
= ((select \
tid,\
1 as already_exists,\
caption,\
logfile,\
custom_job\
from etl_job J where J.uniquename=tmp_etl_job.uniquename\
and J.systeminfo_id=tmp_etl_job.systeminfo_id))\
where 0 <(select count(*)\
from etl_job J where J.uniquename=tmp_etl_job.uniquename\
and J.systeminfo_id=tmp_etl_job.systeminfo_id)\
\
;\
\
</#if>\
\
\
\
--TODO Informix\
\
--neue jobs:\
insert into etl_job(uniquename,caption,systeminfo_id,custom_job)\
@ -246,7 +194,7 @@ J.tid as etl_job_id,\ @@ -246,7 +194,7 @@ J.tid as etl_job_id,\
</#if>\
J.uniquename,\
'${etl_job.logfile}' as logfile,\
2,\
0,\
0\
from etl_job J\
where J.uniquename='${etl_job.uniquename}'\
@ -288,12 +236,10 @@ FROM tmp_etl_job_param \ @@ -288,12 +236,10 @@ FROM tmp_etl_job_param \
update tmp_etl_step set step_type=(select T.tid from etl_step_type T\
where T.uniquename=tmp_etl_step.step_type_uniquename);\
\
--select * from tmp_etl_step\
--where step_type is null;--_uniquename from tmp_etl_step;\
\
\
--vorhandene Steps erkennen:\
\
<#if SQLdialect='Postgres'>\
--Postgres Dialekt:\
\
update tmp_etl_step set tid=S.tid,\
already_exists=1,\
@ -303,6 +249,31 @@ custom_step=S.custom_step\ @@ -303,6 +249,31 @@ custom_step=S.custom_step\
from etl_step S where S.uniquename=tmp_etl_step.uniquename\
and S.systeminfo_id=tmp_etl_step.systeminfo_id\
;\
<#else>\
\
--Informix Dialekt:\
update tmp_etl_step set (tid,\
already_exists,\
caption,\
logfile,\
custom_step) \
= ((select \
tid,\
1 as already_exists,\
caption,\
logfile,\
custom_step\
from etl_step S where S.uniquename=tmp_etl_step.uniquename\
and S.systeminfo_id=tmp_etl_step.systeminfo_id))\
where 0 <(select count(*)\
from etl_step S where S.uniquename=tmp_etl_step.uniquename\
and S.systeminfo_id=tmp_etl_step.systeminfo_id)\
;\
\
\
\
</#if>\
\
\
--neue Steps einfügen:\
insert into etl_step(\
@ -344,7 +315,7 @@ FROM tmp_etl_step T )\ @@ -344,7 +315,7 @@ FROM tmp_etl_step T )\
delete from etl_step_relation\
where job_id in (select J.tid\
FROM tmp_etl_job J)\
and custom_step=2\
and custom_step=0\
;\
\
\
@ -391,7 +362,7 @@ select \ @@ -391,7 +362,7 @@ select \
0 as force_continue,\
1 as step_active,\
sortnr,\
2\
0\
FROM tmp_etl_step \
;\
\
@ -423,6 +394,7 @@ drop table tmp_etl_job_param;\ @@ -423,6 +394,7 @@ drop table tmp_etl_job_param;\
drop table tmp_etl_step_property;\
drop table tmp_etl_step_relation;\
\
<#if testfaelle?exists>\
\
<#foreach testfall in testfaelle>\
select 'testfall ${testfall.testcase}: ERFOLG'\
@ -436,69 +408,30 @@ where ${testfall.assertion}!=(${testfall.sql})\ @@ -436,69 +408,30 @@ where ${testfall.assertion}!=(${testfall.sql})\
\
\
</#foreach> --Ende Testfälle\
</#if>\
\
<#if SQLdialect='Informix'> \
--nun xupdates:\
--bei informix kann man TEXT Spalten nicht updaten, daher per jdbc updaten:\
--damit DOSQL nicht den xupdater beim Start dieses Scriptes anwirft,\
--wird das in eine temp. Datei ausgelagert.\
! echo "<xup""date>" > "./tmp"$MANDANTID".sql"\
<#foreach etl_step_property in etl_step_properties>\
update etl_step_property set prop_value='${etl_step_property.prop_value}' where prop_name='${etl_step_property.prop_name}' and etl_step_id=(select S.tid from etl_step S where S.uniquename='${etl_step_property.etl_step}');\
\
! echo '<text table="etl_step_property" field="prop_value" where="prop_name='\\''${etl_step_property.prop_name}'\\'' and etl_step_id=(select S.tid from etl_step S where S.uniquename='\\''${etl_step_property.etl_step}'\\'')">${etl_step_property.prop_value}</text>' >>"./tmp"$MANDANTID".sql"\
\
\
</#foreach>\
</#macro>\
\
\
<#-- Makro zum Prüfen der Definition auf mögliche Fehler -->\
<#macro etl_steps_def_check>\
<#foreach step in etl_steps>\
<#-- checking job --> \
<#assign found=false/>\
<#foreach job in etl_jobs>\
<#if job.uniquename=step.etl_job> <#assign found=true> </#if>\
</#foreach>\
<#if found=false> <#stop "DEFINITIONSFEHLER: Etl_step '"+step.uniquename+ "' verweist auf job '"+step.etl_job+"' der ist aber nicht definiert!"> </#if>\
<#-- checking step type-->\
<#switch step.type>\
<#case "LOAD">\
<#case "UNLOAD">\
<#case "DOSQL">\
<#case "DOQUERY">\
<#case "MSG"><#-- MSG wird von HisInOne noch nicht unterstuetzt-->\
<#break/>\
<#default>\
<#stop "DEFINITIONSFEHLER: Etl_step '"+step.uniquename+ "' hat unbekannten Typ '"+step.type+"'"> \
</#switch>\
</#foreach>\
\
<#-- checking step properties existing step-->\
<#foreach step_prop in etl_step_properties>\
\
<#assign found=false/>\
<#foreach step in etl_steps>\
<#if step.uniquename=step_prop.etl_step> <#assign found=true> </#if>\
</#foreach>\
<#if found=false> <#stop "DEFINITIONSFEHLER: Eine Etl_step_property '"+step_prop.prop_name+ "' verweist auf etl_step '"+step_prop.etl_step+"' der ist aber nicht definiert!"> </#if>\
</#foreach>\
</#macro>\
\
<#function etl_step_lookup_systeminfo job_uniquename>\
<#assign val=-1/>\
<#foreach job in etl_jobs>\
<#if job.uniquename=job_uniquename> <#assign val=job.systeminfo_id/></#if>\
</#foreach>\
<#return val/>\
</#function>\
\
<#macro check_etl_properties step_uniquename propname defaultvalue>\
<#if !etl_properties_contains(step_uniquename,propname)>\
<#assign new_etl_step_properties = new_etl_step_properties + [{\
"etl_step": step_uniquename,\
"prop_name": propname,\
"prop_value": defaultvalue\
}] />\
</#if>\
</#macro>\
\
\
<#function etl_properties_contains step propname>\
<#assign val=false/>\
<#foreach prop in etl_step_properties>\
<#if prop.etl_step==step&&prop.prop_name==propname> <#assign val=true/> </#if>\
</#foreach>\
<#return val>\
</#function>^Makros des ETL-Moduls^^1^
! echo "</xup""date>" >> "./tmp"$MANDANTID".sql"\
! DOSQL "./tmp"$MANDANTID".sql"\
\
<#else>\
--Postgres:\
<#foreach etl_step_property in etl_step_properties>\
\
update etl_step_property set prop_value='${etl_step_property.prop_value?replace("'", "''")}' where prop_name='${etl_step_property.prop_name}' and etl_step_id=(select S.tid from etl_step S where S.uniquename='${etl_step_property.etl_step?replace("'", "''")}');\
\
</#foreach>\
</#if>\
\
</#macro>^Datenbankunabhängigkeit^^1^

106
src-modules/module/etl/schluesseltabellen/masken_fuellen.sql

@ -1,106 +0,0 @@ @@ -1,106 +0,0 @@
--Freemarker Template
--used in etl-job sx_insert_mask
--zuerst löschen:
delete from sachgeb_maske_bez where maskeninfo_id in (select tid from tmp_maskeninfo);
delete from maske_system_bez where maskeninfo_id in (select tid from tmp_maskeninfo);
delete from felderinfo where tid in (select B.felderinfo_id from tmp_maskeninfo M, masken_felder_bez B where M.tid=B.maskeninfo_id);
delete from masken_felder_bez where maskeninfo_id in (select tid from tmp_maskeninfo);
delete from maskeninfo where tid in (select tid from tmp_maskeninfo);
--dann einfügen:
insert into maskeninfo(tid,
name,
select_stmt,
xil_proplist,
chart_xtitel,
chart_ytitel,
erlaeuterung,
cleanup_stmt,
default_file,
frontend,
breite,
hoehe,
ampel,
hilfe,
hinweis)
select
tid,
name,
select_stmt,
xil_proplist,
chart_xtitel,
chart_ytitel,
erlaeuterung,
cleanup_stmt,
default_file,
frontend,
breite,
hoehe,
ampel,
hilfe,
hinweis
FROM tmp_maskeninfo
;
insert into maske_system_bez(maskeninfo_id,
systeminfo_id )
SELECT maskeninfo_id,
systeminfo_id
FROM tmp_maske_system_bez
;
insert into sachgeb_maske_bez(sachgebiete_id,
maskeninfo_id)
SELECT sachgebiete_id,
maskeninfo_id
FROM tmp_sachgeb_maske_bez
;
insert into masken_felder_bez(maskeninfo_id,
felderinfo_id)
SELECT maskeninfo_id,
felderinfo_id
FROM tmp_masken_felder_bez
;
insert into felderinfo(
tid,
name,
nummer,
x,
y,
buttonbreite,
feldbreite,
zeilenanzahl,
typ,
laenge,
obligatorisch,
art,
relation,
attribut,
defaultwert)
select
tid,
name,
nummer,
x,
y,
buttonbreite,
feldbreite,
zeilenanzahl,
typ,
laenge,
obligatorisch,
art,
relation,
attribut,
defaultwert
FROM tmp_felderinfo;
<#if SQLdialect='Postgres'>
drop table if exists tmp_maskeninfo;
drop table if exists tmp_felderinfo;
drop table if exists tmp_masken_felder_bez;
drop table if exists tmp_sachgeb_maske_bez;
drop table if exists tmp_maske_system_bez;
</#if>

17
src-modules/module/etl/schluesseltabellen/themenbaum_fuellen.sql

@ -6,27 +6,12 @@ select sp_update_sequence('themenbaum'); @@ -6,27 +6,12 @@ select sp_update_sequence('themenbaum');
update tmp_etl_themenbaum set parent=(select min(tid) from themenbaum where name=tmp_etl_themenbaum.parent_name);
--Gültigkeit etc. updaten:
update themenbaum set (gueltig_seit,gueltig_bis,erlaeuterung,sort,css_class)
=(select T.gueltig_seit,T.gueltig_bis,T.erlaeuterung,T.sort,T.css_class
from tmp_etl_themenbaum T
where T.maskeninfo_id=themenbaum.maskeninfo_id)
where maskeninfo_id in (select T2.maskeninfo_id from tmp_etl_themenbaum T2);
--Masken-Knoten existiert bereits?
--existiert bereits?
delete from tmp_etl_themenbaum
where exists(select T.tid
from themenbaum T where T.maskeninfo_id=tmp_etl_themenbaum.maskeninfo_id
and T.parent=tmp_etl_themenbaum.parent);
--Themenbaum-Knoten existiert bereits?
delete from tmp_etl_themenbaum
where exists(select T.tid
from themenbaum T where T.maskeninfo_id is null
and tmp_etl_themenbaum.maskeninfo_id is null
and T.name=tmp_etl_themenbaum.name);
--dann einfügen:
insert into themenbaum (name,maskeninfo_id,parent,gueltig_seit,gueltig_bis)

61
src-modules/module/etl/schluesseltabellen/trans_etl_sichten.sql

@ -1,61 +0,0 @@ @@ -1,61 +0,0 @@
update sichten set systeminfoid=T.systeminfoid,
art=T.art,
type=T.type,
name=T.name,
quelle=T.quelle ,
sortnr=T.sortnr,
standbutton=T.standbutton,
aktiv=T.aktiv
from tmp_etl_sichten T
where T.name_intern=sichten.name_intern
and sichten.name_intern in (select T2.name_intern from tmp_etl_sichten T2)
;
delete from tmp_etl_sichten where name_intern in (select name_intern from sichten);
INSERT INTO sichten(
systeminfoid ,
art ,
type ,
name_intern ,
name ,
sortnr ,
quelle ,
standbutton ,
gueltig_seit ,
gueltig_bis ,
aktiv)
select systeminfoid ,
art ,
type ,
name_intern ,
name ,
sortnr ,
quelle ,
standbutton ,
date_val('01.01.1900') as gueltig_seit ,
date_val('01.01.3000') as gueltig_bis ,
aktiv
from tmp_etl_sichten S;
delete from sachgeb_sichtarten
where (sachgebiete_id ,
sichtart) in
(select sachgebiete_id ,
sichtart from tmp_etl_sachgeb_sichtarten);
insert into sachgeb_sichtarten(
sachgebiete_id ,
sichtart)
select
sachgebiete_id ,
sichtart
from tmp_etl_sachgeb_sichtarten;
drop table if exists tmp_etl_sichten;
drop table if exists tmp_etl_sachgeb_sichtarten;

322
src-modules/module/etl/schluesseltabellen/trans_rpta_column_layout.sql

@ -1,322 +0,0 @@ @@ -1,322 +0,0 @@
--freemarker template
<#include "SQL_lingua_franca"/>
<#include "SuperX_general"/>
<#include "RPTA-Makros"/>
<sqlvars>
<sqlvar name="rpta_column_layouts" type="hashsequence">
select uniquename,
caption,
resultset_uniquename as rpta_resultset,
replace(whereclause,'''','''''') as whereclause,
description,
sortclause,
is_virtual
from tmp_etl_rpta_column_layout;
</sqlvar>
<sqlvar name="rpta_columns" type="hashsequence">
select C.uniquename,
null::varchar(255) as caption,
C.caption as caption_der_spalte,
L.caption as caption_in_ergebnistabelle,
C.srcfieldname,
C.targetfieldname,
T.uniquename as column_type,
replace(C.col_function,'''','''''') as col_function,
L.is_visible,
L.visible_size,
C.is_aggregate,
null::varchar(255) as description,
L.format_code,
C.description as description_der_spalte,
L.description as description_in_ergebnistabelle
from tmp_rpta_column C, tmp_rpta_column2layout L, rpta_column_type T
where L.column_id=C.tid
and T.tid=C.column_type
</sqlvar>
</sqlvars>
<@rpta_column_layout_fuellen_multi />
drop TABLE if exists tmp_rpta_column;
drop TABLE if exists tmp_rpta_column_layout;
drop TABLE if exists tmp_etl_rpta_column_layout;
<#macro rpta_column_layout_fuellen_multi>
CREATE temp TABLE tmp_rpta_column
(
uniquename varchar(255) NOT NULL,
caption varchar(255),
caption_in_ergebnistabelle varchar(255),
srcfieldname varchar(255),
targetfieldname varchar(255),
column_type integer,
col_function text,
is_visible smallint,
visible_size smallint,
is_aggregate smallint,
resultset_id integer,
sortnr integer,
description TEXT,
description_in_ergebnistabelle TEXT,
format_code_uniquename varchar(255),
format_code_id integer
);
CREATE temp TABLE tmp_rpta_column_layout
(
uniquename varchar(255) NOT NULL,
caption varchar(255),
resultset_id integer,
whereclause text,
sortclause text,
description text,
is_virtual smallint default 1
);
<#foreach rpta_column_layout in rpta_column_layouts>
delete from tmp_rpta_column_layout;
delete from tmp_rpta_column;
insert into tmp_rpta_column_layout(
resultset_id,
uniquename,
caption,
whereclause,
<#if rpta_column_layout.sortclause?has_content>
sortclause,
</#if>
<#if rpta_column_layout.is_virtual?has_content>
is_virtual,
</#if>
description
)
select tid,
'${rpta_column_layout.uniquename}',
'${rpta_column_layout.caption}',
'${rpta_column_layout.whereclause}',
<#if rpta_column_layout.sortclause?has_content>
'${rpta_column_layout.sortclause}',
</#if>
<#if rpta_column_layout.is_virtual?has_content>
'${rpta_column_layout.is_virtual}',
</#if>
'${rpta_column_layout.description}'
FROM rpta_resultset
where uniquename='${rpta_column_layout.rpta_resultset}';
<#assign sortnr=0 />
<#foreach column in rpta_columns>
<#assign sortnr=sortnr +1 />
INSERT INTO tmp_rpta_column
(resultset_id,
uniquename,
caption,
caption_in_ergebnistabelle,
srcfieldname,
targetfieldname,
column_type,
col_function,
is_visible,
visible_size,
is_aggregate,
sortnr,
description,
description_in_ergebnistabelle,
format_code_uniquename
)
select R.tid,
'${column.uniquename}',
<#if column.caption?exists>
'${column.caption}',
<#else>
'${column.caption_der_spalte}',
</#if>
<#if column.caption_in_ergebnistabelle?exists>
'${column.caption_in_ergebnistabelle}',
<#else>
'${column.caption}',
</#if>
'${column.srcfieldname}',
<#if !column.targetfieldname?exists || column.targetfieldname=="">'${column.srcfieldname}' <#else>'${column.targetfieldname}' </#if>,
T.tid as column_type,
<#if column.col_function?exists>'${column.col_function}'<#else>null::varchar </#if>,
${column.is_visible},
${column.visible_size},
${column.is_aggregate},
${sortnr*10},
<#if column.description?exists>'${column.description}'<#elseif column.description_der_spalte?exists>'${column.description_der_spalte}'<#else>null::varchar </#if>,
<#if column.description_in_ergebnistabelle?exists>'${column.description_in_ergebnistabelle}'<#elseif column.description?exists>'${column.description}'<#else>null::varchar </#if>,
<#if column.format_code?exists>'${column.format_code}'<#else>null::varchar </#if>
FROM rpta_resultset R, rpta_column_type T
where R.uniquename='${rpta_column_layout.rpta_resultset}'
and T.uniquename='${column.column_type}';
</#foreach>
update tmp_rpta_column set format_code_id=C.tid
from rpta_format_code C
where C.uniquename=tmp_rpta_column.format_code_uniquename
and format_code_uniquename is not null;
select * into temp tmp_rpta_column2layout2
from rpta_column2layout
where layout_id in (select L.tid
from rpta_column_layout L,rpta_resultset R
where R.tid=L.resultset_id
and R.uniquename='${rpta_column_layout.rpta_resultset}'
and L.uniquename='${rpta_column_layout.uniquename}'
)
;
select uniquename into temp tmp_rpta_column_layout_target
from rpta_column_layout
where resultset_id in (select tid
FROM rpta_resultset
where uniquename='${rpta_column_layout.rpta_resultset}')
and resultset_id in (select tid
FROM rpta_resultset
where uniquename='${rpta_column_layout.rpta_resultset}')
;
--falls neu
insert into rpta_column_layout
(uniquename,
caption,
resultset_id,
whereclause,
sortclause,
description,
is_virtual)
select uniquename,
caption,
resultset_id,
whereclause,
<#if rpta_column_layout.sortclause?has_content>
sortclause,
<#else>
null::text as sortclause,
</#if>
description,
is_virtual
FROM tmp_rpta_column_layout T
where not exists (select T2.uniquename from tmp_rpta_column_layout_target T2
where T2.uniquename=T.uniquename);
--falls geändert, uniquename muss bleiben
update rpta_column_layout
set (caption, resultset_id, whereclause,sortclause, description, is_virtual)
= ( select distinct caption, resultset_id,
whereclause,
<#if rpta_column_layout.sortclause?has_content>
sortclause,
<#else>
null::text as sortclause,
</#if>
description,
is_virtual
FROM tmp_rpta_column_layout T
where T.uniquename=rpta_column_layout.uniquename)
where rpta_column_layout.uniquename in (select uniquename from tmp_rpta_column_layout);
drop table tmp_rpta_column_layout_target;
delete from rpta_column2layout
where layout_id in (select L.tid
from rpta_column_layout L,rpta_resultset R
where R.tid=L.resultset_id
and R.uniquename='${rpta_column_layout.rpta_resultset}'
and L.uniquename='${rpta_column_layout.uniquename}'
)
;
select * into temp tmp_rpta_column2
from tmp_rpta_column T
where (resultset_id,uniquename) not in
(select resultset_id,uniquename from rpta_column);
INSERT INTO rpta_column
(resultset_id,
uniquename,
caption,
srcfieldname,
targetfieldname,
column_type,
col_function,
is_aggregate,
description,
custom
)
select
resultset_id,
uniquename,
caption,
srcfieldname,
targetfieldname,
column_type,
col_function,
is_aggregate,
description,
0 as custom
from tmp_rpta_column2;
--evtl. neuen Satz einfügen, dann alle updaten
update rpta_column set ( caption,
srcfieldname,
targetfieldname,
column_type,
col_function,
is_aggregate,
description)
= (select distinct caption,
srcfieldname,
targetfieldname,
column_type,
col_function,
is_aggregate,
description
from tmp_rpta_column T
where T.resultset_id=rpta_column.resultset_id
and T.uniquename=rpta_column.uniquename)
where custom=0
and (resultset_id,uniquename) in
(select T.resultset_id,T.uniquename
from tmp_rpta_column T)
;
drop table tmp_rpta_column2;
insert into rpta_column2layout(column_id,
layout_id,
sortnr,
is_visible,
visible_size,
caption,
description,
format_code_id)
select C.tid as column_id,
L.tid as layout_id,
T.sortnr,
T.is_visible,
T.visible_size,
T.caption_in_ergebnistabelle,
T.description_in_ergebnistabelle,
T.format_code_id
FROM rpta_column C, rpta_column_layout L, tmp_rpta_column T
where C.uniquename=T.uniquename
and C.resultset_id=T.resultset_id
and L.uniquename='${rpta_column_layout.uniquename}'
and L.resultset_id=T.resultset_id
;
drop TABLE tmp_rpta_column2layout2;
</#foreach>
drop table tmp_rpta_column;
</#macro>

42
src-modules/module/etl/upgrade/etl_upgrade_man.sql

@ -1,42 +0,0 @@ @@ -1,42 +0,0 @@
--obsolete jobs:
delete from etl_step
where tid in (select R.step_id
from etl_step_relation R, etl_job J
where R.job_id =J.tid
and J.uniquename in ('sx_select_mask',
'sx_insert_mask',
'kern_konstanten_update',
'sichten_unload',
'sos_gewichtung_unload')
and J.systeminfo_id=9);
delete from etl_step_property
where etl_step_id in (select R.step_id
from etl_step_relation R, etl_job J
where R.job_id =J.tid
and J.uniquename in ('sx_select_mask',
'sx_insert_mask',
'kern_konstanten_update',
'sichten_unload',
'sos_gewichtung_unload')
and J.systeminfo_id=9);
delete from etl_step_relation
where job_id in (select J.tid from etl_job J
where J.uniquename in ('sx_select_mask',
'sx_insert_mask',
'kern_konstanten_update',
'sichten_unload',
'sos_gewichtung_unload')
and J.systeminfo_id=9);
delete from etl_job
where uniquename in ('sx_select_mask',
'sx_insert_mask',
'kern_konstanten_update',
'sichten_unload',
'sos_gewichtung_unload')
and systeminfo_id=9;

7
src/de/superx/elt/EtlActionJob.java

@ -219,13 +219,6 @@ public class EtlActionJob extends EtlAction { @@ -219,13 +219,6 @@ public class EtlActionJob extends EtlAction {
}
else
{
if(jobReturnCode==1)
{
System.err.println(super.getActionLog());
throw new Exception("Fehler bei Jobausführung");
}
else
System.out.println("Jobausführung Erfolg");
try {
de.superx.elt.EtlUtils.saveFileContentsWithEncoding(outfile, sw.toString(), null);
} catch (Exception e) {

137
src/de/superx/elt/EtlFmParser.java

@ -1,137 +0,0 @@ @@ -1,137 +0,0 @@
package de.superx.elt;
import static de.superx.servlet.SxSQL_Server.DEFAULT_MANDANTEN_ID;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.DatabaseMetaData;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
import de.memtext.db.ConnectionCreator;
import de.memtext.util.DateUtils;
import de.memtext.util.GetOpts;
import de.memtext.util.StringUtils;
import de.superx.common.DBServletException;
import de.superx.common.FieldContainer;
import de.superx.common.Sichten;
import de.superx.common.StandaloneSicht;
import de.superx.common.SuperX_el;
import de.superx.common.SxResultRow;
import de.superx.common.SxResultSet;
import de.superx.common.SxSqlHelper;
import de.superx.common.SxUser;
import de.superx.common.TableFieldExists;
import de.superx.common.TemplateProcessor;
import de.superx.servlet.SuperXManager;
import de.superx.servlet.SxPools;
import de.superx.servlet.SxSQL_Server;
import de.superx.util.PropsReader;
import de.superx.util.SqlStringUtils;
public class EtlFmParser extends TemplateProcessor {
private String dbprop, infile, outfile;
private Properties props;
private Statement stm;
private String isSimpleParser;
private static String sqlDialect;
EtlFmParser(String mandantenID, Connection con) {
super(mandantenID,con);
}
private void initConAndParser() throws IOException, SQLException,
ClassNotFoundException {
stm = con.createStatement();
if(SqlStringUtils.tableExists(con,"fm_templates",DEFAULT_MANDANTEN_ID))
{
setTemplates(readFromDb("select trim(both from id),content from fm_templates"));
repositoryToMap(readFromDb(REPOSITORY_SELECT), repositoryMap);
}
if(SqlStringUtils.tableExists(con,"konstanten",DEFAULT_MANDANTEN_ID))
{
SxResultSet rs = readFromDb("select trim(both from beschreibung),apnr from konstanten");
for (Iterator it = rs.iterator(); it.hasNext();) {
SxResultRow row = (SxResultRow) it.next();
String beschreibung = (String) row.get(0);
repositoryMap.put("K_" + beschreibung.trim(), row.get(1));
}
}
}
protected SxResultSet readFromDb(String sql) throws SQLException {
SuperX_el el = new SuperX_el();
SxSqlHelper sh=new SxSqlHelper();
sh.execute(sql, this.con, el);
if (el.getError_String() != null
&& !el.getError_String().trim().equals(""))
throw new SQLException("\nProblem bei:" + "\n\n Meldung:"
+ el.getError_String() + "\n sql:" + sql);
return el.getResultSet();
}
/*
* Einfacher Parser für Fremddatenbanken, nur sqlDialect wird übergeben wird
* von DOSQL direkt aufgerufen
*/
public String simpleParser( String input)
throws FileNotFoundException, IOException, Exception {
String output = "";
sqlDialect = "Postgres";// de.superx.util.SqlStringUtils.getSqlDialect(props .getProperty("driverName"));
initConAndParser();
HashMap map = new HashMap();
try {
output = "--automatically created by SuperX/Freemarker for "
+ sqlDialect
+ " ("
+ DateUtils.getTodayString()
+ " "
+ DateUtils.getNowString()
+ ")\n"
+ process("FM-Parsing ", input, map,
sqlDialect);
} catch (Exception e) {
System.err.println("Fehler beim FM-Parsen ");
e.printStackTrace();
System.exit(1);
}
return output;
}
}
// Created on 08.12.2006 at 18:03:46

11
src/de/superx/elt/EtlUtils.java

@ -315,7 +315,7 @@ public static String getFileContentsWithEncoding(String filePath, String encodin @@ -315,7 +315,7 @@ public static String getFileContentsWithEncoding(String filePath, String encodin
* @throws IOException
* @throws XPathExpressionException
*/
public static boolean isNodeValueInXml(String src, String searchPath, String expectedValue,String jobuniquename)
public static boolean isNodeValueInXml(String src, String searchPath, String expectedValue)
throws ParserConfigurationException, SAXException, IOException, XPathExpressionException {
boolean b=false;
Document mydomres =de.superx.elt.EtlUtils.parseXml(src);
@ -341,13 +341,4 @@ public static String getFileContentsWithEncoding(String filePath, String encodin @@ -341,13 +341,4 @@ public static String getFileContentsWithEncoding(String filePath, String encodin
returnString="Erfolg";
return returnString;
}
public static String translateReturnCode2Html(int returnCode)
{
String returnString=translateReturnCode(returnCode);
if(returnCode==0)
returnString="<span style='color:green'>"+returnString+"</span>";
else
returnString="<span style='color:red'>"+returnString+"</span>";
return returnString;
}
}

6
src/de/superx/elt/SqlExecutor.java

@ -252,11 +252,7 @@ public class SqlExecutor { @@ -252,11 +252,7 @@ public class SqlExecutor {
else
{
//Kommandozeile: TODO hier sind noch keine FM Scripte mit SQLVAR möglich:
//FMParser myParser=new FMParser()
Connection con = mySxConnection.getConnection();
EtlFmParser myParser=new EtlFmParser("default",con);
sqlScript=myParser.simpleParser(sqlScript);
sqlScript=FMParser.simpleParser(mySxConnection.getPropfile(), sqlScript);
}
String keepGenerated=System.getProperty("FreemarkerKeepGenerated");
if(keepGenerated!=null && keepGenerated.equalsIgnoreCase("true"))

2
src/de/superx/elt/TableUploader.java

@ -79,7 +79,7 @@ public class TableUploader { @@ -79,7 +79,7 @@ public class TableUploader {
private boolean continueAfterError;
private boolean removeTrailingDelim=true;
private boolean isPostgres;
private boolean useBatch=false;
private boolean useBatch=true;
private static int maxCols=1000;
private String[] insert_cols = new String[maxCols];
private int[] insert_types = new int[maxCols];

213
src/de/superx/sxrest/JobEtlXml.java

@ -1,213 +0,0 @@ @@ -1,213 +0,0 @@
/*
* de.superx.etl - a package for controlling ETL routines
* Copyright (C) 2021 Daniel Quathamer <danielq@memtext.de>
*
* This package is licensed under the CampusSource License;
* http://www.campussource.de/org/license/
*/
package de.superx.sxrest;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.HEAD;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import de.memtext.util.DateUtils;
import de.superx.common.SxUser;
import de.superx.elt.EtlActionJob;
import de.superx.elt.EtlUtils;
import de.superx.servlet.SuperXManager;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
@Path("/jobetlxml/get/{jobUniquename}/{jobParamName}")
public class JobEtlXml {
@Context
Request request;
@GET
@Path("/view/{param}")
@Produces(MediaType.APPLICATION_XML)
public Document printXml(@PathParam("jobUniquename") String jobUniquename,
@PathParam("jobParamName") String jobParamName,
@PathParam("param") String param,
@Context HttpServletRequest request) {
String returntext="";
returntext = getJobEtlXml(jobUniquename,jobParamName, param, request);
return de.memtext.util.XMLUtils.buildDocumentFromString(returntext, false);
}
private String getJobEtlXml(String jobUniquename,
String jobParamName,
String param,
HttpServletRequest request) {
String returntext;
SxUser user = (SxUser) request.getSession().getAttribute("user");
//TODO: valide Einträge prüfen:
//ebenso param
System.out.println("JOB"+jobUniquename + " mit param "+jobParamName);
String mandantenid= (String) request.getSession().getAttribute("MandantenID");
if(mandantenid==null || mandantenid.equals(""))
mandantenid="default";
if (user == null || !user.isAdmin()) {
returntext="Fehlende Rechte";
}
else
{
int returnCode=0;
EtlActionJob myJob=new EtlActionJob(jobUniquename); //TODO:Mandantid
try {
myJob.initJob(jobUniquename,jobParamName+"="+param);
} catch (Exception e) {
// TODO Auto-generated catch block
returntext=e.toString();
returntext+=myJob.getLogoutput();
}
System.out.println("Job "+ jobUniquename+" initialized");
try {
returnCode= myJob.execute("");
returntext=myJob.getSw().toString();
} catch (Exception e) {
// TODO Auto-generated catch block
returntext=e.toString();
returntext+=myJob.getLogoutput();
}
}
return returntext;
}
@GET
@Path("/download/{param}")
@Produces(MediaType.APPLICATION_XML)
public String createDownloadXml(
@PathParam("jobUniquename") String jobUniquename,
@PathParam("jobParamName") String jobParamName,
@PathParam("param") String param,
@Context HttpServletRequest request) {
String returntext="";
returntext = getJobEtlXml(jobUniquename,jobParamName,param, request);
return returntext;
//return de.memtext.util.XMLUtils.buildDocumentFromString(returntext, false);
}
/* Aktuell noch nicht genutzt: */
@GET
@Path("/saveget/{params}")
@Produces(MediaType.TEXT_PLAIN)
public String saveGetXml(@QueryParam("param") String tid,
@QueryParam("Inhalt") String src,
@Context HttpServletRequest request) {
String returntext="";
SxUser user = (SxUser) request.getSession().getAttribute("user");
String mandantenid= (String) request.getSession().getAttribute("MandantenID");
if(mandantenid==null || mandantenid.equals(""))
mandantenid="default";
if (user == null || !user.isAdmin()) {
returntext="Fehlende Rechte";
}
else
{
returntext="tid="+tid+"-src="+src;
}
return returntext;
}
/* Aktuell noch nicht genutzt: */
@POST
@Path("/save")
@Consumes("application/x-www-form-urlencoded")
//@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_PLAIN)
public String saveXml(@FormParam("tid") String tid,
@FormParam("Inhalt") String src,
@Context HttpServletRequest request) {
String returntext="";
String jobuniquename="sx_select_mask";
int returnCode=0;
tid="16000";
SxUser user = (SxUser) request.getSession().getAttribute("user");
String mandantenid= (String) request.getSession().getAttribute("MandantenID");
String searchString="/etlAction[@name=\""+jobuniquename+"\"]/unload[@name=\"unload_maskeninfo\"]/rs/row/fld[@name=\"tid\"]";
if(mandantenid==null || mandantenid.equals(""))
mandantenid="default";
if (user == null || !user.isAdmin()) {
returntext="Fehlende Rechte";
}
else
{
try {
if(de.superx.elt.EtlUtils.isNodeValueInXml(src,searchString,tid,jobuniquename))
{
String job="sx_insert_mask";
returntext="TID="+tid;
String params="TID="+tid;
File temp;
temp = File.createTempFile("myTempFile", ".xml");
BufferedWriter bw = new BufferedWriter(new FileWriter(temp));
bw.write(src);
bw.close();
params+=EtlUtils.NEWLINE+"PATH_TO_INPUTFILE="+temp.getAbsolutePath();
params+=EtlUtils.NEWLINE+"FORMAT=XML";
EtlActionJob myJob=new EtlActionJob(job); //TODO:Mandantid
myJob.initJob(job,params);
returnCode= myJob.execute("");
returntext=myJob.getSw().toString();
}
else
returntext="Übergebene TID "+tid+" entspricht nicht der XML-Datei ";
} catch (Exception e) {
returntext=e.toString();
e.printStackTrace();
}
}
return returntext;
}
}

5
src/de/superx/sxrest/MaskXml.java

@ -147,12 +147,11 @@ public class MaskXml { @@ -147,12 +147,11 @@ public class MaskXml {
@FormParam("Inhalt") String src,
@Context HttpServletRequest request) {
String returntext="";
String jobuniquename="sx_select_mask";
int returnCode=0;
tid="16000";
SxUser user = (SxUser) request.getSession().getAttribute("user");
String mandantenid= (String) request.getSession().getAttribute("MandantenID");
String searchString="/etlAction[@name=\""+jobuniquename+"\"]/unload[@name=\"unload_maskeninfo\"]/rs/row/fld[@name=\"tid\"]";
String searchString="/etlAction[@name=\"sx_select_mask\"]/unload[@name=\"unload_maskeninfo\"]/rs/row/fld[@name=\"tid\"]";
if(mandantenid==null || mandantenid.equals(""))
mandantenid="default";
@ -163,7 +162,7 @@ public class MaskXml { @@ -163,7 +162,7 @@ public class MaskXml {
else
{
try {
if(de.superx.elt.EtlUtils.isNodeValueInXml(src,searchString,tid,jobuniquename))
if(de.superx.elt.EtlUtils.isNodeValueInXml(src,searchString,tid))
{
String job="sx_insert_mask";
returntext="TID="+tid;

BIN
superx/WEB-INF/lib/superx-etl.jar

Binary file not shown.

259
superx/edit/etl/etl_job_bearbeiten.jsp

@ -1,259 +0,0 @@ @@ -1,259 +0,0 @@
<%@ taglib uri="/WEB-INF/dbforms.tld" prefix="db" %>
<%@page pageEncoding="utf-8" contentType="text/html; charset=UTF-8" %>
<html xmlns:jsp="http://www.java.com/jsp" xmlns:db="http://www.wap-force.com/dbforms"><!--Automatically generated by module_scripts_create.x (SuperX)-->
<head xmlns:sx="http://memtext.de">
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="0" http-equiv="expires">
<LINK href="/superx/style/superx.css" type="text/css" REL="stylesheet">
<LINK href="/superx/xml/superxml_html.css" type="text/css" REL="stylesheet">
<LINK href="/superx/xml/maske_html.css" type="text/css" REL="stylesheet">
<LINK href="/superx/style/dbforms_40.css" type="text/css" REL="stylesheet">
<title>Maske Laderoutinen verwalten</title>
<script type="text/javascript">
var djConfig = {isDebug: false };
//djConfig.debugAtAllCosts = true;
</script><script src="/superx/xml/js/dojo/dojo.js" type="text/javascript">&nbsp;</script><script type="text/javascript">
dojo.require("dojo.widget.Dialog");
dojo.require("dojo.widget.Button");
dojo.require("dojo.widget.Tooltip");
dojo.require("dojo.string.common");
dojo.hostenv.writeIncludes();
</script><script src="/superx/xml/js/memtext/dbforms.js" type="text/javascript">&nbsp;</script>
<db:base/>
</head>
<script language="javascript"
src=<%= "\"" +request.getContextPath() + "/dbformslib/jscal/calendar.js\""%>>
</script>
<body class="clsPageBody"><%@ page import ="java.util.Hashtable" %>
<%
//HttpSession session=request.getSession(true);
if (request.getCharacterEncoding() == null)
request.setCharacterEncoding("UTF-8");
Object userobject=request.getSession().getAttribute("UserID");
String userid;
String filter="";
String sql="";
if(userobject == null)
{
%>
<jsp:forward page="/edit/not_authenticated.htm"/>
<%
}
else
userid=userobject.toString();
Object mandantobject=request.getSession().getAttribute("MandantenID");
String mandantenid="";
if(mandantobject != null)
mandantenid=mandantobject.toString();
//der superx-Default-Mandant ist bei dbforms ein Leerstring
if(mandantenid.equals("default"))
mandantenid="";
String db_form_name="etl_job";
String erlaubt="0";
%>
<%@ include file="/edit/check_authentication.inc" %>
<%
if(erlaubt.equals("0"))
{
%>
<jsp:forward page="/edit/not_authorized.htm"/>
<%
}
String keyfieldsused="false";
Object kf=request.getParameter("keyfieldsused");
if(kf != null)
keyfieldsused=kf.toString();
%>
<div style="margin: 0px; padding: 0px; overflow: hidden; width: 100%;" id="menuCaption">
<span class="menuCaptionTitle" id="menuCaptionTitle">Laderoutinen verwalten. </span><img border="0" height="18px" alt="Erl&auml;uterung" src="/superx/images/information.svg"><span style="display:none" connectId="menuCaption" dojoType="tooltip">In diesem Formular k&ouml;nnen Sie Laderoutinen verwalten.</span>
</div>
<%
String tid = request.getParameter("tid");
if(tid != null && !tid.equals("null")){
filter +="tid="+tid;
}
%>
<db:dbform tableName="etl_job" maxRows="1" autoUpdate="false" captionResource="true" multipart="false" followUp="/edit/etl/etl_job_bearbeiten.jsp" filter="<%= filter %>" orderBy="caption"
dbConnectionName="<%= mandantenid %>" ><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/><db:header/>
<db:errors/>
<db:body allowNew="true">
<table border="0" align="right" cellpadding="0" cellspacing="0">
<tr>
<td class="naviBtn">
<db:updateButton styleClass="clsButtonStyle" style="height:18px" alt="button.update" src="../../images/save.svg" flavor="image" id="db_updateButton"/></td><td class="naviBtn">
<db:deleteButton confirmMessage="button.delete.confirm" styleClass="clsButtonStyle" style="height:18px" alt="button.delete" src="../../images/delete.svg" id="db_deleteButton" flavor="image"/></td><td class="naviBtn"><span connectId="copy1" dojoType="tooltip">Datensatz kopieren. Mit Mausklick auf diesen Button kopieren Sie den aktuellen Datensatz. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navCopyButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.copy" src="../../images/copy.svg" id="copy1" flavor="image"/></td><td class="naviBtn"><span connectId="new1" dojoType="tooltip">Neuen Datensatz erzeugen. Mit Mausklick auf diesen Button geht das Formular bzw. Unterformular in den Einf&uuml;gemodus, alle vorhandenen Datens&auml;tze werden ausgeblendet. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navNewButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.new" src="../../images/context_add.svg" id="new1" flavor="image"/></td><td class="naviBtn"><span connectId="ins1" dojoType="tooltip">Datensatz einf&uuml;gen. Wenn Sie einen neuen Datensatz erzeugt haben, k&ouml;nnen Sie diesen mit diesem Button speichern.</span>
<db:insertButton showAlways="false" style="height:18px" styleClass="clsButtonStyle" alt="Datensatz einf&uuml;gen" src="../../images/circle_tick.svg" id="ins1" flavor="image"/></td>
</tr>
</table>
<p>&nbsp;</p>
<hr>
<p>
<input type="hidden" name="tid" value="<%= tid %>" />
</p>
<table class="db_form_table" cellspacing="0" cellpadding="0" width="100%" border="0">
<td>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td class="db_label">tid</td><td>
<db:label nullFieldValue="" fieldName="tid"/></td>
</tr>
<tr>
<td class="db_label">
<db:message key="Bezeichnung"/></td><td align="left">
<div id="fld_caption">
<db:textField nullFieldValue="" styleClass="clsInputStyle" onBlur="" maxlength="255" size="50" id="inp_etl_jobcaption" fieldName="caption"/>
</div>
</td>
</tr>
<tr>
<td class="db_label">
<db:message key="Schl&uuml;ssel"/></td><td align="left">
<div id="fld_uniquename">
<db:textField nullFieldValue="" styleClass="clsInputStyle" onBlur="" maxlength="255" size="50" id="inp_etl_jobuniquename" fieldName="uniquename"/>
</div>
</td>
</tr>
<tr>
<td class="db_label">
<db:message key="Job custom"/></td><td align="left">
<div id="fld_custom_job">
<db:textField nullFieldValue="" onBlur="" styleClass="clsInputStyle" id="inp_etl_jobcustom_job" size="6" fieldName="custom_job"/>
</div>
<span style="display:none" connectId="fld_custom_job" dojoType="tooltip">1=ja, d.h. von der Hochschule angepa&szlig;t, 0=nein, d.h.
Auslieferung der Software von HIS, 2=Auslieferung durch SuperX</span></td>
</tr>
<tr>
<td class="db_label">
<db:message key="Komponente"/></td><td align="left">
<div id="fld_systeminfo_id">
<input onblur="updateSelect(this)" style="display:none" size="10" name="key_etl_jobsysteminfo_id" class="schluesselfeld" type="text">
<db:select id="inp_etl_jobsysteminfo_id" styleClass="clsInputStyle" readOnly="false" onChange="updateKeyfield(this)" fieldName="systeminfo_id" customEntry=",,true"><% sql = "select tid, name from systeminfo order by name;"; %><db:queryData name="etl_job_systeminfo1" query="<%= sql %>" dbConnectionName="<%= mandantenid %>" /> </db:select>
</div>
</td>
</tr>
<tr>
<td class="db_label">Parameter</td><td>
<table class="subform">
<db:dbform orderBy="sortnr" childField="etl_job_id" parentField="tid" tableName="etl_job_param" maxRows="*" captionResource="true" followUp="/edit/etl/etl_job_bearbeiten.jsp" autoUpdate="false" multipart="false" dbConnectionName="<%= mandantenid %>">
<db:header>
<tr class="subform_tr">
<th class="subform_th">tid</th><th class="subform_th">Bezeichnung</th><th class="subform_th">Schl&uuml;ssel</th>
</tr>
</db:header>
<db:body allowNew="true">
<tr class="subform_tr">
<td>
<db:label nullFieldValue="" fieldName="tid"/></td><db:textField hidden="true" fieldName="job_id" overrideValue="<%= tid%>"/>
<td align="left">
<div id="fld_name">
<db:textField nullFieldValue="" styleClass="clsInputStyle" onBlur="" maxlength="255" size="30" fieldName="name"/>
</div>
</td><td align="left">
<div id="fld_uniquename">
<db:textField nullFieldValue="" styleClass="clsInputStyle" onBlur="" maxlength="255" size="50" fieldName="uniquename"/>
</div>
</td><td><%
if(currentRow_etl_job_param != null)
{
%><a target="details" title="Details" href="<%= response.encodeURL("/superx/edit/etl/etl_job_param_bearbeiten.jsp") %>?tid=<db:label nullFieldValue="" pattern="######" fieldName="tid"/>" onClick="javascript:neu=window.open('<%= response.encodeURL("/superx/edit/etl/etl_job_param_bearbeiten.jsp") %>?tid=<db:label nullFieldValue="" pattern="######" fieldName="tid"/>','_blank','directories=no,location=no,menubar=no,toolbar=no,scrollbars=yes,resizable=yes,width=800,height=600'); return false;"><img border="0" alt="Details" src="../../images/pencil.svg"></a><%
}
%></td><td class="naviBtn">
<db:updateButton styleClass="clsButtonStyle" style="height:18px" alt="button.update" src="../../images/save.svg" flavor="image" id="db_updateButton"/></td><td class="naviBtn">
<db:deleteButton confirmMessage="button.delete.confirm" styleClass="clsButtonStyle" style="height:18px" alt="button.delete" src="../../images/delete.svg" id="db_deleteButton" flavor="image"/></td><td class="naviBtn"><span connectId="copy6" dojoType="tooltip">Datensatz kopieren. Mit Mausklick auf diesen Button kopieren Sie den aktuellen Datensatz. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navCopyButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.copy" src="../../images/copy.svg" id="copy6" flavor="image"/></td>
</tr>
</db:body>
<db:footer>
<tr class="subform_tr">
<td><td class="naviBtn"><span connectId="new6" dojoType="tooltip">Neuen Datensatz erzeugen. Mit Mausklick auf diesen Button geht das Formular bzw. Unterformular in den Einf&uuml;gemodus, alle vorhandenen Datens&auml;tze werden ausgeblendet. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navNewButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.new" src="../../images/context_add.svg" id="new6" flavor="image"/></td><td class="naviBtn"><span connectId="ins6" dojoType="tooltip">Datensatz einf&uuml;gen. Wenn Sie einen neuen Datensatz erzeugt haben, k&ouml;nnen Sie diesen mit diesem Button speichern.</span>
<db:insertButton showAlways="false" style="height:18px" styleClass="clsButtonStyle" alt="Datensatz einf&uuml;gen" src="../../images/circle_tick.svg" id="ins6" flavor="image"/></td></td>
</tr>
</db:footer>
</db:dbform>
</table>
</td>
</tr>
<tr>
<td class="db_label">Ladeschritte</td><td>
<table class="subform">
<db:dbform orderBy="sortnr" childField="job_id" parentField="tid" tableName="etl_step_relation" maxRows="*" captionResource="true" followUp="/edit/etl/etl_job_bearbeiten.jsp" autoUpdate="false" multipart="false" dbConnectionName="<%= mandantenid %>">
<db:header>
<tr class="subform_tr">
<th class="subform_th">tid</th><th class="subform_th">Ladeschritt</th><th class="subform_th">&Uuml;bergeordneter Ladeschritt</th><th class="subform_th">Ladejob bei Fehler weiterf&uuml;hren</th><th class="subform_th">Ladeschritt aktiv</th><th class="subform_th">Ladeschritt Sortiernr.</th><th class="subform_th">Ladeschritt custom</th>
</tr>
</db:header>
<db:body allowNew="true">
<tr class="subform_tr">
<td>
<db:label nullFieldValue="" fieldName="tid"/></td><db:textField hidden="true" fieldName="job_id" overrideValue="<%= tid%>"/>
<td align="left">
<div id="fld_step_id">
<input onblur="updateSelect(this)" style="display:none" size="10" name="key_etl_step_relationstep_id" class="schluesselfeld" type="text">
<db:select id="inp_etl_step_relationstep_id" styleClass="clsInputStyle" readOnly="false" onChange="updateKeyfield(this)" fieldName="step_id" customEntry=",,true"><% sql = "select tid, caption from etl_step order by caption;"; %><db:queryData name="etl_step_relation_etl_step6" query="<%= sql %>" dbConnectionName="<%= mandantenid %>" /> </db:select>
</div>
</td><td align="left">
<div id="fld_parent_step_id">
<input onblur="updateSelect(this)" style="display:none" size="10" name="key_etl_step_relationparent_step_id" class="schluesselfeld" type="text">
<db:select id="inp_etl_step_relationparent_step_id" styleClass="clsInputStyle" readOnly="false" onChange="updateKeyfield(this)" fieldName="parent_step_id" customEntry=",,true"><% sql = "select tid, caption from etl_step order by caption;"; %><db:queryData name="etl_step_relation_etl_step7" query="<%= sql %>" dbConnectionName="<%= mandantenid %>" /> </db:select>
</div>
</td><td align="left">
<div id="fld_force_continue">
<db:textField styleClass="clsInputStyle" onBlur="" size="6" fieldName="force_continue"/>
</div>
</td><td align="left">
<div id="fld_step_active">
<db:textField styleClass="clsInputStyle" onBlur="" size="6" fieldName="step_active"/>
</div>
</td><td align="left">
<div id="fld_sortnr">
<db:textField styleClass="clsInputStyle" onBlur="" size="6" fieldName="sortnr"/>
</div>
</td><td align="left">
<div id="fld_custom_step">
<db:textField styleClass="clsInputStyle" onBlur="" size="6" fieldName="custom_step"/>
</div>
<span style="display:none" connectId="fld_custom_step" dojoType="tooltip">1=ja, d.h. von der Hochschule angepa&szlig;t, 0=nein, d.h.
Auslieferung der Software</span></td><td><%
if(currentRow_etl_step_relation != null)
{
%><a target="details" title="Details" href="<%= response.encodeURL("/superx/edit/etl/etl_step_bearbeiten.jsp") %>?tid=<db:label nullFieldValue="" pattern="######" fieldName="step_id"/>" onClick="javascript:neu=window.open('<%= response.encodeURL("/superx/edit/etl/etl_step_bearbeiten.jsp") %>?tid=<db:label nullFieldValue="" pattern="######" fieldName="step_id"/>','_blank','directories=no,location=no,menubar=no,toolbar=no,scrollbars=yes,resizable=yes,width=800,height=600'); return false;"><img border="0" alt="Details" src="../../images/pencil.svg"></a><%
}
%></td><td class="naviBtn">
<db:updateButton styleClass="clsButtonStyle" style="height:18px" alt="button.update" src="../../images/save.svg" flavor="image" id="db_updateButton"/></td><td class="naviBtn">
<db:deleteButton confirmMessage="button.delete.confirm" styleClass="clsButtonStyle" style="height:18px" alt="button.delete" src="../../images/delete.svg" id="db_deleteButton" flavor="image"/></td><td class="naviBtn"><span connectId="copy7" dojoType="tooltip">Datensatz kopieren. Mit Mausklick auf diesen Button kopieren Sie den aktuellen Datensatz. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navCopyButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.copy" src="../../images/copy.svg" id="copy7" flavor="image"/></td>
</tr>
</db:body>
<db:footer>
<tr class="subform_tr">
<td><td class="naviBtn"><span connectId="new7" dojoType="tooltip">Neuen Datensatz erzeugen. Mit Mausklick auf diesen Button geht das Formular bzw. Unterformular in den Einf&uuml;gemodus, alle vorhandenen Datens&auml;tze werden ausgeblendet. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navNewButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.new" src="../../images/context_add.svg" id="new7" flavor="image"/></td><td class="naviBtn"><span connectId="ins7" dojoType="tooltip">Datensatz einf&uuml;gen. Wenn Sie einen neuen Datensatz erzeugt haben, k&ouml;nnen Sie diesen mit diesem Button speichern.</span>
<db:insertButton showAlways="false" style="height:18px" styleClass="clsButtonStyle" alt="Datensatz einf&uuml;gen" src="../../images/circle_tick.svg" id="ins7" flavor="image"/></td></td>
</tr>
</db:footer>
</db:dbform>
</table>
</td>
</tr>
</table>
</td><td align="center" style="padding-left:10px"></td>
</table>
</db:body>
<db:footer/></db:dbform></body>
</html>

158
superx/edit/etl/etl_job_param_bearbeiten.jsp

@ -1,158 +0,0 @@ @@ -1,158 +0,0 @@
<%@ taglib uri="/WEB-INF/dbforms.tld" prefix="db" %>
<%@page pageEncoding="utf-8" contentType="text/html; charset=UTF-8" %>
<html>
<!--Automatically generated by module_scripts_create.x (SuperX)-->
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="0" http-equiv="expires">
<LINK href="/superx/style/superx.css" type="text/css" REL="stylesheet">
<LINK href="/superx/xml/superxml_html.css" type="text/css" REL="stylesheet">
<LINK href="/superx/xml/maske_html.css" type="text/css" REL="stylesheet">
<LINK href="/superx/style/dbforms_40.css" type="text/css" REL="stylesheet">
<title>Maske Parameter f&uuml;r Ladejobs verwalten</title>
<script type="text/javascript">
var djConfig = {isDebug: false };
//djConfig.debugAtAllCosts = true;
</script><script src="/superx/xml/js/dojo/dojo.js" type="text/javascript">&nbsp;</script><script type="text/javascript">
dojo.require("dojo.widget.Dialog");
dojo.require("dojo.widget.Button");
dojo.require("dojo.widget.Tooltip");
dojo.require("dojo.string.common");
dojo.hostenv.writeIncludes();
</script><script src="/superx/xml/js/memtext/dbforms.js" type="text/javascript">&nbsp;</script>
<db:base/>
</head>
<script language="javascript"
src=<%= "\"" +request.getContextPath() + "/dbformslib/jscal/calendar.js\""%>>
</script>
<body class="clsPageBody"><%@ page import ="java.util.Hashtable" %>
<%
//HttpSession session=request.getSession(true);
if (request.getCharacterEncoding() == null)
request.setCharacterEncoding("UTF-8");
Object userobject=request.getSession().getAttribute("UserID");
String userid;
String filter="";
String sql="";
if(userobject == null)
{
%>
<jsp:forward page="/edit/not_authenticated.htm"/>
<%
}
else
userid=userobject.toString();
Object mandantobject=request.getSession().getAttribute("MandantenID");
String mandantenid="";
if(mandantobject != null)
mandantenid=mandantobject.toString();
//der superx-Default-Mandant ist bei dbforms ein Leerstring
if(mandantenid.equals("default"))
mandantenid="";
String db_form_name="etl_job_param";
String erlaubt="0";
%>
<%@ include file="/edit/check_authentication.inc" %>
<%
if(erlaubt.equals("0"))
{
%>
<jsp:forward page="/edit/not_authorized.htm"/>
<%
}
String keyfieldsused="false";
Object kf=request.getParameter("keyfieldsused");
if(kf != null)
keyfieldsused=kf.toString();
%>
<div style="margin: 0px; padding: 0px; overflow: hidden; width: 100%;" id="menuCaption">
<span class="menuCaptionTitle" id="menuCaptionTitle">Parameter f&uuml;r Ladejobs verwalten. </span><img border="0" height="18px" alt="Erl&auml;uterung" src="/superx/images/information.svg"><span style="display:none" connectId="menuCaption" dojoType="tooltip">In diesem Formular k&ouml;nnen Sie Parameter f&uuml;r Ladejobs verwalten.</span>
</div>
<%
String tid = request.getParameter("tid");
if(tid != null && !tid.equals("null")){
filter +="tid="+tid;
}
%>
<db:dbform tableName="etl_job_param" maxRows="1" autoUpdate="false" captionResource="true" multipart="false" followUp="/edit/etl/etl_job_param_bearbeiten.jsp" filter="<%= filter %>" orderBy=""
dbConnectionName="<%= mandantenid %>" ><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/><db:header/>
<db:errors/>
<db:body allowNew="true">
<table border="0" align="right" cellpadding="0" cellspacing="0">
<tr>
<td class="naviBtn">
<db:updateButton styleClass="clsButtonStyle" style="height:18px" alt="button.update" src="../../images/save.svg" flavor="image" id="db_updateButton"/></td><td class="naviBtn">
<db:navFirstButton styleClass="clsButtonStyle" style="height:18px" caption="button.nav.first" alt="button.nav.first" src="../../images/resultset_first.svg" flavor="image" id="db_navFirstButton"/></td><td class="naviBtn">
<db:navPrevButton styleClass="clsButtonStyle" style="height:18px" alt="button.nav.previous" src="../../images/resultset_previous.svg" flavor="image" id="db_navPrevButton"/></td><td class="naviBtn">
<db:navNextButton styleClass="clsButtonStyle" style="height:18px" alt="button.nav.next" src="../../images/resultset_next.svg" flavor="image" id="db_navNextButton"/></td><td class="naviBtn">
<db:navLastButton styleClass="clsButtonStyle" style="height:18px" alt="button.nav.last" src="../../images/resultset_last.svg" flavor="image" id="db_navLastButton"/></td><td class="naviBtn">
<db:deleteButton confirmMessage="button.delete.confirm" styleClass="clsButtonStyle" style="height:18px" alt="button.delete" src="../../images/delete.svg" id="db_deleteButton" flavor="image"/></td><td class="naviBtn"><span connectId="copy2" dojoType="tooltip">Datensatz kopieren. Mit Mausklick auf diesen Button kopieren Sie den aktuellen Datensatz. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navCopyButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.copy" src="../../images/copy.svg" id="copy2" flavor="image"/></td><td class="naviBtn"><span connectId="new2" dojoType="tooltip">Neuen Datensatz erzeugen. Mit Mausklick auf diesen Button geht das Formular bzw. Unterformular in den Einf&uuml;gemodus, alle vorhandenen Datens&auml;tze werden ausgeblendet. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navNewButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.new" src="../../images/context_add.svg" id="new2" flavor="image"/></td><td class="naviBtn"><span connectId="ins2" dojoType="tooltip">Datensatz einf&uuml;gen. Wenn Sie einen neuen Datensatz erzeugt haben, k&ouml;nnen Sie diesen mit diesem Button speichern.</span>
<db:insertButton showAlways="false" style="height:18px" styleClass="clsButtonStyle" alt="Datensatz einf&uuml;gen" src="../../images/circle_tick.svg" id="ins2" flavor="image"/></td><td class="naviBtn"><input type="hidden" name="keyfieldsused" value="<%= keyfieldsused %>" /><a onclick="maskeTogglekeyfields()" title="Schl&uuml;sselfelder an/aus"><img alt="Schl&uuml;sselfelder an/aus" src="../../images/key.svg" border="0"></a></td>
</tr>
</table>
<p>&nbsp;</p>
<hr>
<p>
<input type="hidden" name="tid" value="<%= tid %>" />
</p>
<table class="db_form_table" cellspacing="0" cellpadding="0" width="100%" border="0">
<td>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td class="db_label">tid</td><td>
<db:label nullFieldValue="" fieldName="tid"/></td>
</tr>
<tr>
<td class="db_label">
<db:message key="Ladejob"/></td><td align="left">
<div id="fld_etl_job_id">
<input onblur="updateSelect(this)" style="display:none" size="10" name="key_etl_job_parametl_job_id" class="schluesselfeld" type="text">
<db:select id="inp_etl_job_parametl_job_id" styleClass="clsInputStyle" readOnly="false" onChange="updateKeyfield(this)" fieldName="etl_job_id" customEntry=",,true"><% sql = "select tid, caption from etl_job order by caption;"; %><db:queryData name="etl_job_param_etl_job8" query="<%= sql %>" dbConnectionName="<%= mandantenid %>" /> </db:select>
</div>
</td>
</tr>
<tr>
<td class="db_label">
<db:message key="Schl&uuml;ssel"/></td><td align="left">
<div id="fld_uniquename">
<db:textField nullFieldValue="" styleClass="clsInputStyle" onBlur="" maxlength="255" size="30" id="inp_etl_job_paramuniquename" fieldName="uniquename"/>
</div>
</td>
</tr>
<tr>
<td class="db_label">
<db:message key="Bezeichnung"/></td><td align="left">
<div id="fld_name">
<db:textField nullFieldValue="" styleClass="clsInputStyle" onBlur="" maxlength="255" size="50" id="inp_etl_job_paramname" fieldName="name"/>
</div>
</td>
</tr>
<tr>
<td class="db_label">
<db:message key="Defaultwert"/></td><td align="left">
<div id="fld_param_default">
<db:textField nullFieldValue="" styleClass="clsInputStyle" onBlur="" maxlength="255" size="50" id="inp_etl_job_paramparam_default" fieldName="param_default"/>
</div>
</td>
</tr>
</table>
</td><td align="center" style="padding-left:10px"></td>
</table>
</db:body>
<db:footer/></db:dbform></body>
</html>

360
superx/edit/etl/etl_manager.jsp

@ -1,14 +1,7 @@ @@ -1,14 +1,7 @@
<%@ taglib uri="/WEB-INF/dbforms.tld" prefix="db" %>
<%@page pageEncoding="utf-8" contentType="text/html; charset=UTF-8" %>
<%@ page import ="de.superx.servlet.ServletUtils" %>
<%@ page import ="de.superx.servlet.SxPools,java.util.ArrayList" %>
<%@ page import ="org.dbforms.config.DbFormsConfigRegistry,java.sql.Connection,java.sql.Statement,java.sql.ResultSet,de.superx.common.SxUser" %>
<%
String platform=de.superx.servlet.SuperXManager.isHis1?"HISinOne":"SuperX";
String restApiPath="sxrest";// klappt noch nicht platform.equals("HISinOne")?"ds/api":"sxrest";
%>
<%@ page import ="de.superx.servlet.SxPools" %>
<html>
@ -16,63 +9,51 @@ String restApiPath="sxrest";// klappt noch nicht platform.equals("HISinOne")?"ds @@ -16,63 +9,51 @@ String restApiPath="sxrest";// klappt noch nicht platform.equals("HISinOne")?"ds
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Job Management</title>
<link rel="stylesheet" href="../../style/dbforms.css" />
<link rel="stylesheet" href="../../style/bulma.css" />
<title>ETL Manager</title>
<link rel="stylesheet" href="../../style/bulma.css" />
<link rel="stylesheet" href="../../style/bulma-tooltip.min.css" />
<!-- <link rel="stylesheet" href="../../style/sx_common.css" />-->
<script type="text/javascript" src="/superx/xml/js/memtext/sx_functions.js"></script>
<script type="text/javascript" src="/superx/xml/js/memtext/nd_functions.js"></script>
</head>
<script language="Javascript">
var restApiPath="<%=restApiPath %>";
function getVersion()
{
//alert("klappt");
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("version").innerHTML = this.responseText;
//alert(this.responseText);
}
};
xhttp.open("GET", "../../sxrest/version", true);
xhttp.send();
}
function getTabMenu(srctype,caption,i,jobExportUniquename,jobImportUniquename,maskeninfo_tid,felderinfo_tid,paramname,jobParamName)
function getMaskMenu(srctype)
{
var zs="";
zs+="<input type=\"hidden\" name=\"jobParamName\" value=\""+jobParamName+"\"/> ";
zs+="<input type=\"hidden\" name=\"jobParamValue\" value=\"\"/> ";
if(srctype=="load")
{
zs+=paramname+": ";
zs+="<input class=\"schluesselfeld\" size=\"5\" style=\"display:none;\" name=\""+paramname+"\" id=\""+paramname+"\"/> ";
zs+="<input type=\"text\" size=\"20\" name=\"label_"+paramname+"\" onClick=\"EtlMaskeComboLaden('"+paramname+"',20,'',"+maskeninfo_tid+");\" />";
document.getElementById("MaskHeader").innerHTML=caption+"-Quellcode exportieren";
zs+="<input type='hidden' name='jobuniquename' value='"+jobExportUniquename+"'/>";
//zs+="<button class=\"button has-tooltip-multiline has-tooltip-right\" data-tooltip=\"Quellcode exportieren\" onclick=\"getSrcAsXml('"+jobExportUniquename+"','"+jobParamName+"',document.getElementById('"+paramname+"').value);return false;\">anzeigen...</button>";
zs+="<a onclick=\"getSrcAsXml('"+jobExportUniquename+"','"+jobParamName+"',document.getElementById('"+paramname+"').value);return false;\" class=\"linkLookImage\"><img title=\"Quellcode anzeigen\" alt=\"Quellcode anzeigen\" src=\"../../images/eye.svg\" border=\"0\"/></a>";
zs+="<a onclick=\"downloadMaskSrc('"+jobExportUniquename+"','"+jobParamName+"',document.getElementById('"+paramname+"').value);return false;\" class=\"linkLookImage\"><img title=\"Quellcode herunterladen\" alt=\"Quellcode herunterladen\" src=\"../../images/downloadblck.svg\" border=\"0\"/></a>";
zs+="<a onclick=\"togglekeyfields(); return false;\" class=\"linkLookImage\"><img title=\"Schlüsselfelder an- oder ausschalten\" alt=\"Schlüsselfelder an- oder ausschalten\" src=\"../../images/key.svg\" border=\"0\"/></a>";
//zs+="<button class=\"button has-tooltip-multiline has-tooltip-right\" data-tooltip=\"Quellcode exportieren\" onclick=\"getSrcAsXml('"+jobExportUniquename+"','"+jobParamName+"',document.getElementById('"+paramname+"').value);return false;\">anzeigen...</button>";
//zs+="<button class=\"button has-tooltip-multiline has-tooltip-right\" data-tooltip=\"Quellcode herunterladen\" onclick=\"downloadMaskSrc('"+jobExportUniquename+"','"+jobParamName+"',document.getElementById('"+paramname+"').value);return false;\">herunterladen...</button>";
document.getElementById("MaskHeader").innerHTML="Masken-Quellcode exportieren";
var zs="TID = <input type='text' size='10' id='Maskentid' />"+" <button class=\"button has-tooltip-multiline has-tooltip-right\" data-tooltip=\"Quellcode der Maske mit der Nummer im Feld TID exportieren\" onclick=\"getMaskSrc(document.getElementById('Maskentid').value)\">anzeigen...</button>";
zs +="<button class=\"button has-tooltip-multiline has-tooltip-right\" data-tooltip=\"Quellcode der Maske mit der Nummer im Feld TID herunterladen\" onclick=\"downloadMaskSrc(document.getElementById('Maskentid').value)\">herunterladen...</button>";
document.getElementById("MaskSubHeader").innerHTML=zs;
}
if(srctype=="save")
{
zs+=paramname+" importieren&nbsp;";
document.getElementById("MaskHeader").innerHTML=caption+"-Quellcode importieren";
zs+="<input type='hidden' name='src' /><input type='hidden' name='jobuniquename' value='"+jobImportUniquename+"'/>";
//zs+="<button class=\"button has-tooltip-multiline has-tooltip-right\" data-tooltip=\"Quellcode importieren\" onclick=\"saveEtlXmlSrc('"+jobParamName+"',document.getElementById('"+paramname+"').value)\">importieren...</button>";
zs+="<a onclick=\"saveEtlXmlSrc('"+jobParamName+"');return false;\" class=\"linkLookImage\"><img title=\"Quellcode importieren\" alt=\"Quellcode importieren\" src=\"../../images/resultset_up.svg\" border=\"0\"/></a>";
//,document.getElementById('"+paramname+"').value
document.getElementById("MaskHeader").innerHTML="Masken-Quellcode importieren";
document.getElementById("MaskSubHeader").innerHTML="<form method=\"post\" name=\"saveMask\" action=\"../../edit/etl/saveMask.jsp\" target=\"_blank\"> TID = <input type='text' size='10' id='Maskentid' name='maskeninfo_id' /><input type='hidden' name='src' /><button class=\"button has-tooltip-multiline has-tooltip-right\" data-tooltip=\"Quellcode der Maske mit der Nummer im Feld TID importieren\" onclick=\"saveMaskSrc(document.getElementById('Maskentid').value)\">importieren...</button></form>";
//document.getElementById("maskentid_for_upload").style.visibility="visible";
//document.getElementById("button_for_upload").style.visibility="visible";
//document.getElementById("MaskSubHeader").innerHTML="Maske TID="+tid;
//document.getElementById("MaskSubHeader").innerHTML="TID=<input type='text' size='10' id='Maskentid' />"+" <button class=\"button has-tooltip-multiline has-tooltip-right\" data-tooltip=\"Quellcode der Maske mit der Nummer im Feld TID exportieren\" onclick=\"saveEtlXmlSrc(document.getElementById('Maskentid').value)\">importieren...</button>";
//document.getElementById("MaskSubHeader").innerHTML="TID=<input type='text' size='10' id='Maskentid' />"+" <button class=\"button has-tooltip-multiline has-tooltip-right\" data-tooltip=\"Quellcode der Maske mit der Nummer im Feld TID exportieren\" onclick=\"saveMaskSrc(document.getElementById('Maskentid').value)\">importieren...</button>";
}
document.getElementById("MaskSubHeader").innerHTML=zs;
}
function getSrcAsXml(jobUniquename,jobParamName,jobParamValue)
function getMaskSrc(tid)
{
//document.getElementById("MaskHeader").innerHTML="Masken-Quellcode laden";
//document.getElementById("MaskSubHeader").innerHTML="Maske TID="+tid;
@ -91,23 +72,28 @@ var xhttp = new XMLHttpRequest(); @@ -91,23 +72,28 @@ var xhttp = new XMLHttpRequest();
document.getElementById("Inhalt").innerHTML="Serveranfrage Antwort... "+this.status;
}
};
xhttp.open("GET", "../../"+restApiPath+"/jobetlxml/get/"+jobUniquename+"/"+jobParamName+"/view/"+jobParamValue, true);
xhttp.open("GET", "../../sxrest/maskxml/get/"+tid, true);
xhttp.send();
}
function downloadMaskSrc(jobUniquename,jobParamName,jobParamValue)
function downloadMaskSrc(tid)
{
window.open("../../"+restApiPath+"/jobetlxml/get/"+jobUniquename+"/"+jobParamName+"/download/"+jobParamValue,"_blank");
window.open("../../sxrest/maskxml/download/"+tid,"_blank");
}
function saveEtlXmlSrc(jobParamName)
function saveMaskSrc(tid)
{
document.forms["saveEtlXml"].elements["src"].value=document.getElementById("Inhalt").value;
document.forms["saveEtlXml"].elements["jobParamName"].value=jobParamName;
//document.forms["saveEtlXml"].elements["jobParamValue"].value=jobParamValue;
document.forms["saveEtlXml"].submit();
document.forms["saveMask"].elements["src"].value=document.getElementById("Inhalt").value;
if(document.forms["saveMask"].elements["src"].value=="" || document.forms["saveMask"].elements["maskeninfo_id"].value=="")
{
alert("Bitte setzen Sie eine Nummer in das Feld TID und einen passenden XML ins Feld Inhalt");
return false;
}
else
{
document.forms["saveMask"].submit();
}
}
function getComponentMenu(systeminfo_id, componentName,componentUniquename,componentVersion)
{
@ -120,7 +106,7 @@ menuLines+="<form method=\"post\" name=\"execUpdate\" action=\"../../edit/etl/jo @@ -120,7 +106,7 @@ menuLines+="<form method=\"post\" name=\"execUpdate\" action=\"../../edit/etl/jo
//<p><button class=\"button has-tooltip-multiline has-tooltip-right\" data-tooltip=\"Update starten\" onclick=\"launchUpdate('"+componentName+"')\">HLR starten</button></p>";
document.getElementById("MaskSubHeader").innerHTML=menuLines;
//document.getElementById("MaskSubHeader").innerHTML="<form method=\"post\" name=\"saveEtlXml\" action=\"../../edit/etl/jobexecutor.jsp\" target=\"_blank\"> TID = <input type='text' size='10' id='Maskentid' name='maskeninfo_id' /><input type='hidden' name='src' /><button class=\"button has-tooltip-multiline has-tooltip-right\" data-tooltip=\"Quellcode der Maske mit der Nummer im Feld TID importieren\" onclick=\"saveEtlXmlSrc(document.getElementById('Maskentid').value)\">importieren...</button></form>";
//document.getElementById("MaskSubHeader").innerHTML="<form method=\"post\" name=\"saveMask\" action=\"../../edit/etl/jobexecutor.jsp\" target=\"_blank\"> TID = <input type='text' size='10' id='Maskentid' name='maskeninfo_id' /><input type='hidden' name='src' /><button class=\"button has-tooltip-multiline has-tooltip-right\" data-tooltip=\"Quellcode der Maske mit der Nummer im Feld TID importieren\" onclick=\"saveMaskSrc(document.getElementById('Maskentid').value)\">importieren...</button></form>";
@ -141,42 +127,9 @@ var fldElem=document.getElementById(mydiv); @@ -141,42 +127,9 @@ var fldElem=document.getElementById(mydiv);
}
}
function EtlMaskeComboLaden(fname,zeilenanzahl, caption,maskentid) {
var editurl="/superx/edit/kern/maske_combo_laden.jsp?tid="+maskentid+ "&Feldname="+getEncoded(fname);
editurl +="&zeilenanzahl="+zeilenanzahl+"&params=";
neu2=window.open(editurl,"_blank","directories=no,location=no,menubar=no,scrollbars=yes,resizable=yes,toolbar=no,width=800,height=660");
return false;
}
function togglekeyfields() {
var myform=document.forms[0];
myform.elements.keyfieldsused.value = "true";
for (i = 0; i < myform.elements.length; i++) {
e = myform.elements[i];
if (e.getAttribute('class') == "schluesselfeld" || e.className ==
"schluesselfeld")
if (e.style.display != "none") {
e.style.display = "none";
} else e.style.display = "";
}
}
</script>
<style type="text/css">
.buttonbar img {
height: 1.5rem;
width: 1.7rem;
margin: 8px 0px 0px 0px;
padding: 0rem 0.1rem 0rem 0.1rem;
}
.buttonbar input {
height: 1.5rem;
width: 14rem;
margin: 8px 10px 0px 0px;
padding: 0rem 0.1rem 0rem 0.1rem;
}
</style>
<body>
<%
//init Variables:
@ -184,7 +137,6 @@ String EntwicklungsmodusAn=""; @@ -184,7 +137,6 @@ String EntwicklungsmodusAn="";
String EntwicklungsmodusAus="checked";
Object mandantobject=request.getSession().getAttribute("MandantenID");
String mandantenid="";
if(mandantobject != null)
mandantenid=mandantobject.toString();
@ -196,101 +148,20 @@ String tab = request.getParameter("tab"); @@ -196,101 +148,20 @@ String tab = request.getParameter("tab");
if(tab == null)
tab="";
//Daten aus Datenbank werden in Variablen gespeichert
Connection conmm=null;
class etlJob{
String tabUniquename;
String tabCaption;
String jobExportUniquename;
String jobImportUniquename;
String jobParamFieldname;
String jobParamFieldTid;
String jobParamMaskTid;
String jobParamName;
}
ArrayList<etlJob> etlJobs = new ArrayList<etlJob>();
//out.println("Getting Connection for mandantenid="+mandantenid);
try {
conmm = DbFormsConfigRegistry.instance().lookup().getConnection(mandantenid);
//System.out.println("Got Connection");
Statement st;
st=conmm.createStatement();
ResultSet rs;
String sqlQueryEtlManagerTab="select T.caption,T.uniquename,T.tid,T.job_export,T.job_import,T.maskeninfo_id,T.felderinfo_id";
sqlQueryEtlManagerTab+=", F.name as feldname,T.job_param_ui ";
sqlQueryEtlManagerTab+=" from etl_manager_tab T, felderinfo F where T.felderinfo_id=F.tid and T.active=1";
sqlQueryEtlManagerTab+=" order by 1";
rs = st.executeQuery(sqlQueryEtlManagerTab);
int i=0;
while (rs.next()) {
etlJob myJob=new etlJob();
myJob.tabCaption=rs.getString(1);
myJob.tabUniquename=rs.getString(2);
myJob.jobExportUniquename=rs.getString(4);
myJob.jobImportUniquename=rs.getString(5);
myJob.jobParamMaskTid=rs.getString(6);
myJob.jobParamFieldTid=rs.getString(7);
myJob.jobParamFieldname=rs.getString(8);
myJob.jobParamName=rs.getString(9);
etlJobs.add(myJob);
i++;
}
rs.close();
st.close();
conmm.close();
} //Check DB connection
catch (Exception e) {
out.print("<html><body>Fehler bei Datenverbindung: "+e+ " MandantID"+mandantenid +"</body></html>");
}
etlJob[] etlJobsArr=new etlJob[etlJobs.size()];
etlJobsArr=etlJobs.toArray(etlJobsArr);
%>
<!-- START NAV -->
<nav class="navbar is-white">
<div class="container">
<div class="navbar-brand">
<a class="navbar-item" href="etl_manager.jsp">Job Management</a>
<a class="navbar-item" href="etl_manager.jsp">ETL Manager</a>
</div>
<%
for (int i = 0; i < etlJobsArr.length; i++) {
String tabUniquename=etlJobsArr[i].tabUniquename;
String tabCaption=etlJobsArr[i].tabCaption;
//String jobImportUniquename=etlJobsArr[i].jobImportUniquename;
//String jobExportUniquename=etlJobsArr[i].jobExportUniquename;
String tabUrl="etl_manager.jsp?tab="+tabUniquename.toLowerCase();
%>
<a class="navbar-item" href="<%= tabUrl %>">
<% out.print(tabCaption); %>
</a>
<%
}
%>
<a class="navbar-item" href="etl_manager.jsp?tab=mask">
Masken
</a>
<!--
<a class="navbar-item" href="etl_manager.jsp?tab=action">
Komponenten
@ -307,51 +178,50 @@ String tabUrl="etl_manager.jsp?tab="+tabUniquename.toLowerCase(); @@ -307,51 +178,50 @@ String tabUrl="etl_manager.jsp?tab="+tabUniquename.toLowerCase();
<div class="columns">
<div class="column is-3 ">
<aside class="menu is-hidden-mobile">
<!--<p class="menu-label">
<p class="menu-label">
Untermenü
</p>
<ul class="menu-list">
<li><a class="is-active">Startseite</a></li>
<!--<li><a>Customers</a></li>
<li><a>Other</a></li>-->
</ul>
-->
<%
for (int i = 0; i < etlJobsArr.length; i++) {
if(tab.equals(etlJobsArr[i].tabUniquename.toLowerCase()))
if(tab.equals("mask"))
{
%>
<p class="menu-label">
Masken-Sicherung
</p>
<ul class="menu-list">
<li>
<a class="is-active">
<% out.print(etlJobsArr[i].tabCaption);
String menuArgs=",";
menuArgs+="'"+etlJobsArr[i].tabCaption+"'";
menuArgs+=","+i;
menuArgs+=",'"+etlJobsArr[i].jobExportUniquename+"'";
menuArgs+=",'"+etlJobsArr[i].jobImportUniquename+"'";
menuArgs+=",'"+etlJobsArr[i].jobParamMaskTid+"'";
menuArgs+=",'"+etlJobsArr[i].jobParamFieldTid+"'";
menuArgs+=",'"+etlJobsArr[i].jobParamFieldname+"'";
menuArgs+=",'"+etlJobsArr[i].jobParamName+"'";
%>
</a>
</li>
</ul>
<ul class="menu-list">
<li><a onClick="<%= "getTabMenu('load'"+menuArgs+");" %>"><% out.print(etlJobsArr[i].tabCaption); %>-Quellcode exportieren</a></li>
<li><a onClick="<%= "getTabMenu('save'"+menuArgs+");" %>"><% out.print(etlJobsArr[i].tabCaption); %>-Quellcode importieren</a></li>
<li><a onClick="getMaskMenu('load');">Masken-Quellcode exportieren</a></li>
<li><a onClick="getMaskMenu('save');">Masken-Quellcode importieren</a></li>
</ul>
<%
} //Ende Masken Menü
} //Ende Schleife Tabs
%>
%>
<%
if(tab.equals("action"))
{
%>
<p class="menu-label">
Komponentenverwaltung
</p>
<%@ include file="/edit/etl/systeminfo_list.inc" %>
<!--<ul class="menu-list">
<li><a onClick="getComponentMenu('kern');">Kernmodul</a></li>
<li><a onClick="getComponentMenu('etl');">ETL-Komponente</a></li>
</ul>-->
<%
} //Ende Action Menü
%>
</aside>
</div>
<div class="column is-9">
@ -364,19 +234,43 @@ if(tab.equals("")) @@ -364,19 +234,43 @@ if(tab.equals(""))
<div class="hero-body">
<div class="container">
<h1 class="title">
Job Management
ETL Manager
</h1>
<h2 class="subtitle">
Diese Komponente dient der Job-Verwaltung.
Diese Komponente dient der Masken-Verwaltung.
</h2>
<p class="title">Klicken Sie oben links auf "Masken", um zum Menü zu gelangen.</p>
</div>
</div>
</section>
<section class="section">
<p>Klicken Sie oben auf den jew. Reiter, um zum jew. Menü zu gelangen.</p>
</section>
<!--<section class="info-tiles">
<div class="tile is-ancestor has-text-centered">
<div class="tile is-parent">
<article class="tile is-child box">
<p class="title">Nützliche Funktion</p>
<p class="subtitle">welche?</p>
</div>
</article>
</div>
<div class="tile is-parent">
<article class="tile is-child box">
<p class="title">Weitere nützliche Funktion</p>
<p class="subtitle">welche</p>
</article>
</div>
<div class="tile is-parent">
<article class="tile is-child box">
<p class="title">Noch eine nützliche Funktion</p>
<p class="subtitle">der Webanwendung</p>
</article>
</div>
</div>
</section>-->
<div class="columns">
<div class="column is-6">
@ -389,29 +283,16 @@ if(tab.equals("")) @@ -389,29 +283,16 @@ if(tab.equals(""))
} //Ende Tiles Startseite
%>
<%
for (int i = 0; i < etlJobsArr.length; i++) {
if(tab.equals(etlJobsArr[i].tabUniquename.toLowerCase()))
if(tab.equals("mask"))
{
%>
<section class="hero is-info welcome is-small">
<section class="section">
<div class="hero-body">
<div class="container" id="loadMask" >
<h1 class="title" id="MaskHeader"><% out.print(etlJobsArr[i].tabCaption); %></h1>
<h2 class="subtitle">Quellcodes verwalten</h2>
</div>
</div>
</section>
<section class="section">
<h1 class="title" id="MaskHeader">Masken-Verwaltung</h1>
<h2 class="subtitle">
<form method="post" name="saveEtlXml" action="../../edit/etl/saveEtlXml.jsp" target="_blank">
<div id="MaskSubHeader" class="buttonbar">Wählen Sie links das Export/Import-Menü</div>
<div style="float:right">
<input type="hidden" name="keyfieldsused" value="false"/>
</div>
</form>
<div id="MaskSubHeader">Wählen Sie links das Masken-Menü</div>
</h2>
<div class="bd-snippet-code highlight-full ">
@ -431,15 +312,32 @@ if(tab.equals(etlJobsArr[i].tabUniquename.toLowerCase())) @@ -431,15 +312,32 @@ if(tab.equals(etlJobsArr[i].tabUniquename.toLowerCase()))
</section>
<%
} //Ende Mask Content
} //Ende Schleife Tabs
%>
</div>
<%
if(tab.equals("action"))
{
%>
<section class="section">
<div class="container">
<h1 class="title" id="MaskHeader">Komponenten</h1>
<h2 class="subtitle">
<div id="MaskSubHeader">Install / Upgrade / Hauptladeroutinen / Unterladeroutinen </div>
</h2>
<div class="bd-snippet-code highlight-full ">
</div>
</div>
</section>
<%
} //Ende Action Content
%>
</div>
</div>
</div>
<!--<script async type="text/javascript" src="../js/bulma.js"></script>-->
</body>
</html>

218
superx/edit/etl/etl_step_bearbeiten.jsp

@ -1,218 +0,0 @@ @@ -1,218 +0,0 @@
<%@ taglib uri="/WEB-INF/dbforms.tld" prefix="db" %>
<%@page pageEncoding="utf-8" contentType="text/html; charset=UTF-8" %>
<html>
<!--Automatically generated by module_scripts_create.x (SuperX)-->
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="0" http-equiv="expires">
<LINK href="/superx/style/superx.css" type="text/css" REL="stylesheet">
<LINK href="/superx/xml/superxml_html.css" type="text/css" REL="stylesheet">
<LINK href="/superx/xml/maske_html.css" type="text/css" REL="stylesheet">
<LINK href="/superx/style/dbforms_40.css" type="text/css" REL="stylesheet">
<title>Maske Ladeschritt verwalten</title>
<script type="text/javascript">
var djConfig = {isDebug: false };
//djConfig.debugAtAllCosts = true;
</script><script src="/superx/xml/js/dojo/dojo.js" type="text/javascript">&nbsp;</script><script type="text/javascript">
dojo.require("dojo.widget.Dialog");
dojo.require("dojo.widget.Button");
dojo.require("dojo.widget.Tooltip");
dojo.require("dojo.string.common");
dojo.hostenv.writeIncludes();
</script><script src="/superx/xml/js/memtext/dbforms.js" type="text/javascript">&nbsp;</script>
<db:base/>
</head>
<script language="javascript"
src=<%= "\"" +request.getContextPath() + "/dbformslib/jscal/calendar.js\""%>>
</script>
<body class="clsPageBody"><%@ page import ="java.util.Hashtable" %>
<%
//HttpSession session=request.getSession(true);
if (request.getCharacterEncoding() == null)
request.setCharacterEncoding("UTF-8");
Object userobject=request.getSession().getAttribute("UserID");
String userid;
String filter="";
String sql="";
if(userobject == null)
{
%>
<jsp:forward page="/edit/not_authenticated.htm"/>
<%
}
else
userid=userobject.toString();
Object mandantobject=request.getSession().getAttribute("MandantenID");
String mandantenid="";
if(mandantobject != null)
mandantenid=mandantobject.toString();
//der superx-Default-Mandant ist bei dbforms ein Leerstring
if(mandantenid.equals("default"))
mandantenid="";
String db_form_name="etl_step";
String erlaubt="0";
%>
<%@ include file="/edit/check_authentication.inc" %>
<%
if(erlaubt.equals("0"))
{
%>
<jsp:forward page="/edit/not_authorized.htm"/>
<%
}
String keyfieldsused="false";
Object kf=request.getParameter("keyfieldsused");
if(kf != null)
keyfieldsused=kf.toString();
%>
<div style="margin: 0px; padding: 0px; overflow: hidden; width: 100%;" id="menuCaption">
<span class="menuCaptionTitle" id="menuCaptionTitle">Ladeschritt verwalten. </span><img border="0" height="18px" alt="Erl&auml;uterung" src="/superx/images/information.svg"><span style="display:none" connectId="menuCaption" dojoType="tooltip">In diesem Formular k&ouml;nnen Sie Ladeschritte verwalten.</span>
</div>
<%
String tid = request.getParameter("tid");
if(tid != null && !tid.equals("null")){
filter +="tid="+tid;
}
%>
<db:dbform tableName="etl_step" maxRows="1" autoUpdate="false" captionResource="true" multipart="false" followUp="/edit/etl/etl_step_bearbeiten.jsp" filter="<%= filter %>" orderBy=""
dbConnectionName="<%= mandantenid %>" ><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/><db:header/>
<db:errors/>
<db:body allowNew="true">
<table border="0" align="right" cellpadding="0" cellspacing="0">
<tr>
<td class="naviBtn">
<db:updateButton styleClass="clsButtonStyle" style="height:18px" alt="button.update" src="../../images/save.svg" flavor="image" id="db_updateButton"/></td><td class="naviBtn">
<db:navFirstButton styleClass="clsButtonStyle" style="height:18px" caption="button.nav.first" alt="button.nav.first" src="../../images/resultset_first.svg" flavor="image" id="db_navFirstButton"/></td><td class="naviBtn">
<db:navPrevButton styleClass="clsButtonStyle" style="height:18px" alt="button.nav.previous" src="../../images/resultset_previous.svg" flavor="image" id="db_navPrevButton"/></td><td class="naviBtn">
<db:navNextButton styleClass="clsButtonStyle" style="height:18px" alt="button.nav.next" src="../../images/resultset_next.svg" flavor="image" id="db_navNextButton"/></td><td class="naviBtn">
<db:navLastButton styleClass="clsButtonStyle" style="height:18px" alt="button.nav.last" src="../../images/resultset_last.svg" flavor="image" id="db_navLastButton"/></td><td class="naviBtn">
<db:deleteButton confirmMessage="button.delete.confirm" styleClass="clsButtonStyle" style="height:18px" alt="button.delete" src="../../images/delete.svg" id="db_deleteButton" flavor="image"/></td><td class="naviBtn"><span connectId="copy3" dojoType="tooltip">Datensatz kopieren. Mit Mausklick auf diesen Button kopieren Sie den aktuellen Datensatz. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navCopyButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.copy" src="../../images/copy.svg" id="copy3" flavor="image"/></td><td class="naviBtn"><span connectId="new3" dojoType="tooltip">Neuen Datensatz erzeugen. Mit Mausklick auf diesen Button geht das Formular bzw. Unterformular in den Einf&uuml;gemodus, alle vorhandenen Datens&auml;tze werden ausgeblendet. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navNewButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.new" src="../../images/context_add.svg" id="new3" flavor="image"/></td><td class="naviBtn"><span connectId="ins3" dojoType="tooltip">Datensatz einf&uuml;gen. Wenn Sie einen neuen Datensatz erzeugt haben, k&ouml;nnen Sie diesen mit diesem Button speichern.</span>
<db:insertButton showAlways="false" style="height:18px" styleClass="clsButtonStyle" alt="Datensatz einf&uuml;gen" src="../../images/circle_tick.svg" id="ins3" flavor="image"/></td><td class="naviBtn"><input type="hidden" name="keyfieldsused" value="<%= keyfieldsused %>" /><a onclick="maskeTogglekeyfields()" title="Schl&uuml;sselfelder an/aus"><img alt="Schl&uuml;sselfelder an/aus" src="../../images/key.svg" border="0"></a></td>
</tr>
</table>
<p>&nbsp;</p>
<hr>
<p>
<input type="hidden" name="tid" value="<%= tid %>" />
</p>
<table class="db_form_table" cellspacing="0" cellpadding="0" width="100%" border="0">
<td>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td class="db_label">tid</td><td>
<db:label nullFieldValue="" fieldName="tid"/></td>
</tr>
<tr>
<td class="db_label">
<db:message key="Bezeichnung"/></td><td align="left">
<div id="fld_caption">
<db:textField nullFieldValue="" styleClass="clsInputStyle" onBlur="" maxlength="255" size="30" id="inp_etl_stepcaption" fieldName="caption"/>
</div>
</td>
</tr>
<tr>
<td class="db_label">
<db:message key="Unique Name"/></td><td align="left">
<div id="fld_uniquename">
<db:textField nullFieldValue="" styleClass="clsInputStyle" onBlur="" maxlength="255" size="30" id="inp_etl_stepuniquename" fieldName="uniquename"/>
</div>
</td>
</tr>
<tr>
<td class="db_label">
<db:message key="Komponente"/></td><td align="left">
<div id="fld_systeminfo_id">
<input onblur="updateSelect(this)" style="display:none" size="10" name="key_etl_stepsysteminfo_id" class="schluesselfeld" type="text">
<db:select id="inp_etl_stepsysteminfo_id" styleClass="clsInputStyle" readOnly="false" onChange="updateKeyfield(this)" fieldName="systeminfo_id" customEntry=",,true"><% sql = "select tid, name from systeminfo order by name;"; %><db:queryData name="etl_step_systeminfo2" query="<%= sql %>" dbConnectionName="<%= mandantenid %>" /> </db:select>
</div>
</td>
</tr>
<tr>
<td class="db_label">
<db:message key="Typ des Schrittes"/></td><td align="left">
<div id="fld_step_type_id">
<input onblur="updateSelect(this)" style="display:none" size="10" name="key_etl_stepstep_type_id" class="schluesselfeld" type="text">
<db:select id="inp_etl_stepstep_type_id" styleClass="clsInputStyle" readOnly="false" onChange="updateKeyfield(this)" fieldName="step_type_id" customEntry=",,true"><% sql = "select tid, caption from etl_step_type order by caption;"; %><db:queryData name="etl_step_etl_step_type3" query="<%= sql %>" dbConnectionName="<%= mandantenid %>" /> </db:select>
</div>
<span style="display:none" connectId="fld_step_type_id" dojoType="tooltip">1=Gruppierung,
2=Loadtable,3=nativeaction,4=loadmask,5=select</span></td>
</tr>
<tr>
<td class="db_label">
<db:message key="Ladeschritt custom"/></td><td align="left">
<div id="fld_custom_step">
<db:textField nullFieldValue="" onBlur="" styleClass="clsInputStyle" id="inp_etl_stepcustom_step" size="6" fieldName="custom_step"/>
</div>
<span style="display:none" connectId="fld_custom_step" dojoType="tooltip">1=ja, d.h. von der Hochschule angepa&szlig;t, 0=nein, d.h.
Auslieferung der Software</span></td>
</tr>
<tr>
<td class="db_label">
<db:message key="Logdatei"/></td><td align="left">
<div id="fld_logfile">
<db:textField nullFieldValue="" styleClass="clsInputStyle" onBlur="" maxlength="255" size="20" id="inp_etl_steplogfile" fieldName="logfile"/>
</div>
</td>
</tr>
<tr>
<td class="db_label">Eigenschaften</td><td>
<table class="subform">
<db:dbform orderBy="prop_name" childField="etl_step_id" parentField="tid" tableName="etl_step_property" maxRows="*" captionResource="true" followUp="/edit/etl/etl_step_bearbeiten.jsp" autoUpdate="false" multipart="false" dbConnectionName="<%= mandantenid %>">
<db:header>
<tr class="subform_tr">
<th class="subform_th">tid</th><th class="subform_th">Bezeichnung</th><th class="subform_th">Bearbeiten</th>
</tr>
</db:header>
<db:body allowNew="true">
<tr class="subform_tr">
<td>
<db:label nullFieldValue="" fieldName="tid"/></td><db:textField hidden="true" fieldName="etl_step_id" overrideValue="<%= tid%>"/>
<td align="left">
<div id="fld_prop_name">
<db:textField nullFieldValue="" styleClass="clsInputStyle" onBlur="" maxlength="255" size="20" fieldName="prop_name"/>
</div>
</td><td align="left">
<div id="fld_prop_value">
<!--
<db:textField nullFieldValue="" styleClass="clsInputStyle" onBlur="" size="30" fieldName="prop_value"/>-->
<%
if(currentRow_etl_step_property != null)
{
%><a target="details" title="Details" href="<%= response.encodeURL("/superx/edit/etl/etl_step_property_bearbeiten.jsp") %>?tid=<db:label nullFieldValue="" pattern="######" fieldName="tid"/>" onClick="javascript:neu=window.open('<%= response.encodeURL("/superx/edit/etl/etl_step_property_edit.jsp") %>?tid=<db:label nullFieldValue="" pattern="######" fieldName="tid"/>','_blank','directories=no,location=no,menubar=no,toolbar=no,scrollbars=yes,resizable=yes,width=800,height=600'); return false;"><img border="0" alt="Details" src="../../images/pencil.svg"></a><%
}
%>
</div>
</td><td class="naviBtn">
<db:updateButton styleClass="clsButtonStyle" style="height:18px" alt="button.update" src="../../images/save.svg" flavor="image" id="db_updateButton"/></td><td class="naviBtn">
<db:deleteButton confirmMessage="button.delete.confirm" styleClass="clsButtonStyle" style="height:18px" alt="button.delete" src="../../images/delete.svg" id="db_deleteButton" flavor="image"/></td><td class="naviBtn"><span connectId="copy8" dojoType="tooltip">Datensatz kopieren. Mit Mausklick auf diesen Button kopieren Sie den aktuellen Datensatz. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navCopyButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.copy" src="../../images/copy.svg" id="copy8" flavor="image"/></td>
</tr>
</db:body>
<db:footer>
<tr class="subform_tr">
<td><td class="naviBtn"><span connectId="new8" dojoType="tooltip">Neuen Datensatz erzeugen. Mit Mausklick auf diesen Button geht das Formular bzw. Unterformular in den Einf&uuml;gemodus, alle vorhandenen Datens&auml;tze werden ausgeblendet. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navNewButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.new" src="../../images/context_add.svg" id="new8" flavor="image"/></td><td class="naviBtn"><span connectId="ins8" dojoType="tooltip">Datensatz einf&uuml;gen. Wenn Sie einen neuen Datensatz erzeugt haben, k&ouml;nnen Sie diesen mit diesem Button speichern.</span>
<db:insertButton showAlways="false" style="height:18px" styleClass="clsButtonStyle" alt="Datensatz einf&uuml;gen" src="../../images/circle_tick.svg" id="ins8" flavor="image"/></td></td>
</tr>
</db:footer>
</db:dbform>
</table>
</td>
</tr>
</table>
</td><td align="center" style="padding-left:10px"></td>
</table>
</db:body>
<db:footer/></db:dbform></body>
</html>

150
superx/edit/etl/etl_step_property_bearbeiten.jsp

@ -1,150 +0,0 @@ @@ -1,150 +0,0 @@
<%@ taglib uri="/WEB-INF/dbforms.tld" prefix="db" %>
<%@page pageEncoding="utf-8" contentType="text/html; charset=UTF-8" %>
<html>
<!--Automatically generated by module_scripts_create.x (SuperX)-->
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="0" http-equiv="expires">
<LINK href="/superx/style/superx.css" type="text/css" REL="stylesheet">
<LINK href="/superx/xml/superxml_html.css" type="text/css" REL="stylesheet">
<LINK href="/superx/xml/maske_html.css" type="text/css" REL="stylesheet">
<LINK href="/superx/style/dbforms_40.css" type="text/css" REL="stylesheet">
<title>Maske Eigenschaften von f&uuml;r Ladeschritten verwalten</title>
<script type="text/javascript">
var djConfig = {isDebug: false };
//djConfig.debugAtAllCosts = true;
</script><script src="/superx/xml/js/dojo/dojo.js" type="text/javascript">&nbsp;</script><script type="text/javascript">
dojo.require("dojo.widget.Dialog");
dojo.require("dojo.widget.Button");
dojo.require("dojo.widget.Tooltip");
dojo.require("dojo.string.common");
dojo.hostenv.writeIncludes();
</script><script src="/superx/xml/js/memtext/dbforms.js" type="text/javascript">&nbsp;</script>
<db:base/>
</head>
<script language="javascript"
src=<%= "\"" +request.getContextPath() + "/dbformslib/jscal/calendar.js\""%>>
</script>
<body class="clsPageBody"><%@ page import ="java.util.Hashtable" %>
<%
//HttpSession session=request.getSession(true);
if (request.getCharacterEncoding() == null)
request.setCharacterEncoding("UTF-8");
Object userobject=request.getSession().getAttribute("UserID");
String userid;
String filter="";
String sql="";
if(userobject == null)
{
%>
<jsp:forward page="/edit/not_authenticated.htm"/>
<%
}
else
userid=userobject.toString();
Object mandantobject=request.getSession().getAttribute("MandantenID");
String mandantenid="";
if(mandantobject != null)
mandantenid=mandantobject.toString();
//der superx-Default-Mandant ist bei dbforms ein Leerstring
if(mandantenid.equals("default"))
mandantenid="";
String db_form_name="etl_step_property";
String erlaubt="0";
%>
<%@ include file="/edit/check_authentication.inc" %>
<%
if(erlaubt.equals("0"))
{
%>
<jsp:forward page="/edit/not_authorized.htm"/>
<%
}
String keyfieldsused="false";
Object kf=request.getParameter("keyfieldsused");
if(kf != null)
keyfieldsused=kf.toString();
%>
<div style="margin: 0px; padding: 0px; overflow: hidden; width: 100%;" id="menuCaption">
<span class="menuCaptionTitle" id="menuCaptionTitle">Eigenschaften von f&uuml;r Ladeschritten verwalten. </span><img border="0" height="18px" alt="Erl&auml;uterung" src="/superx/images/information.svg"><span style="display:none" connectId="menuCaption" dojoType="tooltip">In diesem Formular k&ouml;nnen Sie Parameter f&uuml;r Ladejobs verwalten.</span>
</div>
<%
String tid = request.getParameter("tid");
if(tid != null && !tid.equals("null")){
filter +="tid="+tid;
}
%>
<db:dbform tableName="etl_step_property" maxRows="1" autoUpdate="false" captionResource="true" multipart="false" followUp="/edit/etl/etl_step_property_bearbeiten.jsp" filter="<%= filter %>" orderBy=""
dbConnectionName="<%= mandantenid %>" ><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/><db:header/>
<db:errors/>
<db:body allowNew="true">
<table border="0" align="right" cellpadding="0" cellspacing="0">
<tr>
<td class="naviBtn">
<db:updateButton styleClass="clsButtonStyle" style="height:18px" alt="button.update" src="../../images/save.svg" flavor="image" id="db_updateButton"/></td><td class="naviBtn">
<db:navFirstButton styleClass="clsButtonStyle" style="height:18px" caption="button.nav.first" alt="button.nav.first" src="../../images/resultset_first.svg" flavor="image" id="db_navFirstButton"/></td><td class="naviBtn">
<db:navPrevButton styleClass="clsButtonStyle" style="height:18px" alt="button.nav.previous" src="../../images/resultset_previous.svg" flavor="image" id="db_navPrevButton"/></td><td class="naviBtn">
<db:navNextButton styleClass="clsButtonStyle" style="height:18px" alt="button.nav.next" src="../../images/resultset_next.svg" flavor="image" id="db_navNextButton"/></td><td class="naviBtn">
<db:navLastButton styleClass="clsButtonStyle" style="height:18px" alt="button.nav.last" src="../../images/resultset_last.svg" flavor="image" id="db_navLastButton"/></td><td class="naviBtn">
<db:deleteButton confirmMessage="button.delete.confirm" styleClass="clsButtonStyle" style="height:18px" alt="button.delete" src="../../images/delete.svg" id="db_deleteButton" flavor="image"/></td><td class="naviBtn"><span connectId="copy2" dojoType="tooltip">Datensatz kopieren. Mit Mausklick auf diesen Button kopieren Sie den aktuellen Datensatz. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navCopyButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.copy" src="../../images/copy.svg" id="copy2" flavor="image"/></td><td class="naviBtn"><span connectId="new2" dojoType="tooltip">Neuen Datensatz erzeugen. Mit Mausklick auf diesen Button geht das Formular bzw. Unterformular in den Einf&uuml;gemodus, alle vorhandenen Datens&auml;tze werden ausgeblendet. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navNewButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.new" src="../../images/context_add.svg" id="new2" flavor="image"/></td><td class="naviBtn"><span connectId="ins2" dojoType="tooltip">Datensatz einf&uuml;gen. Wenn Sie einen neuen Datensatz erzeugt haben, k&ouml;nnen Sie diesen mit diesem Button speichern.</span>
<db:insertButton showAlways="false" style="height:18px" styleClass="clsButtonStyle" alt="Datensatz einf&uuml;gen" src="../../images/circle_tick.svg" id="ins2" flavor="image"/></td><td class="naviBtn"><input type="hidden" name="keyfieldsused" value="<%= keyfieldsused %>" /><a onclick="maskeTogglekeyfields()" title="Schl&uuml;sselfelder an/aus"><img alt="Schl&uuml;sselfelder an/aus" src="../../images/key.svg" border="0"></a></td>
</tr>
</table>
<p>&nbsp;</p>
<hr>
<p>
<input type="hidden" name="tid" value="<%= tid %>" />
</p>
<table class="db_form_table" cellspacing="0" cellpadding="0" width="100%" border="0">
<td>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td class="db_label">tid</td><td>
<db:label nullFieldValue="" fieldName="tid"/></td>
</tr>
<tr>
<td class="db_label">
<db:message key="Arten des Ladeschritts"/></td><td align="left">
<div id="fld_etl_step_id">
<input onblur="updateSelect(this)" style="display:none" size="10" name="key_etl_step_propertyetl_step_id" class="schluesselfeld" type="text">
<db:select id="inp_etl_step_propertyetl_step_id" styleClass="clsInputStyle" readOnly="false" onChange="updateKeyfield(this)" fieldName="etl_step_id" customEntry=",,true"><% sql = "select tid, caption from etl_step order by caption;"; %><db:queryData name="etl_step_property_etl_step4" query="<%= sql %>" dbConnectionName="<%= mandantenid %>" /> </db:select>
</div>
</td>
</tr>
<tr>
<td class="db_label">
<db:message key="Bezeichnung"/></td><td align="left">
<div id="fld_prop_name">
<db:textField nullFieldValue="" styleClass="clsInputStyle" onBlur="" maxlength="255" size="30" id="inp_etl_step_propertyprop_name" fieldName="prop_name"/>
</div>
</td>
</tr>
<tr>
<td class="db_label">
<db:message key="Wert"/></td><td align="left">
<div id="fld_prop_value">
<db:textArea nullFieldValue="" onBlur="" styleClass="editform" wrap="virtual" rows="6" cols="80" fieldName="prop_value"/>
</div>
</td>
</tr>
</table>
</td><td align="center" style="padding-left:10px"></td>
</table>
</db:body>
<db:footer/></db:dbform></body>
</html>

109
superx/edit/etl/etl_step_type_liste.jsp

@ -1,109 +0,0 @@ @@ -1,109 +0,0 @@
<%@ taglib uri="/WEB-INF/dbforms.tld" prefix="db" %>
<%@page pageEncoding="utf-8" contentType="text/html; charset=UTF-8" %>
<html xmlns:jsp="http://www.java.com/jsp" xmlns:db="http://www.wap-force.com/dbforms"><!--Automatically generated by module_scripts_create.x (SuperX)-->
<head xmlns:sx="http://memtext.de">
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="0" http-equiv="expires">
<LINK href="/superx/style/superx.css" type="text/css" REL="stylesheet">
<LINK href="/superx/xml/superxml_html.css" type="text/css" REL="stylesheet">
<LINK href="/superx/xml/maske_html.css" type="text/css" REL="stylesheet">
<LINK href="/superx/style/dbforms_40.css" type="text/css" REL="stylesheet">
<title>Formular Arten von Ladeschritten verwalten</title>
<script type="text/javascript">
var djConfig = {isDebug: false };
//djConfig.debugAtAllCosts = true;
</script><script src="/superx/xml/js/dojo/dojo.js" type="text/javascript">&nbsp;</script><script type="text/javascript">
dojo.require("dojo.widget.Dialog");
dojo.require("dojo.widget.Button");
dojo.require("dojo.widget.Tooltip");
dojo.require("dojo.string.common");
dojo.hostenv.writeIncludes();
</script><script src="/superx/xml/js/memtext/dbforms.js" type="text/javascript">&nbsp;</script>
<db:base/>
</head>
<body class="clsPageBody"><%@ page import ="java.util.Hashtable" %>
<%
//HttpSession session=request.getSession(true);
if (request.getCharacterEncoding() == null)
request.setCharacterEncoding("UTF-8");
Object userobject=request.getSession().getAttribute("UserID");
String userid;
String filter="";
String sql="";
if(userobject == null)
{
%>
<jsp:forward page="/edit/not_authenticated.htm"/>
<%
}
else
userid=userobject.toString();
Object mandantobject=request.getSession().getAttribute("MandantenID");
String mandantenid="";
if(mandantobject != null)
mandantenid=mandantobject.toString();
//der superx-Default-Mandant ist bei dbforms ein Leerstring
if(mandantenid.equals("default"))
mandantenid="";
String db_form_name="etl_step_type";
String erlaubt="0";
%>
<%@ include file="/edit/check_authentication.inc" %>
<%
if(erlaubt.equals("0"))
{
%>
<jsp:forward page="/edit/not_authorized.htm"/>
<%
}
String keyfieldsused="false";
Object kf=request.getParameter("keyfieldsused");
if(kf != null)
keyfieldsused=kf.toString();
%>
<p align="right">
<a target="_parent" href="http://www.superx-projekt.de"><img border="0" alt="Logo" src="../../images/logo.gif"></a>
<br><% if(!mandantenid.equals("default") && !mandantenid.equals(""))
out.println("<strong>Mandant: " + mandantenid +"</strong>");
%></p>
<div style="margin: 0px; padding: 0px; overflow: hidden; width: 100%;" id="menuCaption">
<span class="menuCaptionTitle" id="menuCaptionTitle">Arten von Ladeschritten verwalten. </span><img border="0" height="18px" alt="Erl&auml;uterung" src="/superx/images/information.svg"><span style="display:none" connectId="menuCaption" dojoType="tooltip">In diesem Formular k&ouml;nnen Sie Arten von Ladeschritten verwalten.</span>
</div><db:dbform tableName="etl_step_type" maxRows="*" autoUpdate="false" captionResource="true" multipart="false" followUp="/edit/etl/etl_step_type_liste.jsp" orderBy="caption"
dbConnectionName="<%= mandantenid %>" ><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/><db:header>
<table class="dbform_tab" border="1" >
<tr>
<th></th><th align="left">
<db:message key="tid"/></th><th align="left">
<db:message key="Unique Name"/></th><th align="left">
<db:message key="Bezeichnung"/></th><th align="left">
<db:message key="Handler-Anwendung"/></th>
</tr>
</db:header>
<db:errors/>
<db:body allowNew="true">
<tr>
<td></td><td>
<db:label nullFieldValue="" styleClass="clsInputStyle" fieldName="tid"/></td><td align="left">
<db:textArea nullFieldValue="" styleClass="clsInputStyle" wrap="virtual" rows="3" cols="20" fieldName="uniquename"/></td><td align="left">
<db:textArea nullFieldValue="" styleClass="clsInputStyle" wrap="virtual" rows="3" cols="20" fieldName="caption"/></td><td align="left">
<db:textArea nullFieldValue="" styleClass="clsInputStyle" wrap="virtual" rows="3" cols="20" fieldName="handler"/></td><td class="naviBtn">
<db:updateButton styleClass="clsButtonStyle" style="height:18px" alt="button.update" src="../../images/save.svg" flavor="image" id="db_updateButton"/></td><td class="naviBtn">
<db:deleteButton confirmMessage="button.delete.confirm" styleClass="clsButtonStyle" style="height:18px" alt="button.delete" src="../../images/delete.svg" id="db_deleteButton" flavor="image"/></td>
</tr>
</db:body>
<db:footer><tr><td class="naviBtn"><span connectId="new1" dojoType="tooltip">Neuen Datensatz erzeugen. Mit Mausklick auf diesen Button geht das Formular bzw. Unterformular in den Einf&uuml;gemodus, alle vorhandenen Datens&auml;tze werden ausgeblendet. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navNewButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.new" src="../../images/context_add.svg" id="new1" flavor="image"/></td><td class="naviBtn"><span connectId="ins1" dojoType="tooltip">Datensatz einf&uuml;gen. Wenn Sie einen neuen Datensatz erzeugt haben, k&ouml;nnen Sie diesen mit diesem Button speichern.</span>
<db:insertButton showAlways="false" style="height:18px" styleClass="clsButtonStyle" alt="Datensatz einf&uuml;gen" src="../../images/circle_tick.svg" id="ins1" flavor="image"/></td></tr>
</table>
</db:footer></db:dbform></body>
</html>

143
superx/edit/etl/saveEtlXml.jsp

@ -1,143 +0,0 @@ @@ -1,143 +0,0 @@
<%@ taglib uri="/WEB-INF/dbforms.tld" prefix="db" %>
<%@page pageEncoding="utf-8" contentType="text/html; charset=UTF-8" %>
<%@ page import ="de.superx.servlet.ServletUtils" %>
<%@ page import ="de.superx.servlet.SxPools" %>
<%@ page import ="java.io.BufferedWriter" %>
<%@ page import ="java.io.File" %>
<%@ page import ="java.io.FileWriter" %>
<%@ page import ="java.io.IOException" %>
<%@ page import ="de.superx.elt.EtlActionJob" %>
<%@ page import ="de.superx.elt.EtlUtils" %>
<%@ page import ="de.superx.common.SxUser" %>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Ausführung</title>
<link rel="stylesheet" href="../../style/bulma.css" />
<script type="text/javascript" src="/superx/xml/js/memtext/sx_functions.js"></script>
</head>
<body>
<%
//init Variables:
if (request.getCharacterEncoding() == null)
request.setCharacterEncoding("UTF-8");
String idparamName = request.getParameter("idparamName");
String idparamValue = request.getParameter("idparamValue");
String src = request.getParameter("src");
String jobuniquename = request.getParameter("jobuniquename");
String returntext="";
int returnCode=0;
returntext=src;
SxUser user = (SxUser) request.getSession().getAttribute("user");
String mandantenid= (String) request.getSession().getAttribute("MandantenID");
//String searchString="/etlAction[@name=\""+jobuniquename+"\"]/unload[@name=\"unload_maskeninfo\"]/rs/row/fld[@name=\"tid\"]";
if(mandantenid==null || mandantenid.equals(""))
mandantenid="default";
if (user == null || !user.isAdmin()) {
returnCode=1;
returntext="Fehlende Rechte";
}
else
{
try {
//if(de.superx.elt.EtlUtils.isNodeValueInXml(src,searchString,idparamValue,jobuniquename))
//{
returntext=idparamName+"="+idparamValue;
String params=idparamName+"="+idparamValue;
File temp;
temp = File.createTempFile("myTempFile", ".xml");
BufferedWriter bw = new BufferedWriter(new FileWriter(temp));
bw.write(src);
bw.close();
params+=EtlUtils.NEWLINE+"PATH_TO_INPUTFILE="+temp.getAbsolutePath();
params+=EtlUtils.NEWLINE+"FORMAT=XML";
EtlActionJob myJob=new EtlActionJob(jobuniquename); //TODO:Mandantid
myJob.initJob(jobuniquename,params);
returnCode= myJob.execute("");
returntext+=myJob.getActionLog().toString();
/*}
else
{
returntext="Übergebener Parameter "+idparamName+" Wert "+idparamValue+" entspricht nicht der XML-Datei ";
returnCode=1;
}*/
} catch (Exception e) {
returnCode=1;
returntext=e.toString();
e.printStackTrace();
}
}
%>
<!-- START NAV -->
<nav class="navbar is-white">
<div class="container">
<div class="navbar-brand">
Masken laden
<div class="navbar-burger burger" data-target="navMenu">
<span>dd</span>
<span>dd</span>
<span>dd</span>
</div>
</div>
<!-- <div id="navMenu" class="navbar-menu">
<div class="navbar-start">
<a class="navbar-item" href="webapp_manager.jsp?tab=inst">
Installation /Patches
</a>
<a class="navbar-item" href="webapp_manager.jsp?tab=load">
Konnektoren
</a>-->
<a class="navbar-item" href="javascript:window.close()">
Schließen
</a>
</div>
</div>
</div>
</nav>
<!-- END NAV -->
<section class="section">
<div class="container">
<h1 class="title" id="MaskHeader">Protokoll</h1>
<h2 class="subtitle">
<div id="MaskSubHeader">Ergebnis der Ausführung</div>
</h2>
<p>Status: <%="Code "+ returnCode+ "("+de.superx.elt.EtlUtils.translateReturnCode2Html(returnCode)+")"%>, Logausgabe:
</p>
<div class="bd-snippet-code highlight-full ">
<figure class="highlight"><div class="buttons has-addons is-right">
<button class="button is-small is-info" onClick="copyText('Inhalt');">Kopieren</button>
</div>
<textarea id="Inhalt" name="Inhalt" class="textarea" placeholder="Inhalt..." rows="20"><%= returntext %>
</textarea>
</figure>
</div>
</div>
</section>
</body>
</html>

54
superx/images/downloadblck.svg

@ -1,54 +0,0 @@ @@ -1,54 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="185.8"
version="1.1"
id="svg856"
sodipodi:docname="download.svg"
height="171.39999"
inkscape:version="0.92.5 (0.92.5+68)">
<metadata
id="metadata862">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs860" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1020"
id="namedview858"
showgrid="false"
inkscape:zoom="1.3741116"
inkscape:cx="-84.141542"
inkscape:cy="188.25558"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg856" />
<path
style="fill:black;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-opacity:1"
d="m 142.8,150 q 0,-3 -2,-5 -2,-2 -5,-2.2 -3,-0.2 -5.2,2.2 -2.2,2.4 -2,5 0.2,2.6 2,5 1.8,2.4 5.2,2.2 3.4,-0.2 5,-2.2 1.6,-2 2,-5 z m 28.6,0 q 0,-3 -2,-5 -2,-2 -5.2,-2.2 -3.2,-0.2 -5,2.2 -1.8,2.4 -2,5 -0.2,2.6 2,5 2.2,2.4 5,2.2 2.8,-0.2 5.2,-2.2 2.4,-2 2,-5 z m 14.4,-25 v 35.8 q 0,4.4 -3.2,7.4 -3.2,3 -7.6,3.2 H 10.8 q -4.6,0 -7.6,-3.2 Q 0.2,165 0,160.8 V 125 q 0,-4.4 3.2,-7.6 3.2,-3.2 7.6,-3.2 h 51.8 l 15,15.2 q 6.6,6.4 15.2,6.4 8.6,0 15.2,-6.4 l 15.2,-15.2 H 175 q 4.4,0 7.6,3.2 3.2,3.2 3.2,7.6 z M 149.4,61.4 q 2,4.6 -1.6,8 l -50,50 q -2,2 -5,2 -3,0 -5,-2 l -50,-50 q -3.4,-3.4 -1.6,-8 2,-4.2 6.6,-4.2 h 28.6 v -50 q 0,-3 2.2,-5 2.2,-2 5,-2.2 h 28.6 q 2.8,0 5,2.2 2.2,2.2 2,5 v 50 h 28.6 q 4.8,0 6.6,4.2 z"
id="path854"
inkscape:connector-curvature="0" />
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

55
superx/images/eye.svg

@ -1,55 +0,0 @@ @@ -1,55 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="40"
version="1.1"
id="svg4"
sodipodi:docname="eye.svg"
height="25"
inkscape:version="0.92.2 5c3e80d, 2017-08-06">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="963"
id="namedview6"
showgrid="false"
inkscape:zoom="4.362592"
inkscape:cx="74.725132"
inkscape:cy="46.776568"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<path
d="m 36.6793,12.519684 q -3.304754,-5.1320931 -8.281332,-7.6592611 1.321906,2.255012 1.321906,4.859937 0,4.0434691 -2.838203,6.8816721 Q 24.043468,19.440235 20,19.440235 q -4.043469,0 -6.881672,-2.838203 -2.838202,-2.838203 -2.838202,-6.8816721 0,-2.604925 1.321906,-4.859937 -4.9765781,2.527168 -8.2813318,7.6592611 2.9159607,4.432262 7.2704648,7.076066 4.354499,2.643805 9.408835,2.643805 5.054332,0 9.408835,-2.643805 4.354504,-2.643804 7.270465,-7.076066 z M 21.049746,4.1605909 q 0,-0.427672 -0.311035,-0.738707 Q 20.427676,3.1108449 20,3.1497279 q -2.721566,0 -4.665539,1.943972 -1.943976,1.943977 -1.943976,4.62666 0,0.4276761 0.311039,0.7387111 0.311035,0.311035 0.738707,0.311035 0.427676,0 0.738711,-0.311035 0.311039,-0.311035 0.311039,-0.7387111 0,-1.866214 1.321902,-3.188117 Q 18.133785,5.2103369 20,5.2103369 q 0.427676,0 0.738711,-0.311035 0.311035,-0.311035 0.311035,-0.738711 z m 18.389999,8.3590931 q 0,0.738711 -0.427676,1.477418 -3.032597,5.015457 -8.164691,8.009176 Q 25.715285,25 20,25 14.284715,25 9.1526217,22.006278 4.0205282,19.012559 0.98793076,13.997102 0.560255,13.258395 0.560255,12.519684 q 0,-0.738711 0.42767576,-1.5163 Q 4.0205282,6.0268099 9.1526217,3.0330869 14.284715,0.03936788 20,4.8587962e-4 25.715285,-0.03838412 30.847378,3.0330869 q 5.132094,3.07148 8.164691,7.9702971 0.427676,0.777589 0.427676,1.5163 z"
id="path2"
inkscape:connector-curvature="0"
style="stroke-width:0.03887949" />
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

63
superx/images/resultset_up.svg

@ -1,63 +0,0 @@ @@ -1,63 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="25"
height="25"
viewBox="0 0 6.6145832 6.6145835"
version="1.1"
id="svg3834"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="resultset_up.svg">
<defs
id="defs3828" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="400"
inkscape:cy="341"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1020"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
units="px" />
<metadata
id="metadata3831">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-290.3854)">
<path
d="m 4.9380207,294.92502 0.390805,-0.43943 q 0.07541,-0.0848 0.07541,-0.19273 0,-0.10793 -0.07541,-0.20044 l -1.734614,-1.95046 q -0.07542,-0.0771 -0.171407,-0.0771 -0.09599,0 -0.17826,0.0771 l -1.7346143,1.95046 q -0.06857,0.0848 -0.06857,0.20044 0,0.11564 0.06857,0.19273 l 0.3908013,0.43943 q 0.07542,0.0771 0.171406,0.0771 0.09599,0 0.171403,-0.0771 l 1.179264,-1.326 1.172408,1.326 q 0.07541,0.0771 0.171406,0.0771 0.09599,0 0.171402,-0.0771 z m 1.419232,-1.04846 q 0,0.90198 -0.390802,1.6575 -0.390804,0.75551 -1.069565,1.20265 -0.678764,0.44714 -1.474081,0.44714 -0.795316,0 -1.480937,-0.44714 -0.6856183,-0.44714 -1.06270933,-1.20265 -0.37709,-0.75552 -0.397659,-1.6575 -0.02059,-0.90199 0.397659,-1.6575 0.41823003,-0.75552 1.06270933,-1.20266 0.644482,-0.44714 1.480937,-0.44714 0.836456,0 1.474081,0.44714 0.637625,0.44714 1.069565,1.20266 0.431941,0.75551 0.390802,1.6575 z"
id="path3809"
inkscape:connector-curvature="0"
style="stroke-width:0.00727023" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

Loading…
Cancel
Save