diff --git a/.classpath b/.classpath
index ee8d016..3b0f67c 100644
--- a/.classpath
+++ b/.classpath
@@ -4,7 +4,6 @@
-
@@ -19,5 +18,6 @@
+
diff --git a/src-modules/module/etl/conf/etl.xml b/src-modules/module/etl/conf/etl.xml
index e753a1d..fc3ce99 100644
--- a/src-modules/module/etl/conf/etl.xml
+++ b/src-modules/module/etl/conf/etl.xml
@@ -38,6 +38,48 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[ETL]" />
+
+
+ Schlüsseltabelle für Ladejob im ETL-Manager
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ superx
+ superx
+ etl_manager_tab
+ tid
+ 1
+ etl_manager_tab_pk
+
+
+
+
+
+
+
@@ -334,7 +376,9 @@ parent="Laderoutinen">Abfragen zur Administration
+
+
@@ -345,6 +389,10 @@ parent="Laderoutinen">Abfragen zur Administration
+
+
+
+
@@ -368,6 +416,7 @@ version integer
+
@@ -376,6 +425,10 @@ version integer
+
+
+
+
diff --git a/src-modules/module/etl/conf/includes.txt b/src-modules/module/etl/conf/includes.txt
index e3887f0..290950c 100644
--- a/src-modules/module/etl/conf/includes.txt
+++ b/src-modules/module/etl/conf/includes.txt
@@ -1,4 +1,6 @@
doku/etl_modul/etl.html
WEB-INF/conf/edustore/db/bin/SQL_ENV_etl.sam
WEB-INF/lib/superx-etl.jar
+images/eye.svg
+images/downloadblck.svg
diff --git a/src-modules/module/etl/masken/42000_felderinfo.unl b/src-modules/module/etl/masken/42000_felderinfo.unl
index d267cf5..850a54f 100644
--- a/src-modules/module/etl/masken/42000_felderinfo.unl
+++ b/src-modules/module/etl/masken/42000_felderinfo.unl
@@ -3,4 +3,21 @@
42002^Arten von Ladeschritten^100^0^0^150^300^1^char^30^0^18^^^<>select '../edit/etl/etl_step_type_list.jsp' from xdummy;^
42003^Name^20^0^0^150^150^1^sql^50^0^0^^^^
42004^Komponente^30^0^0^150^200^1^integer^200^0^1^<> select tid,name from systeminfo order by 2;^^^
-42005^ETL-Manager^1000^0^0^150^300^1^char^30^0^18^^^<>select '../edit/etl/etl_manager.jsp' from xdummy;^
+42005^Job-Management^1000^0^0^150^300^1^char^30^0^18^^^<>select '../edit/etl/etl_manager.jsp' from xdummy;^
+42006^Maske^1^0^0^100^380^1^integer^30^0^1^<> select M.tid, M.tid || ' - ' || M.name from maskeninfo M, sachgeb_maske_bez S where M.tid=S.maskeninfo_id order by 1;^hidden^^
+42007^Testfall-Projekt^15^0^0^150^80^1^integer^200^0^1^<> --freemarker template\
+\
+\
+select 1 from xdummy where 0 < (select count(*) from db_version where his_system='qa')\
+union select 0 from xdummy where \
+ 0 = (select count(*) from db_version where his_system='qa');\
+\
+\
+\
+<#if QA_installed==1>\
+select tid,name from qa_project where active=1 order by 2;\
+<#else>\
+select null::char(1),'Keine Auwahl möglich' from xdummy\
+#if>\
+\
+/* <> */^ ^^
diff --git a/src-modules/module/etl/masken/42000_masken_felder_bez.unl b/src-modules/module/etl/masken/42000_masken_felder_bez.unl
index 2aa3b27..cf98a24 100644
--- a/src-modules/module/etl/masken/42000_masken_felder_bez.unl
+++ b/src-modules/module/etl/masken/42000_masken_felder_bez.unl
@@ -4,3 +4,5 @@
42000^42003^
42000^42004^
42000^42005^
+42000^42006^
+42000^42007^
diff --git a/src-modules/module/etl/schluesseltabellen/create_load_etl_qa_project.sql b/src-modules/module/etl/schluesseltabellen/create_load_etl_qa_project.sql
new file mode 100644
index 0000000..e1ed224
--- /dev/null
+++ b/src-modules/module/etl/schluesseltabellen/create_load_etl_qa_project.sql
@@ -0,0 +1,22 @@
+--Freemarker Template
+
+--used in etl-job sx_insert_mask
+<#if SQLdialect='Postgres'>
+drop table if exists tmp_etl_qa_project;
+drop table if exists tmp_etl_sachgeb_sichtarten;
+#if>
+
+
+
+CREATE TABLE tmp_etl_qa_project(
+
+uniquename VARCHAR(255) ,
+name VARCHAR(255) ,
+systeminfo_id INTEGER ,
+sachgebiete_id INTEGER ,
+active SMALLINT ,
+created_from INTEGER ,
+issue_link VARCHAR(255)
+)
+;
+
diff --git a/src-modules/module/etl/schluesseltabellen/create_load_etl_sichten.sql b/src-modules/module/etl/schluesseltabellen/create_load_etl_sichten.sql
new file mode 100644
index 0000000..d5d82c0
--- /dev/null
+++ b/src-modules/module/etl/schluesseltabellen/create_load_etl_sichten.sql
@@ -0,0 +1,49 @@
+--Freemarker Template
+
+--used in etl-job sx_insert_mask
+<#if SQLdialect='Postgres'>
+drop table if exists tmp_etl_sichten;
+drop table if exists tmp_etl_sachgeb_sichtarten;
+#if>
+
+
+
+CREATE TABLE tmp_etl_sichten (
+ -- tid integer,
+ --
+-- parent CHAR(255) ,
+systeminfoid INTEGER default 0 not null,
+art CHAR(40) ,
+type INTEGER default 10 not null,
+name_intern CHAR(200) ,
+name CHAR(200) ,
+-- beschreibung CHAR(255) ,
+sortnr INTEGER default 0 not null,
+quelle TEXT ,
+-- alt_hier_id CHAR(150) ,
+-- treecfgtable CHAR(255) ,
+-- treecfgid CHAR(150) ,
+-- label SMALLINT default 0 not null,
+-- user_rechte SMALLINT default 1 not null,
+-- rechtequelle CHAR(255) ,
+-- sesamkey CHAR(100) ,
+standbutton SMALLINT default 0 not null,
+-- attribut1 CHAR(255) ,
+-- attribut2 CHAR(255) ,
+-- attribut3 INTEGER ,
+-- attribut4 INTEGER ,
+-- xmlmaxentries INTEGER ,
+-- gueltig_seit DATE default date('01.01.1900') not null,
+-- gueltig_bis DATE default date('01.01.3000') not null,
+-- cacheapplet CHAR(255) ,
+-- cachexml CHAR(255) ,
+aktiv SMALLINT default 1
+);
+
+create table tmp_etl_sachgeb_sichtarten(
+ sachgebiete_id INTEGER ,
+sichtart CHAR(255)
+)
+;
+
+
diff --git a/src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl b/src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl
new file mode 100644
index 0000000..95da8bf
--- /dev/null
+++ b/src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl
@@ -0,0 +1,3 @@
+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^
diff --git a/src-modules/module/etl/schluesseltabellen/etl_manager_tab_prepare.sql b/src-modules/module/etl/schluesseltabellen/etl_manager_tab_prepare.sql
new file mode 100644
index 0000000..0c5a9b9
--- /dev/null
+++ b/src-modules/module/etl/schluesseltabellen/etl_manager_tab_prepare.sql
@@ -0,0 +1,12 @@
+--freemarker template
+
+
+select 1 from xdummy where 0 < (select count(*) from db_version where his_system='qa')
+union select 0 from xdummy where
+ 0 = (select count(*) from db_version where his_system='qa');
+
+
+
+<#if QA_installed==0>
+update etl_manager_tab set active=0 where uniquename='QA_PROJECT';
+#if>
diff --git a/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql b/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql
index 7ec701c..5cf0f51 100644
--- a/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql
+++ b/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql
@@ -8,7 +8,9 @@
{"uniquename":"sx_insert_mask", "name":"Maske hochladen", "systeminfo_id":270 ,"logfile":""},
{"uniquename":"kern_konstanten_update", "name":"Konstanten aktualisieren", "systeminfo_id":270 ,"logfile":""},
{"uniquename":"sichten_unload", "name":"Sichten entladen", "systeminfo_id":270 ,"logfile":""},
- {"uniquename":"sos_gewichtung_unload", "name":"Gewichtungen 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":""}
] />
@@ -25,10 +27,20 @@
{"etl_job":"kern_konstanten_update","param_name":"SUPERX_DIR", "name":"Superx-Pfad zu WEB-INF/conf/edustore", "param_default":"$WEBAPP/WEB-INF/conf/edustore"},
{"etl_job":"kern_konstanten_update","param_name":"PATH_TO_INPUTFILE", "name":"Eingabepfad", "param_default":"$SUPERX_DIR/db/install/schluesseltabellen/kern_feste_konstanten_fuellen.sql"},
- {"etl_job":"sichten_unload","param_name":"SYSTEMINFO_ID", "name":"Komponente", "param_default":""},
+ {"etl_job":"sichten_unload","param_name":"SYSTEMINFO_ID", "name":"Komponente", "param_default":""},
+ {"etl_job":"sichten_unload","param_name":"NAME_INTERN", "name":"ID", "param_default":""},
{"etl_job":"sichten_unload","param_name":"PATH_TO_OUTPUTFILE", "name":"Ausgabedatei", "param_default":"$SUPERX_DIR/db/masken/sichten_$SYSTEMINFO_ID.xml"},
{"etl_job":"sichten_unload","param_name":"FORMAT", "name":"Ausgabeformat", "param_default":"XML"},
+ {"etl_job":"sichten_upload","param_name":"SYSTEMINFO_ID", "name":"Komponente", "param_default":""},
+ {"etl_job":"sichten_upload","param_name":"NAME_INTERN", "name":"ID", "param_default":""},
+ {"etl_job":"sichten_upload","param_name":"PATH_TO_INPUTFILE", "name":"Eingabedatei", "param_default":""},
+ {"etl_job":"sichten_upload","param_name":"FORMAT", "name":"Format", "param_default":"XML"},
+
+ {"etl_job":"qa_project_unload","param_name":"QA_PROJECT_ID", "name":"Testfall-Projekt", "param_default":""},
+ {"etl_job":"qa_project_unload","param_name":"PATH_TO_OUTPUTFILE", "name":"Ausgabedatei", "param_default":"$SUPERX_DIR/db/masken/qa_project_$QA_PROJECT_ID.xml"},
+ {"etl_job":"qa_project_unload","param_name":"FORMAT", "name":"Ausgabeformat", "param_default":"XML"},
+
{"etl_job":"sos_gewichtung_unload","param_name":"SYSTEMINFO_ID", "name":"Komponente", "param_default":""},
{"etl_job":"sos_gewichtung_unload","param_name":"PATH_TO_OUTPUTFILE", "name":"Ausgabedatei", "param_default":"$SUPERX_DIR/db/db/module/sos/schluesseltabellen/sichten_$SYSTEMINFO_ID.xml"},
{"etl_job":"sos_gewichtung_unload","param_name":"FORMAT", "name":"Ausgabeformat", "param_default":"XML"}
@@ -78,12 +90,25 @@
{"etl_job":"sichten_unload", "uniquename":"unload_sichten_ges", "name":"Sichten entladen", "type":"MSG"},
{"etl_job":"sichten_unload", "uniquename":"unload_sichtentab", "name":"Sichten entladen", "type":"UNLOAD", "parent":"unload_sichten_ges"},
- {"etl_job":"sichten_unload", "uniquename":"unload_sichten_sachgeb", "name":"Sachgebiete von Sichtarten entladen", "type":"UNLOAD", "parent":"unload_sichten_ges"},
+ {"etl_job":"sichten_unload", "uniquename":"unload_sichten_sachgeb", "name":"Sachgebiete von Sichten entladen", "type":"UNLOAD", "parent":"unload_sichten_ges"},
+ {"etl_job":"sichten_upload", "uniquename":"create_tmp_etl_sichten", "name":"Tabelle tmp_etl_sichten erzeugen", "type":"DOSQL" },
+ {"etl_job":"sichten_upload", "uniquename":"upload_tmp_etl_sichten", "name":"tmp_etl_sichten hochladen", "type":"LOAD" },
+ {"etl_job":"sichten_upload", "uniquename":"upload_tmp_etl_sachgeb_sichtarten", "name":"upload_tmp_etl_sachgeb_sichtarten hochladen", "type":"LOAD" },
+ {"etl_job":"sichten_upload", "uniquename":"trans_etl_sichten", "name":"etl_sichten füllen", "type":"DOSQL" },
{"etl_job":"sos_gewichtung_unload", "uniquename":"unload_sos_gewichtung_ges", "name":"Gewichtungen entladen", "type":"MSG"},
- {"etl_job":"sos_gewichtung_unload", "uniquename":"unload_sos_gewichtung", "name":"Gewichtungen entladen", "type":"UNLOAD", "parent":"unload_sos_gewichtung_ges"}
-
+ {"etl_job":"sos_gewichtung_unload", "uniquename":"unload_sos_gewichtung", "name":"Gewichtungen entladen", "type":"UNLOAD", "parent":"unload_sos_gewichtung_ges"},
+
+ {"etl_job":"qa_project_unload", "uniquename":"qa_project_unload_ges", "name":"Testfall-Projekt entladen", "type":"MSG"},
+ {"etl_job":"qa_project_unload", "uniquename":"unload_qa_project_tab", "name":"Projekte entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
+ {"etl_job":"qa_project_unload", "uniquename":"unload_qa_resultset_tab", "name":"Resultsets entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
+ {"etl_job":"qa_project_unload", "uniquename":"unload_qa_dbtest_tab", "name":"DB-Tests entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
+ {"etl_job":"qa_project_unload", "uniquename":"unload_qa_dbtest_assertion_tab", "name":"DB-Test Erwartungen entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
+ {"etl_job":"qa_project_unload", "uniquename":"unload_qa_dbtest2project_tab", "name":"DB-Test zu Projekt entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
+ {"etl_job":"qa_project_unload", "uniquename":"unload_qa_mask_execution_tab", "name":"Masken-Tests entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
+ {"etl_job":"qa_project_unload", "uniquename":"unload_qa_mask_execution_assert_tab", "name":"Masken-Test Erwartungen entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"},
+ {"etl_job":"qa_project_unload", "uniquename":"unload_qa_mask_execution2project_tab", "name":"Masken-Test zu Projekt entladen", "type":"UNLOAD", "parent":"qa_project_unload_ges"}
] />
@@ -151,17 +176,43 @@
{"etl_step":"upload_tmp_etl_stylesheet_field","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_stylesheet_field\"]/rs/row" },
{"etl_step":"upload_tmp_etl_stylesheet_field","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
+ {"etl_step":"create_tmp_etl_sichten","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/create_load_etl_sichten.sql" },
+ {"etl_step":"upload_tmp_etl_sichten","prop_name":"target_table", "prop_value":"tmp_etl_sichten" },
+ {"etl_step":"upload_tmp_etl_sichten","prop_name":"format", "prop_value":"xml" },
+ {"etl_step":"upload_tmp_etl_sichten","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_sichtentab\"]/rs/row" },
+ {"etl_step":"upload_tmp_etl_sichten","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
+
+ {"etl_step":"upload_tmp_etl_sachgeb_sichtarten","prop_name":"target_table", "prop_value":"tmp_etl_sachgeb_sichtarten" },
+ {"etl_step":"upload_tmp_etl_sachgeb_sichtarten","prop_name":"format", "prop_value":"xml" },
+ {"etl_step":"upload_tmp_etl_sachgeb_sichtarten","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_sichten_sachgeb\"]/rs/row" },
+ {"etl_step":"upload_tmp_etl_sachgeb_sichtarten","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
+
+
+ {"etl_step":"trans_etl_sichten","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/trans_etl_sichten.sql" },
+
{"etl_step":"themenbaum_fuellen","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/themenbaum_fuellen.sql" },
{"etl_step":"sx_stylesheets_fuellen","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/sx_stylesheets_fuellen.sql" },
{"etl_step":"kern_konstanten_update","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" },
{"etl_step":"unload_sichten_ges","prop_name":"msg", "prop_value":"Entlade Sichten Komponente $SYSTEMINFO_ID" },
- {"etl_step":"unload_sichtentab","prop_name":"select_stmt", "prop_value":"SELECT S.systeminfoid,S.art,S.type,S.name_intern,S.name,S.sortnr,S.quelle,S.standbutton FROM sichten S where S.systeminfoid= $SYSTEMINFO_ID and position(''<#'' in quelle) =0 order by art,sortnr ,name;" },
- {"etl_step":"unload_sichten_sachgeb","prop_name":"select_stmt", "prop_value":"SELECT A.sichtart,A.sachgebiete_id FROM sachgeb_sichtarten A where A.sichtart in (select distinct S.art from sichten S where S.systeminfoid= $SYSTEMINFO_ID) order by 1,2;" },
+ {"etl_step":"unload_sichtentab","prop_name":"select_stmt", "prop_value":"SELECT S.systeminfoid,S.art,S.type,S.name_intern,S.name,S.sortnr,S.quelle,S.standbutton,S.aktiv FROM sichten S where (S.systeminfoid::varchar(255)= ''$SYSTEMINFO_ID'' or S.name_intern=''$NAME_INTERN'') and position(''<#'' in quelle) =0 order by art,sortnr ,name;" },
+ {"etl_step":"unload_sichten_sachgeb","prop_name":"select_stmt", "prop_value":"SELECT A.sichtart,A.sachgebiete_id FROM sachgeb_sichtarten A where A.sichtart in (select distinct S.art from sichten S where (S.systeminfoid::varchar(255)= ''$SYSTEMINFO_ID'' or S.name_intern=''$NAME_INTERN'')) order by 1,2;" },
{"etl_step":"unload_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_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":"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_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;" }
diff --git a/src-modules/module/etl/schluesseltabellen/trans_etl_sichten.sql b/src-modules/module/etl/schluesseltabellen/trans_etl_sichten.sql
new file mode 100644
index 0000000..2e24554
--- /dev/null
+++ b/src-modules/module/etl/schluesseltabellen/trans_etl_sichten.sql
@@ -0,0 +1,61 @@
+
+update sichten set systeminfoid=T.systeminfoid,
+art=T.art,
+type=T.type,
+name=T.name,
+quelle=T.quelle ,
+sortnr=T.sortnr,
+standbutton=T.standbutton,
+aktiv=T.aktiv
+
+from tmp_etl_sichten T
+ where T.name_intern=sichten.name_intern
+ and sichten.name_intern in (select T2.name_intern from tmp_etl_sichten T2)
+;
+
+delete from tmp_etl_sichten where name_intern in (select name_intern from sichten);
+
+INSERT INTO sichten(
+ systeminfoid ,
+ art ,
+ type ,
+ name_intern ,
+ name ,
+ sortnr ,
+ quelle ,
+ standbutton ,
+ gueltig_seit ,
+ gueltig_bis ,
+ aktiv)
+ select systeminfoid ,
+ art ,
+ type ,
+ name_intern ,
+ name ,
+ sortnr ,
+ quelle ,
+ standbutton ,
+ date_val('01.01.1900') as gueltig_seit ,
+ date_val('01.01.3000') as gueltig_bis ,
+ aktiv
+ from tmp_etl_sichten S;
+
+
+delete from sachgeb_sichtarten
+ where (sachgebiete_id ,
+sichtart) in
+(select sachgebiete_id ,
+sichtart from tmp_etl_sachgeb_sichtarten);
+
+insert into sachgeb_sichtarten(
+sachgebiete_id ,
+sichtart)
+select
+sachgebiete_id ,
+sichtart
+from tmp_etl_sachgeb_sichtarten;
+
+
+drop table if exists tmp_etl_sichten;
+drop table if exists tmp_etl_sachgeb_sichtarten;
+
diff --git a/src/de/superx/elt/EtlUtils.java b/src/de/superx/elt/EtlUtils.java
index fee9be3..d6853ea 100644
--- a/src/de/superx/elt/EtlUtils.java
+++ b/src/de/superx/elt/EtlUtils.java
@@ -315,7 +315,7 @@ public static String getFileContentsWithEncoding(String filePath, String encodin
* @throws IOException
* @throws XPathExpressionException
*/
- public static boolean isNodeValueInXml(String src, String searchPath, String expectedValue)
+ public static boolean isNodeValueInXml(String src, String searchPath, String expectedValue,String jobuniquename)
throws ParserConfigurationException, SAXException, IOException, XPathExpressionException {
boolean b=false;
Document mydomres =de.superx.elt.EtlUtils.parseXml(src);
@@ -341,4 +341,13 @@ public static String getFileContentsWithEncoding(String filePath, String encodin
returnString="Erfolg";
return returnString;
}
+ public static String translateReturnCode2Html(int returnCode)
+ {
+ String returnString=translateReturnCode(returnCode);
+ if(returnCode==0)
+ returnString=""+returnString+"";
+ else
+ returnString=""+returnString+"";
+ return returnString;
+ }
}
diff --git a/src/de/superx/sxrest/JobEtlXml.java b/src/de/superx/sxrest/JobEtlXml.java
new file mode 100644
index 0000000..1b29b26
--- /dev/null
+++ b/src/de/superx/sxrest/JobEtlXml.java
@@ -0,0 +1,213 @@
+/*
+ * de.superx.etl - a package for controlling ETL routines
+ * Copyright (C) 2021 Daniel Quathamer
+ *
+ * This package is licensed under the CampusSource License;
+ * http://www.campussource.de/org/license/
+ */
+package de.superx.sxrest;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.HEAD;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.Response;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Request;
+import de.memtext.util.DateUtils;
+import de.superx.common.SxUser;
+import de.superx.elt.EtlActionJob;
+import de.superx.elt.EtlUtils;
+import de.superx.servlet.SuperXManager;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+
+
+@Path("/jobetlxml/get/{jobUniquename}/{jobParamName}")
+
+
+public class JobEtlXml {
+ @Context
+ Request request;
+
+
+ @GET
+ @Path("/view/{param}")
+ @Produces(MediaType.APPLICATION_XML)
+
+ public Document printXml(@PathParam("jobUniquename") String jobUniquename,
+ @PathParam("jobParamName") String jobParamName,
+ @PathParam("param") String param,
+ @Context HttpServletRequest request) {
+ String returntext="";
+ returntext = getJobEtlXml(jobUniquename,jobParamName, param, request);
+
+ return de.memtext.util.XMLUtils.buildDocumentFromString(returntext, false);
+ }
+ private String getJobEtlXml(String jobUniquename,
+ String jobParamName,
+ String param,
+ HttpServletRequest request) {
+ String returntext;
+ SxUser user = (SxUser) request.getSession().getAttribute("user");
+ //TODO: valide Einträge prüfen:
+ //ebenso param
+ System.out.println("JOB"+jobUniquename + " mit param "+jobParamName);
+ String mandantenid= (String) request.getSession().getAttribute("MandantenID");
+ if(mandantenid==null || mandantenid.equals(""))
+ mandantenid="default";
+
+ if (user == null || !user.isAdmin()) {
+ returntext="Fehlende Rechte";
+ }
+ else
+ {
+
+ int returnCode=0;
+ EtlActionJob myJob=new EtlActionJob(jobUniquename); //TODO:Mandantid
+ try {
+ myJob.initJob(jobUniquename,jobParamName+"="+param);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+
+ returntext=e.toString();
+ returntext+=myJob.getLogoutput();
+
+ }
+ System.out.println("Job "+ jobUniquename+" initialized");
+ try {
+ returnCode= myJob.execute("");
+ returntext=myJob.getSw().toString();
+
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ returntext=e.toString();
+ returntext+=myJob.getLogoutput();
+ }
+ }
+ return returntext;
+ }
+ @GET
+ @Path("/download/{param}")
+ @Produces(MediaType.APPLICATION_XML)
+ public String createDownloadXml(
+ @PathParam("jobUniquename") String jobUniquename,
+ @PathParam("jobParamName") String jobParamName,
+ @PathParam("param") String param,
+ @Context HttpServletRequest request) {
+ String returntext="";
+ returntext = getJobEtlXml(jobUniquename,jobParamName,param, request);
+ return returntext;
+ //return de.memtext.util.XMLUtils.buildDocumentFromString(returntext, false);
+ }
+ /* Aktuell noch nicht genutzt: */
+ @GET
+ @Path("/saveget/{params}")
+ @Produces(MediaType.TEXT_PLAIN)
+
+
+ public String saveGetXml(@QueryParam("param") String tid,
+ @QueryParam("Inhalt") String src,
+ @Context HttpServletRequest request) {
+ String returntext="";
+ SxUser user = (SxUser) request.getSession().getAttribute("user");
+ String mandantenid= (String) request.getSession().getAttribute("MandantenID");
+ if(mandantenid==null || mandantenid.equals(""))
+ mandantenid="default";
+
+ if (user == null || !user.isAdmin()) {
+ returntext="Fehlende Rechte";
+ }
+ else
+ {
+ returntext="tid="+tid+"-src="+src;
+ }
+
+ return returntext;
+ }
+ /* Aktuell noch nicht genutzt: */
+ @POST
+ @Path("/save")
+ @Consumes("application/x-www-form-urlencoded")
+ //@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+ @Produces(MediaType.TEXT_PLAIN)
+
+ public String saveXml(@FormParam("tid") String tid,
+ @FormParam("Inhalt") String src,
+ @Context HttpServletRequest request) {
+ String returntext="";
+ String jobuniquename="sx_select_mask";
+ int returnCode=0;
+ tid="16000";
+ SxUser user = (SxUser) request.getSession().getAttribute("user");
+ String mandantenid= (String) request.getSession().getAttribute("MandantenID");
+ String searchString="/etlAction[@name=\""+jobuniquename+"\"]/unload[@name=\"unload_maskeninfo\"]/rs/row/fld[@name=\"tid\"]";
+ if(mandantenid==null || mandantenid.equals(""))
+ mandantenid="default";
+
+ if (user == null || !user.isAdmin()) {
+ returntext="Fehlende Rechte";
+
+ }
+ else
+ {
+ try {
+ if(de.superx.elt.EtlUtils.isNodeValueInXml(src,searchString,tid,jobuniquename))
+ {
+ String job="sx_insert_mask";
+ returntext="TID="+tid;
+ String params="TID="+tid;
+ File temp;
+ temp = File.createTempFile("myTempFile", ".xml");
+
+ BufferedWriter bw = new BufferedWriter(new FileWriter(temp));
+ bw.write(src);
+
+ bw.close();
+ params+=EtlUtils.NEWLINE+"PATH_TO_INPUTFILE="+temp.getAbsolutePath();
+ params+=EtlUtils.NEWLINE+"FORMAT=XML";
+ EtlActionJob myJob=new EtlActionJob(job); //TODO:Mandantid
+ myJob.initJob(job,params);
+ returnCode= myJob.execute("");
+ returntext=myJob.getSw().toString();
+
+
+
+ }
+ else
+ returntext="Übergebene TID "+tid+" entspricht nicht der XML-Datei ";
+ } catch (Exception e) {
+ returntext=e.toString();
+ e.printStackTrace();
+ }
+
+
+ }
+ return returntext;
+ }
+
+}
diff --git a/src/de/superx/sxrest/MaskXml.java b/src/de/superx/sxrest/MaskXml.java
index d8018e7..1fc5b46 100644
--- a/src/de/superx/sxrest/MaskXml.java
+++ b/src/de/superx/sxrest/MaskXml.java
@@ -147,11 +147,12 @@ public class MaskXml {
@FormParam("Inhalt") String src,
@Context HttpServletRequest request) {
String returntext="";
+ String jobuniquename="sx_select_mask";
int returnCode=0;
tid="16000";
SxUser user = (SxUser) request.getSession().getAttribute("user");
String mandantenid= (String) request.getSession().getAttribute("MandantenID");
- String searchString="/etlAction[@name=\"sx_select_mask\"]/unload[@name=\"unload_maskeninfo\"]/rs/row/fld[@name=\"tid\"]";
+ String searchString="/etlAction[@name=\""+jobuniquename+"\"]/unload[@name=\"unload_maskeninfo\"]/rs/row/fld[@name=\"tid\"]";
if(mandantenid==null || mandantenid.equals(""))
mandantenid="default";
@@ -162,7 +163,7 @@ public class MaskXml {
else
{
try {
- if(de.superx.elt.EtlUtils.isNodeValueInXml(src,searchString,tid))
+ if(de.superx.elt.EtlUtils.isNodeValueInXml(src,searchString,tid,jobuniquename))
{
String job="sx_insert_mask";
returntext="TID="+tid;
diff --git a/superx/WEB-INF/lib/superx-etl.jar b/superx/WEB-INF/lib/superx-etl.jar
index 5868d66..dffd3b2 100644
Binary files a/superx/WEB-INF/lib/superx-etl.jar and b/superx/WEB-INF/lib/superx-etl.jar differ
diff --git a/superx/edit/etl/etl_manager.jsp b/superx/edit/etl/etl_manager.jsp
index f0188a4..757e910 100644
--- a/superx/edit/etl/etl_manager.jsp
+++ b/superx/edit/etl/etl_manager.jsp
@@ -1,7 +1,10 @@
<%@ taglib uri="/WEB-INF/dbforms.tld" prefix="db" %>
<%@page pageEncoding="utf-8" contentType="text/html; charset=UTF-8" %>
<%@ page import ="de.superx.servlet.ServletUtils" %>
-<%@ page import ="de.superx.servlet.SxPools" %>
+<%@ page import ="de.superx.servlet.SxPools,java.util.ArrayList" %>
+<%@ page import ="org.dbforms.config.DbFormsConfigRegistry,java.sql.Connection,java.sql.Statement,java.sql.ResultSet,de.superx.common.SxUser" %>
+
+
@@ -10,9 +13,12 @@
ETL Manager
-
+
+
+
+
<%
@@ -148,8 +186,71 @@ String tab = request.getParameter("tab");
if(tab == null)
tab="";
+//Daten aus Datenbank werden in Variablen gespeichert
+Connection conmm=null;
+
+class etlJob{
+String tabUniquename;
+String tabCaption;
+String jobExportUniquename;
+String jobImportUniquename;
+String jobParamFieldname;
+String jobParamFieldTid;
+String jobParamMaskTid;
+String jobParamName;
+}
+
+ArrayList etlJobs = new ArrayList();
+
+
+
+//out.println("Getting Connection for mandantenid="+mandantenid);
+try {
+
+conmm = DbFormsConfigRegistry.instance().lookup().getConnection(mandantenid);
+//System.out.println("Got Connection");
+Statement st;
+
+st=conmm.createStatement();
+
+ResultSet rs;
+String sqlQueryEtlManagerTab="select T.caption,T.uniquename,T.tid,T.job_export,T.job_import,T.maskeninfo_id,T.felderinfo_id";
+sqlQueryEtlManagerTab+=", F.name as feldname,T.job_param_ui ";
+sqlQueryEtlManagerTab+=" from etl_manager_tab T, felderinfo F where T.felderinfo_id=F.tid and T.active=1";
+sqlQueryEtlManagerTab+=" order by 1";
+rs = st.executeQuery(sqlQueryEtlManagerTab);
+int i=0;
+while (rs.next()) {
+etlJob myJob=new etlJob();
+myJob.tabCaption=rs.getString(1);
+myJob.tabUniquename=rs.getString(2);
+myJob.jobExportUniquename=rs.getString(4);
+myJob.jobImportUniquename=rs.getString(5);
+myJob.jobParamMaskTid=rs.getString(6);
+myJob.jobParamFieldTid=rs.getString(7);
+myJob.jobParamFieldname=rs.getString(8);
+myJob.jobParamName=rs.getString(9);
+
+
+etlJobs.add(myJob);
+ i++;
+}
+rs.close();
+st.close();
+conmm.close();
+
+} //Check DB connection
+catch (Exception e) {
+out.print("Fehler bei Datenverbindung: "+e+ " MandantID"+mandantenid +"");
+}
+
+
+etlJob[] etlJobsArr=new etlJob[etlJobs.size()];
+etlJobsArr=etlJobs.toArray(etlJobsArr);
%>
+
+