Compare commits

...

5 Commits

  1. 2
      .classpath
  2. 326
      src-modules/module/etl/conf/etl.xml
  3. 1
      src-modules/module/etl/conf/includes.txt
  4. 18
      src-modules/module/etl/masken/42000_felderinfo.unl
  5. 1
      src-modules/module/etl/masken/42000_masken_felder_bez.unl
  6. 2
      src-modules/module/etl/masken/42000_maskeninfo.unl
  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. 1
      src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl
  10. 68
      src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql
  11. 40
      src-modules/module/etl/schluesseltabellen/trans_rpta_column_layout.sql
  12. 137
      src/de/superx/elt/EtlFmParser.java
  13. 6
      src/de/superx/elt/SqlExecutor.java
  14. BIN
      superx/WEB-INF/lib/superx-etl.jar
  15. 259
      superx/edit/etl/etl_job_bearbeiten.jsp
  16. 158
      superx/edit/etl/etl_job_param_bearbeiten.jsp
  17. 93
      superx/edit/etl/etl_manager.jsp
  18. 218
      superx/edit/etl/etl_step_bearbeiten.jsp
  19. 150
      superx/edit/etl/etl_step_property_bearbeiten.jsp
  20. 109
      superx/edit/etl/etl_step_type_liste.jsp
  21. 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>

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

@ -9,6 +9,260 @@ system="Laderoutinen" thema="Laderoutinen" thema_parent="Abfragen"> @@ -9,6 +9,260 @@ 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>
<!-- <index name="ix_etl_step1" type="unique"> <index-column name="uniquename"
/> <index-column name="systeminfo_id" /> </index> -->
</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" />
<!-- in Zukunft ggf. typisiert: <column name="param_type" 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" />
<!-- in Zukunft ggf. typisiert: <column name="param_type" 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 +303,14 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[ETL]" /> @@ -49,14 +303,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 +388,13 @@ parent="Laderoutinen">Abfragen zur Administration</thema> @@ -134,7 +388,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 +450,9 @@ parent="Laderoutinen">Abfragen zur Administration</thema> @@ -190,7 +450,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 +643,7 @@ parent="Laderoutinen">Abfragen zur Administration</thema> @@ -381,7 +643,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 +681,7 @@ version integer @@ -419,7 +681,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 +737,7 @@ mode="update_insert_delete_copy"> @@ -475,7 +737,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 +756,50 @@ mode="update_insert_delete_copy"> @@ -494,6 +756,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 +830,12 @@ mode="update_insert_delete_copy"> @@ -524,10 +830,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

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

@ -20,4 +20,20 @@ select tid,name from qa_project where active=1 order by 2;\ @@ -20,4 +20,20 @@ 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^1^integer^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^^

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

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

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

@ -26,7 +26,7 @@ select tid,\ @@ -26,7 +26,7 @@ select tid,\
systeminfo_id,\
logfile,\
custom_job,\
('../edit/etl/etl_job_edit.jsp|tid=' || J.tid)::varchar(255)\
('../edit/etl/etl_job_bearbeiten.jsp|tid=' || J.tid)::varchar(255)\
FROM etl_job J\
where 1=1\
/* and J.tid=<<Laderoutine>> */\

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
);

1
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^
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^

68
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":""}
] />
@ -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"},
@ -108,8 +119,20 @@ @@ -108,8 +119,20 @@
{"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 = [
@ -202,14 +225,51 @@ @@ -202,14 +225,51 @@
{"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= $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= $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 = $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 = $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;" }

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

@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
--freemarker template
<#include "SQL_lingua_franca"/>
<#include "SuperX_general"/>
<#include "RPTA-Makros"/>
<sqlvars>
<sqlvar name="rpta_column_layout" type="hash">
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 />

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>

93
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,34 +16,23 @@ @@ -12,34 +16,23 @@
<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=paramname+": ";
//
zs+="<input type=\"hidden\" name=\"jobParamName\" value=\""+jobParamName+"\"/> ";
zs+="<input type=\"hidden\" name=\"jobParamValue\" value=\"\"/> ";
@ -50,15 +43,23 @@ if(srctype=="load") @@ -50,15 +43,23 @@ if(srctype=="load")
{
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+="<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")
{
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+"',document.getElementById('"+paramname+"').value);return false;\" class=\"linkLookImage\"><img title=\"Quellcode importieren\" alt=\"Quellcode importieren\" src=\"../../images/resultset_up.svg\" border=\"0\"/></a>";
//document.getElementById("maskentid_for_upload").style.visibility="visible";
@ -89,14 +90,14 @@ var xhttp = new XMLHttpRequest(); @@ -89,14 +90,14 @@ 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)
@ -104,7 +105,7 @@ function saveEtlXmlSrc(jobParamName,jobParamValue) @@ -104,7 +105,7 @@ function saveEtlXmlSrc(jobParamName,jobParamValue)
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");
alert("Bitte setzen Sie passenden XML-Quellcode ins Feld Inhalt");
return false;
}
else
@ -168,6 +169,20 @@ function togglekeyfields() { @@ -168,6 +169,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 +190,7 @@ String EntwicklungsmodusAn=""; @@ -175,6 +190,7 @@ String EntwicklungsmodusAn="";
String EntwicklungsmodusAus="checked";
Object mandantobject=request.getSession().getAttribute("MandantenID");
String mandantenid="";
if(mandantobject != null)
mandantenid=mandantobject.toString();
@ -256,7 +272,7 @@ etlJobsArr=etlJobs.toArray(etlJobsArr); @@ -256,7 +272,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 +313,14 @@ String tabUrl="etl_manager.jsp?tab="+tabUniquename.toLowerCase(); @@ -297,15 +313,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 +328,9 @@ if(tab.equals(etlJobsArr[i].tabUniquename.toLowerCase())) @@ -313,7 +328,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 +343,9 @@ if(tab.equals(etlJobsArr[i].tabUniquename.toLowerCase())) @@ -326,7 +343,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 +370,18 @@ if(tab.equals("")) @@ -351,15 +370,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 +401,19 @@ for (int i = 0; i < etlJobsArr.length; i++) { @@ -379,14 +401,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