Compare commits

...

7 Commits

  1. 2
      .classpath
  2. 324
      src-modules/module/etl/conf/etl.xml
  3. 1
      src-modules/module/etl/conf/includes.txt
  4. 25
      src-modules/module/etl/masken/42000_felderinfo.unl
  5. 2
      src-modules/module/etl/masken/42000_masken_felder_bez.unl
  6. 68
      src-modules/module/etl/schluesseltabellen/create_load_etl_masken.sql
  7. 2
      src-modules/module/etl/schluesseltabellen/create_load_etl_qa_project.sql
  8. 67
      src-modules/module/etl/schluesseltabellen/create_load_etl_rpta_column_layout.sql
  9. 3
      src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl
  10. 134
      src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql
  11. 106
      src-modules/module/etl/schluesseltabellen/masken_fuellen.sql
  12. 17
      src-modules/module/etl/schluesseltabellen/themenbaum_fuellen.sql
  13. 322
      src-modules/module/etl/schluesseltabellen/trans_rpta_column_layout.sql
  14. 137
      src/de/superx/elt/EtlFmParser.java
  15. 6
      src/de/superx/elt/SqlExecutor.java
  16. BIN
      superx/WEB-INF/lib/superx-etl.jar
  17. 259
      superx/edit/etl/etl_job_bearbeiten.jsp
  18. 158
      superx/edit/etl/etl_job_param_bearbeiten.jsp
  19. 115
      superx/edit/etl/etl_manager.jsp
  20. 218
      superx/edit/etl/etl_step_bearbeiten.jsp
  21. 150
      superx/edit/etl/etl_step_property_bearbeiten.jsp
  22. 109
      superx/edit/etl/etl_step_type_liste.jsp
  23. 63
      superx/images/resultset_up.svg

2
.classpath

@ -18,6 +18,6 @@ @@ -18,6 +18,6 @@
<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"/>
<classpathentry kind="lib" path="/kern/superx/WEB-INF/lib/superx5.2.jar" sourcepath="/kern/src/"/>
<classpathentry kind="output" path="superx/WEB-INF/classes"/>
</classpath>

324
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.5b" sachgebiet_id="270"
<module name="etl" version="0.6" sachgebiet_id="270"
sachgebiet="Laderoutinen" systeminfo_id="270"
system="Laderoutinen" thema="Laderoutinen" thema_parent="Abfragen">
<database name="superx" system="superx">
@ -9,6 +9,256 @@ system="Laderoutinen" thema="Laderoutinen" thema_parent="Abfragen"> @@ -9,6 +9,256 @@ 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>
@ -49,14 +299,14 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[ETL]" /> @@ -49,14 +299,14 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[ETL]" />
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="systeminfo_id" type="INTEGER" size="" default=""
notnull="true" description="Komponente" />
<column name="maskeninfo_id" type="INTEGER" size="" default=""
notnull="false" description="Maske (für Suche/Auswahl)" />
<column name="felderinfo_id" type="INTEGER" size="" default=""
@ -134,7 +384,13 @@ parent="Laderoutinen">Abfragen zur Administration</thema> @@ -134,7 +384,13 @@ parent="Laderoutinen">Abfragen zur Administration</thema>
displayType="select" visibleFields="caption" format="%s">
<relation-column from="tid" to="parent_step_id" />
</relation>
</data-integrity>
<!-- 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>
</database>
<install_upgrade_job>
@ -190,7 +446,9 @@ parent="Laderoutinen">Abfragen zur Administration</thema> @@ -190,7 +446,9 @@ 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"/>
<action error="stop">
<loadtable refresh="true" delimiter="^" header="false" tabname="etl_step_type"><file path="$ETL_PFAD/schluesseltabellen/etl_step_type.unl"/></loadtable>
</action>
</install-upgrade-step>
</install_upgrade_job>
@ -381,7 +639,7 @@ parent="Laderoutinen">Abfragen zur Administration</thema> @@ -381,7 +639,7 @@ parent="Laderoutinen">Abfragen zur Administration</thema>
<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_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=""/>
@ -419,7 +677,7 @@ version integer @@ -419,7 +677,7 @@ version integer
<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_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=""/>
@ -475,7 +733,7 @@ mode="update_insert_delete_copy"> @@ -475,7 +733,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 name="param_default" nullFieldValue="" visibleSize="30" />
<customfield type="link" name="Details" path="/superx/edit/etl/etl_job_param_edit.jsp" linkVar="tid" linkid="tid"/>
</customfield>
<customfield name="Ladeschritte" type="subform" multipart="false" autoUpdate="false"
maxRows="*" table="etl_step_relation" parentField="tid" childField="job_id"
@ -494,6 +752,50 @@ mode="update_insert_delete_copy"> @@ -494,6 +752,50 @@ 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"
@ -524,10 +826,12 @@ mode="update_insert_delete_copy"> @@ -524,10 +826,12 @@ 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 name="prop_value" visibleSize="50" nullFieldValue="" />
<customfield type="link" name="Details" path="/superx/edit/etl/etl_step_property_edit.jsp" linkVar="tid" linkid="tid"/>
</customfield>
</form>
<!--<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"

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

@ -3,4 +3,5 @@ WEB-INF/conf/edustore/db/bin/SQL_ENV_etl.sam @@ -3,4 +3,5 @@ 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

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

@ -2,10 +2,10 @@ @@ -2,10 +2,10 @@
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^Komponente^30^0^0^150^200^1^integer^200^0^1^<<SQL>> select tid,name from systeminfo order by 2;^^^
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^1^integer^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^1^integer^200^0^1^<<SQL>> --freemarker template\
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')\
@ -20,4 +20,21 @@ select tid,name from qa_project where active=1 order by 2;\ @@ -20,4 +20,21 @@ select tid,name from qa_project where active=1 order by 2;\
select null::char(1),'Keine Auwahl möglich' from xdummy\
</#if>\
\
/* <<just a comment to make it a modal dialog>> */^ ^^
/* <<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^ ^ ^

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

@ -6,3 +6,5 @@ @@ -6,3 +6,5 @@
42000^42005^
42000^42006^
42000^42007^
42000^42008^
42000^42009^

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

@ -0,0 +1,68 @@ @@ -0,0 +1,68 @@
--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
)
;

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

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
--Freemarker Template
--used in etl-job sx_insert_mask
--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;

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

@ -0,0 +1,67 @@ @@ -0,0 +1,67 @@
--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
);

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

@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
1^MASK^Masken^0^sx_select_mask^sx_insert_mask^TID^42000^42006^1^
2^SICHT^Sichten^0^sichten_unload^sichten_upload^SYSTEMINFO_ID^42000^42004^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^

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

@ -10,7 +10,9 @@ @@ -10,7 +10,9 @@
{"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":"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":""}
] />
@ -27,12 +29,12 @@ @@ -27,12 +29,12 @@
{"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":"SYSTEMINFO_ID", "name":"Komponente", "param_default":""},
{"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_$SYSTEMINFO_ID.xml"},
{"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":"FORMAT", "name":"Ausgabeformat", "param_default":"XML"},
{"etl_job":"sichten_upload","param_name":"SYSTEMINFO_ID", "name":"Komponente", "param_default":""},
{"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"},
@ -40,6 +42,15 @@ @@ -40,6 +42,15 @@
{"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"},
@ -59,21 +70,16 @@ @@ -59,21 +70,16 @@
{"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":"delete_maskeninfo", "name":"Maskeninfo löschen", "type":"DOQUERY" },
{"etl_job":"sx_insert_mask", "uniquename":"create_tmp_etl_masken", "name":"Tabellen tmp_etl_masken erzeugen", "type":"DOSQL" },
{"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" },
@ -83,6 +89,7 @@ @@ -83,6 +89,7 @@
{"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" },
@ -108,48 +115,57 @@ @@ -108,48 +115,57 @@
{"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":"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" }
] />
<#assign etl_step_properties = [
{"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":"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":"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":"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":"target_table", "prop_value":"tmp_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":"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":"target_table", "prop_value":"tmp_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":"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":"target_table", "prop_value":"tmp_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":"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":"target_table", "prop_value":"tmp_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" },
@ -190,26 +206,64 @@ @@ -190,26 +206,64 @@
{"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 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,S.aktiv FROM sichten S where (S.systeminfoid::varchar(255)= ''$SYSTEMINFO_ID'' or S.name_intern=''$NAME_INTERN'') 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::varchar(255)= ''$SYSTEMINFO_ID'' or S.name_intern=''$NAME_INTERN'')) order by 1,2;" },
{"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_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":"unload_qa_project","prop_name":"msg", "prop_value":"Entlade Testfall-Projekt $QA_PROJECT_ID Stammdaten" },
{"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;" }
@ -220,9 +274,7 @@ @@ -220,9 +274,7 @@
<#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_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'" }
{"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'" }
] />

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

@ -0,0 +1,106 @@ @@ -0,0 +1,106 @@
--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,12 +6,27 @@ select sp_update_sequence('themenbaum'); @@ -6,12 +6,27 @@ select sp_update_sequence('themenbaum');
update tmp_etl_themenbaum set parent=(select min(tid) from themenbaum where name=tmp_etl_themenbaum.parent_name);
--existiert bereits?
--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?
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)

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

@ -0,0 +1,322 @@ @@ -0,0 +1,322 @@
--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>

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

@ -0,0 +1,137 @@ @@ -0,0 +1,137 @@
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

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

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

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

Binary file not shown.

259
superx/edit/etl/etl_job_bearbeiten.jsp

@ -0,0 +1,259 @@ @@ -0,0 +1,259 @@
<%@ 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

@ -0,0 +1,158 @@ @@ -0,0 +1,158 @@
<%@ 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>

115
superx/edit/etl/etl_manager.jsp

@ -5,6 +5,10 @@ @@ -5,6 +5,10 @@
<%@ 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";
%>
<html>
@ -12,61 +16,59 @@ @@ -12,61 +16,59 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ETL Manager</title>
<title>Job Management</title>
<link rel="stylesheet" href="../../style/dbforms.css" />
<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)
{
var zs=caption+": ";
//
var zs="";
zs+="<input type=\"hidden\" name=\"jobParamName\" value=\""+jobParamName+"\"/> ";
zs+="<input type=\"hidden\" name=\"jobParamValue\" value=\"\"/> ";
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+"',1,'',"+maskeninfo_tid+");\" />";
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+="<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>";
//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>";
}
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+="<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("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>";
}
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>";
document.getElementById("MaskSubHeader").innerHTML=zs;
}
@ -89,31 +91,24 @@ var xhttp = new XMLHttpRequest(); @@ -89,31 +91,24 @@ var xhttp = new XMLHttpRequest();
document.getElementById("Inhalt").innerHTML="Serveranfrage Antwort... "+this.status;
}
};
xhttp.open("GET", "../../sxrest/jobetlxml/get/"+jobUniquename+"/"+jobParamName+"/view/"+jobParamValue, true);
xhttp.open("GET", "../../"+restApiPath+"/jobetlxml/get/"+jobUniquename+"/"+jobParamName+"/view/"+jobParamValue, true);
xhttp.send();
}
function downloadMaskSrc(jobUniquename,jobParamName,jobParamValue)
{
window.open("../../sxrest/jobetlxml/get/"+jobUniquename+"/"+jobParamName+"/download/"+jobParamValue,"_blank");
window.open("../../"+restApiPath+"/jobetlxml/get/"+jobUniquename+"/"+jobParamName+"/download/"+jobParamValue,"_blank");
}
function saveEtlXmlSrc(jobParamName,jobParamValue)
function saveEtlXmlSrc(jobParamName)
{
document.forms["saveEtlXml"].elements["src"].value=document.getElementById("Inhalt").value;
if(document.forms["saveEtlXml"].elements["src"].value=="" || jobParamValue=="")
{
alert("Bitte setzen Sie eine Nummer in das Feld TID und einen passenden XML ins Feld Inhalt");
return false;
}
else
{
document.forms["saveEtlXml"].elements["jobParamName"].value=jobParamName;
document.forms["saveEtlXml"].elements["jobParamValue"].value=jobParamValue;
//document.forms["saveEtlXml"].elements["jobParamValue"].value=jobParamValue;
document.forms["saveEtlXml"].submit();
}
}
function getComponentMenu(systeminfo_id, componentName,componentUniquename,componentVersion)
{
document.getElementById("MaskHeader").innerHTML="Komponente "+ componentName+"<br />Version: "+componentVersion;
@ -168,6 +163,20 @@ function togglekeyfields() { @@ -168,6 +163,20 @@ function togglekeyfields() {
}
</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:
@ -175,6 +184,7 @@ String EntwicklungsmodusAn=""; @@ -175,6 +184,7 @@ String EntwicklungsmodusAn="";
String EntwicklungsmodusAus="checked";
Object mandantobject=request.getSession().getAttribute("MandantenID");
String mandantenid="";
if(mandantobject != null)
mandantenid=mandantobject.toString();
@ -256,7 +266,7 @@ etlJobsArr=etlJobs.toArray(etlJobsArr); @@ -256,7 +266,7 @@ etlJobsArr=etlJobs.toArray(etlJobsArr);
<div class="container">
<div class="navbar-brand">
<a class="navbar-item" href="etl_manager.jsp">ETL Manager</a>
<a class="navbar-item" href="etl_manager.jsp">Job Management</a>
</div>
@ -297,15 +307,14 @@ String tabUrl="etl_manager.jsp?tab="+tabUniquename.toLowerCase(); @@ -297,15 +307,14 @@ 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++) {
@ -313,7 +322,9 @@ if(tab.equals(etlJobsArr[i].tabUniquename.toLowerCase())) @@ -313,7 +322,9 @@ if(tab.equals(etlJobsArr[i].tabUniquename.toLowerCase()))
{
%>
<p class="menu-label">
<ul class="menu-list">
<li>
<a class="is-active">
<% out.print(etlJobsArr[i].tabCaption);
String menuArgs=",";
menuArgs+="'"+etlJobsArr[i].tabCaption+"'";
@ -326,7 +337,9 @@ if(tab.equals(etlJobsArr[i].tabUniquename.toLowerCase())) @@ -326,7 +337,9 @@ if(tab.equals(etlJobsArr[i].tabUniquename.toLowerCase()))
menuArgs+=",'"+etlJobsArr[i].jobParamName+"'";
%>
</p>
</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>
@ -351,15 +364,18 @@ if(tab.equals("")) @@ -351,15 +364,18 @@ if(tab.equals(""))
<div class="hero-body">
<div class="container">
<h1 class="title">
ETL Manager
Job Management
</h1>
<h2 class="subtitle">
Diese Komponente dient der Job-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>
<div class="columns">
<div class="column is-6">
@ -379,14 +395,19 @@ for (int i = 0; i < etlJobsArr.length; i++) { @@ -379,14 +395,19 @@ for (int i = 0; i < etlJobsArr.length; i++) {
if(tab.equals(etlJobsArr[i].tabUniquename.toLowerCase()))
{
%>
<section class="section">
<section class="hero is-info welcome is-small">
<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">
<h2 class="subtitle">
<form method="post" name="saveEtlXml" action="../../edit/etl/saveEtlXml.jsp" target="_blank">
<div id="MaskSubHeader">Wählen Sie links das Export/Import-Menü</div>
<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>

218
superx/edit/etl/etl_step_bearbeiten.jsp

@ -0,0 +1,218 @@ @@ -0,0 +1,218 @@
<%@ 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

@ -0,0 +1,150 @@ @@ -0,0 +1,150 @@
<%@ 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

@ -0,0 +1,109 @@ @@ -0,0 +1,109 @@
<%@ 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>

63
superx/images/resultset_up.svg

@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
<?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>

After

Width:  |  Height:  |  Size: 2.6 KiB

Loading…
Cancel
Save