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\ +\ +\ +/* <> */^ ^^ 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; + + + + +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; + + + + +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'; + 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); %> + +