From f38d46937f9af77b96e018767de11617a728f68f Mon Sep 17 00:00:00 2001 From: Daniel Quathamer Date: Mon, 5 Jan 2026 11:54:27 +0100 Subject: [PATCH] Mehrfachauswahl von Objekten beim Upload / Download #7 --- src-modules/module/etl/conf/etl.xml | 2 +- .../module/etl/masken/42000_felderinfo.unl | 9 +- .../etl/masken/42000_masken_felder_bez.unl | 1 + .../module/etl/masken/42000_maskeninfo.unl | 2 +- .../create_load_etl_masken.sql | 68 +++++ .../schluesseltabellen/etl_manager_tab.unl | 2 +- .../schluesseltabellen/etl_step_fuellen.sql | 74 ++--- .../etl/schluesseltabellen/masken_fuellen.sql | 106 +++++++ .../schluesseltabellen/themenbaum_fuellen.sql | 17 +- .../trans_rpta_column_layout.sql | 286 +++++++++++++++++- superx/edit/etl/etl_manager.jsp | 28 +- 11 files changed, 527 insertions(+), 68 deletions(-) create mode 100644 src-modules/module/etl/schluesseltabellen/create_load_etl_masken.sql create mode 100644 src-modules/module/etl/schluesseltabellen/masken_fuellen.sql diff --git a/src-modules/module/etl/conf/etl.xml b/src-modules/module/etl/conf/etl.xml index e76eb9b..bf4be9a 100644 --- a/src-modules/module/etl/conf/etl.xml +++ b/src-modules/module/etl/conf/etl.xml @@ -1,6 +1,6 @@ - diff --git a/src-modules/module/etl/masken/42000_felderinfo.unl b/src-modules/module/etl/masken/42000_felderinfo.unl index 88ca9a8..f962f41 100644 --- a/src-modules/module/etl/masken/42000_felderinfo.unl +++ b/src-modules/module/etl/masken/42000_felderinfo.unl @@ -2,10 +2,10 @@ 42001^Laderoutine^0^0^0^150^80^1^integer^200^0^1^<> select tid,caption from etl_job order by 2;^^^ 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;^^^ +42004^Sicht^30^0^0^150^200^20^sql^200^0^1^<> select tid,trim(art) || '- ' || trim(name) from sichten where aktiv=1 and position('<#' in quelle) =0 order by 2;^hidden^^ 42005^Job-Management^1000^0^0^150^300^1^char^30^0^18^^^<>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\ +42006^Maske^1^0^0^100^380^20^sql^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^20^sql^200^0^1^<> --freemarker template\ \ \ select 1 from xdummy where 0 < (select count(*) from db_version where his_system='qa')\ @@ -21,7 +21,7 @@ select null::char(1),'Keine Auwahl möglich' from xdummy\ \ \ /* <> */^hidden^^ -42008^Spaltenlayout^15^0^0^150^80^1^integer^200^0^1^<> --freemarker template\ +42008^Spaltenlayout^15^0^0^150^80^20^sql^200^0^1^<> --freemarker template\ \ \ select 1 from xdummy where 0 < (select count(*) from db_version where his_system='rpta')\ @@ -37,3 +37,4 @@ select null::char(1),'Keine Auwahl möglich' from xdummy\ \ \ /* <> */^hidden^^ +42009^Komponente^17^0^0^130^100^1^integer^30^0^1^<> select tid,name from systeminfo order by 2^ ^ ^ 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 1f92673..0a61abe 100644 --- a/src-modules/module/etl/masken/42000_masken_felder_bez.unl +++ b/src-modules/module/etl/masken/42000_masken_felder_bez.unl @@ -7,3 +7,4 @@ 42000^42006^ 42000^42007^ 42000^42008^ +42000^42009^ diff --git a/src-modules/module/etl/masken/42000_maskeninfo.unl b/src-modules/module/etl/masken/42000_maskeninfo.unl index 363f354..ca9bc8f 100644 --- a/src-modules/module/etl/masken/42000_maskeninfo.unl +++ b/src-modules/module/etl/masken/42000_maskeninfo.unl @@ -26,7 +26,7 @@ select tid,\ systeminfo_id,\ logfile,\ custom_job,\ - ('../edit/etl/etl_job_bearbeiten.jsp|tid=' || J.tid)::varchar(255)\ + ('../edit/etl/etl_job_edit.jsp|tid=' || J.tid)::varchar(255)\ FROM etl_job J\ where 1=1\ /* and J.tid=<> */\ diff --git a/src-modules/module/etl/schluesseltabellen/create_load_etl_masken.sql b/src-modules/module/etl/schluesseltabellen/create_load_etl_masken.sql new file mode 100644 index 0000000..86c0200 --- /dev/null +++ b/src-modules/module/etl/schluesseltabellen/create_load_etl_masken.sql @@ -0,0 +1,68 @@ +--Freemarker Template + +--used in etl-job sx_insert_mask +<#if SQLdialect='Postgres'> +drop table if exists tmp_maskeninfo; +drop table if exists tmp_felderinfo; +drop table if exists tmp_masken_felder_bez; +drop table if exists tmp_sachgeb_maske_bez; +drop table if exists tmp_maske_system_bez; + + +create table tmp_maskeninfo( + tid INTEGER not null, +name CHAR(255) not null, +select_stmt text , +xil_proplist text , +chart_xtitel CHAR(50) , +chart_ytitel CHAR(50) , +erlaeuterung CHAR(255) , +cleanup_stmt CHAR(240) , +default_file CHAR(200) , +frontend SMALLINT , +breite INTEGER , +hoehe INTEGER , +ampel SMALLINT , +hilfe SMALLINT , +hinweis text + +) +; +create table tmp_felderinfo( + tid INTEGER not null, +name VARCHAR(255) not null, +nummer INTEGER not null, +x INTEGER , +y INTEGER , +buttonbreite INTEGER , +feldbreite INTEGER , +zeilenanzahl INTEGER , +typ CHAR(15) , +laenge INTEGER , +obligatorisch INTEGER , +art INTEGER , +relation text , +attribut CHAR(100) , +defaultwert TEXT + +) +; +create table tmp_masken_felder_bez( + maskeninfo_id INTEGER , +felderinfo_id INTEGER + +) +; +create table tmp_sachgeb_maske_bez( + sachgebiete_id INTEGER , +maskeninfo_id INTEGER + +) +; +create table tmp_maske_system_bez( + maskeninfo_id INTEGER not null, +systeminfo_id INTEGER not null + +) +; + diff --git a/src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl b/src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl index be21f5c..774fb28 100644 --- a/src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl +++ b/src-modules/module/etl/schluesseltabellen/etl_manager_tab.unl @@ -1,4 +1,4 @@ 1^MASK^Masken^0^sx_select_mask^sx_insert_mask^TID^42000^42006^1^ -2^SICHT^Sichten^0^sichten_unload^sichten_upload^SYSTEMINFO_ID^42000^42004^1^ +2^SICHT^Sichten^0^sichten_unload^sichten_upload^SICHTEN_TID^42000^42004^1^ 3^QA_PROJECT^Testfälle^0^qa_project_unload^qa_project_upload^QA_PROJECT_ID^42000^42007^1^ 4^RPTA_COLUMN_LAYOUT^Spaltenlayouts^0^rpta_column_layout_unload^rpta_column_layout_upload^RPTA_COLUMN_LAYOUT_TID^42000^42008^1^ diff --git a/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql b/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql index 54a62cf..71b6105 100644 --- a/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql +++ b/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql @@ -29,12 +29,12 @@ {"etl_job":"kern_konstanten_update","param_name":"SUPERX_DIR", "name":"Superx-Pfad zu WEB-INF/conf/edustore", "param_default":"$WEBAPP/WEB-INF/conf/edustore"}, {"etl_job":"kern_konstanten_update","param_name":"PATH_TO_INPUTFILE", "name":"Eingabepfad", "param_default":"$SUPERX_DIR/db/install/schluesseltabellen/kern_feste_konstanten_fuellen.sql"}, - {"etl_job":"sichten_unload","param_name":"SYSTEMINFO_ID", "name":"Komponente", "param_default":""}, + {"etl_job":"sichten_unload","param_name":"SICHTEN_TID", "name":"Sicht", "param_default":""}, {"etl_job":"sichten_unload","param_name":"NAME_INTERN", "name":"ID", "param_default":""}, - {"etl_job":"sichten_unload","param_name":"PATH_TO_OUTPUTFILE", "name":"Ausgabedatei", "param_default":"$SUPERX_DIR/db/masken/sichten_$SYSTEMINFO_ID.xml"}, + {"etl_job":"sichten_unload","param_name":"PATH_TO_OUTPUTFILE", "name":"Ausgabedatei", "param_default":"$SUPERX_DIR/db/masken/sichten.xml"}, {"etl_job":"sichten_unload","param_name":"FORMAT", "name":"Ausgabeformat", "param_default":"XML"}, - {"etl_job":"sichten_upload","param_name":"SYSTEMINFO_ID", "name":"Komponente", "param_default":""}, + {"etl_job":"sichten_upload","param_name":"SICHTEN_TID", "name":"Sicht", "param_default":""}, {"etl_job":"sichten_upload","param_name":"NAME_INTERN", "name":"ID", "param_default":""}, {"etl_job":"sichten_upload","param_name":"PATH_TO_INPUTFILE", "name":"Eingabedatei", "param_default":""}, {"etl_job":"sichten_upload","param_name":"FORMAT", "name":"Format", "param_default":"XML"}, @@ -70,21 +70,16 @@ {"etl_job":"sx_select_mask", "uniquename":"unload_sx_stylesheets", "name":"sx_stylesheets entladen", "type":"UNLOAD"}, {"etl_job":"sx_select_mask", "uniquename":"unload_stylesheet_field", "name":"stylesheet_field entladen", "type":"UNLOAD"}, - {"etl_job":"sx_insert_mask", "uniquename":"delete_maskeninfo", "name":"Maskeninfo löschen", "type":"DOQUERY" }, + {"etl_job":"sx_insert_mask", "uniquename":"create_tmp_etl_masken", "name":"Tabellen tmp_etl_masken erzeugen", "type":"DOSQL" }, + {"etl_job":"sx_insert_mask", "uniquename":"upload_maskeninfo", "name":"Maskeninfo hochladen", "type":"LOAD" }, - {"etl_job":"sx_insert_mask", "uniquename":"delete_felderinfo", "name":"felderinfo löschen", "type":"DOQUERY" }, {"etl_job":"sx_insert_mask", "uniquename":"upload_felderinfo", "name":"felderinfo hochladen", "type":"LOAD" }, - - {"etl_job":"sx_insert_mask", "uniquename":"delete_masken_felder_bez", "name":"masken_felder_bez löschen", "type":"DOQUERY" }, {"etl_job":"sx_insert_mask", "uniquename":"upload_masken_felder_bez", "name":"masken_felder_bez hochladen", "type":"LOAD" }, - - {"etl_job":"sx_insert_mask", "uniquename":"delete_sachgeb_maske_bez", "name":"sachgeb_maske_bez löschen", "type":"DOQUERY" }, {"etl_job":"sx_insert_mask", "uniquename":"upload_sachgeb_maske_bez", "name":"sachgeb_maske_bez hochladen", "type":"LOAD" }, - {"etl_job":"sx_insert_mask", "uniquename":"delete_maske_system_bez", "name":"maske_system_bez löschen", "type":"DOQUERY" }, {"etl_job":"sx_insert_mask", "uniquename":"upload_maske_system_bez", "name":"maske_system_bez hochladen", "type":"LOAD" }, {"etl_job":"sx_insert_mask", "uniquename":"create_tmp_etl_themenbaum", "name":"Tabelle tmp_etl_themenbaum erzeugen", "type":"DOSQL" }, {"etl_job":"sx_insert_mask", "uniquename":"create_tmp_etl_stylesheets", "name":"Tabelle tmp_etl_stylesheets erzeugen", "type":"DOSQL" }, @@ -94,6 +89,7 @@ {"etl_job":"sx_insert_mask", "uniquename":"upload_tmp_etl_mask_style", "name":"tmp_etl_mask_style hochladen", "type":"LOAD" }, {"etl_job":"sx_insert_mask", "uniquename":"upload_tmp_etl_stylesheet_field", "name":"tmp_etl_stylesheet_field hochladen", "type":"LOAD" }, + {"etl_job":"sx_insert_mask", "uniquename":"masken_fuellen", "name":"masken_fuellen", "type":"DOSQL" }, {"etl_job":"sx_insert_mask", "uniquename":"themenbaum_fuellen", "name":"themenbaum_fuellen", "type":"DOSQL" }, {"etl_job":"sx_insert_mask", "uniquename":"sx_stylesheets_fuellen", "name":"sx_stylesheets_fuellen", "type":"DOSQL" }, @@ -136,43 +132,40 @@ ] /> <#assign etl_step_properties = [ - {"etl_step":"unload_masken_stammdaten","prop_name":"msg", "prop_value":"Entlade Stammdaten Maske $TID" }, - {"etl_step":"unload_maskeninfo","prop_name":"select_stmt", "prop_value":"select tid,name,select_stmt,xil_proplist,chart_xtitel,chart_ytitel,erlaeuterung,cleanup_stmt,default_file,frontend,breite,hoehe,ampel,hilfe,hinweis from maskeninfo where tid=$TID" }, - {"etl_step":"unload_felderinfo","prop_name":"select_stmt", "prop_value":"select tid ,name,nummer,x,y,buttonbreite,feldbreite,zeilenanzahl,typ,laenge,obligatorisch,art,relation,attribut,defaultwert from felderinfo where tid in (select felderinfo_id from masken_felder_bez where maskeninfo_id = $TID) order by tid" }, - {"etl_step":"unload_masken_felder_bez","prop_name":"select_stmt", "prop_value":"select maskeninfo_id,felderinfo_id from masken_felder_bez where maskeninfo_id=$TID order by 1,2" }, - {"etl_step":"unload_sachgeb_maske_bez","prop_name":"select_stmt", "prop_value":"select sachgebiete_id,maskeninfo_id from sachgeb_maske_bez where maskeninfo_id=$TID order by 1,2" }, - {"etl_step":"unload_maske_system_bez","prop_name":"select_stmt", "prop_value":"select maskeninfo_id,systeminfo_id from maske_system_bez where maskeninfo_id=$TID order by 1,2" }, - {"etl_step":"unload_themenbaum","prop_name":"select_stmt", "prop_value":"select name,maskeninfo_id,parent,(select name from themenbaum where tid=T.parent) as parent_name,gueltig_seit,gueltig_bis,erlaeuterung,sort,css_class from themenbaum T where maskeninfo_id=$TID order by 2,1" }, - {"etl_step":"unload_sx_mask_style","prop_name":"select_stmt", "prop_value":"select maskeninfo_id,stylesheet_id,ord,(select filename from sx_stylesheets where tid=S.stylesheet_id) as stylesheet_filename from sx_mask_style S where maskeninfo_id=$TID order by 1,2,3" }, - {"etl_step":"unload_sx_stylesheets","prop_name":"select_stmt", "prop_value":"select S.tid,S.filename,S.caption,S.description,S.relation,S.useragent,S.contenttype,S.is_generic,S.toolbar_icon_filepath,S.usage_resultset_data,S.stylesheet_type,S.jr_datasource from sx_stylesheets S, sx_mask_style M where S.tid=M.stylesheet_id and M.maskeninfo_id=$TID order by 1,2,3" }, - {"etl_step":"unload_stylesheet_field","prop_name":"select_stmt", "prop_value":"select F.tid,F.stylesheet_id,S.filename as stylesheet_filename,F.tablename,F.fieldname FROM stylesheet_field F, sx_stylesheets S, sx_mask_style M where F.stylesheet_id=S.tid and S.tid=M.stylesheet_id and M.maskeninfo_id=$TID order by 1,2,3,4,5" }, - - {"etl_step":"delete_maskeninfo","prop_name":"select_stmt", "prop_value":"delete from maskeninfo where tid=$TID" }, - {"etl_step":"upload_maskeninfo","prop_name":"target_table", "prop_value":"maskeninfo" }, + {"etl_step":"unload_masken_stammdaten","prop_name":"msg", "prop_value":"Entlade Stammdaten Maske/n $TID" }, + {"etl_step":"unload_maskeninfo","prop_name":"select_stmt", "prop_value":"select tid,name,select_stmt,xil_proplist,chart_xtitel,chart_ytitel,erlaeuterung,cleanup_stmt,default_file,frontend,breite,hoehe,ampel,hilfe,hinweis from maskeninfo where tid in ($TID)" }, + {"etl_step":"unload_felderinfo","prop_name":"select_stmt", "prop_value":"select tid ,name,nummer,x,y,buttonbreite,feldbreite,zeilenanzahl,typ,laenge,obligatorisch,art,relation,attribut,defaultwert from felderinfo where tid in (select felderinfo_id from masken_felder_bez where maskeninfo_id in ( $TID )) order by tid" }, + {"etl_step":"unload_masken_felder_bez","prop_name":"select_stmt", "prop_value":"select maskeninfo_id,felderinfo_id from masken_felder_bez where maskeninfo_id in ( $TID ) order by 1,2" }, + {"etl_step":"unload_sachgeb_maske_bez","prop_name":"select_stmt", "prop_value":"select sachgebiete_id,maskeninfo_id from sachgeb_maske_bez where maskeninfo_id in ( $TID ) order by 1,2" }, + {"etl_step":"unload_maske_system_bez","prop_name":"select_stmt", "prop_value":"select maskeninfo_id,systeminfo_id from maske_system_bez where maskeninfo_id in ( $TID ) order by 1,2" }, + {"etl_step":"unload_themenbaum","prop_name":"select_stmt", "prop_value":"select name,maskeninfo_id,parent,(select name from themenbaum where tid=T.parent) as parent_name,gueltig_seit,gueltig_bis,erlaeuterung,sort,css_class from themenbaum T where maskeninfo_id in ( $TID ) union select name,maskeninfo_id,parent,(select name from themenbaum where tid=T.parent) as parent_name, gueltig_seit,gueltig_bis,erlaeuterung,sort,css_class from themenbaum T where T.tid=(select T2.parent from themenbaum T2 where T2.maskeninfo_id in ( $TID )) order by 2,1" }, + {"etl_step":"unload_sx_mask_style","prop_name":"select_stmt", "prop_value":"select maskeninfo_id,stylesheet_id,ord,(select filename from sx_stylesheets where tid=S.stylesheet_id) as stylesheet_filename from sx_mask_style S where maskeninfo_id in ( $TID ) order by 1,2,3" }, + {"etl_step":"unload_sx_stylesheets","prop_name":"select_stmt", "prop_value":"select S.tid,S.filename,S.caption,S.description,S.relation,S.useragent,S.contenttype,S.is_generic,S.toolbar_icon_filepath,S.usage_resultset_data,S.stylesheet_type,S.jr_datasource from sx_stylesheets S, sx_mask_style M where S.tid=M.stylesheet_id and M.maskeninfo_id in ( $TID ) order by 1,2,3" }, + {"etl_step":"unload_stylesheet_field","prop_name":"select_stmt", "prop_value":"select F.tid,F.stylesheet_id,S.filename as stylesheet_filename,F.tablename,F.fieldname FROM stylesheet_field F, sx_stylesheets S, sx_mask_style M where F.stylesheet_id=S.tid and S.tid=M.stylesheet_id and M.maskeninfo_id in ( $TID ) order by 1,2,3,4,5" }, + + {"etl_step":"create_tmp_etl_masken","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/create_load_etl_masken.sql" }, + + {"etl_step":"upload_maskeninfo","prop_name":"target_table", "prop_value":"tmp_maskeninfo" }, {"etl_step":"upload_maskeninfo","prop_name":"format", "prop_value":"xml" }, {"etl_step":"upload_maskeninfo","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_maskeninfo\"]/rs/row" }, {"etl_step":"upload_maskeninfo","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" }, - {"etl_step":"delete_felderinfo","prop_name":"select_stmt", "prop_value":"delete from felderinfo where tid in (select felderinfo_id from masken_felder_bez where maskeninfo_id =$TID)" }, - {"etl_step":"upload_felderinfo","prop_name":"target_table", "prop_value":"felderinfo" }, + {"etl_step":"upload_felderinfo","prop_name":"target_table", "prop_value":"tmp_felderinfo" }, {"etl_step":"upload_felderinfo","prop_name":"format", "prop_value":"xml" }, {"etl_step":"upload_felderinfo","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_felderinfo\"]/rs/row" }, {"etl_step":"upload_felderinfo","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" }, - {"etl_step":"delete_masken_felder_bez","prop_name":"select_stmt", "prop_value":"delete from masken_felder_bez where maskeninfo_id =$TID" }, - {"etl_step":"upload_masken_felder_bez","prop_name":"target_table", "prop_value":"masken_felder_bez" }, + {"etl_step":"upload_masken_felder_bez","prop_name":"target_table", "prop_value":"tmp_masken_felder_bez" }, {"etl_step":"upload_masken_felder_bez","prop_name":"format", "prop_value":"xml" }, {"etl_step":"upload_masken_felder_bez","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_masken_felder_bez\"]/rs/row" }, {"etl_step":"upload_masken_felder_bez","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" }, - {"etl_step":"delete_sachgeb_maske_bez","prop_name":"select_stmt", "prop_value":"delete from sachgeb_maske_bez where maskeninfo_id =$TID" }, - {"etl_step":"upload_sachgeb_maske_bez","prop_name":"target_table", "prop_value":"sachgeb_maske_bez" }, + {"etl_step":"upload_sachgeb_maske_bez","prop_name":"target_table", "prop_value":"tmp_sachgeb_maske_bez" }, {"etl_step":"upload_sachgeb_maske_bez","prop_name":"format", "prop_value":"xml" }, {"etl_step":"upload_sachgeb_maske_bez","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_sachgeb_maske_bez\"]/rs/row" }, {"etl_step":"upload_sachgeb_maske_bez","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" }, - {"etl_step":"delete_maske_system_bez","prop_name":"select_stmt", "prop_value":"delete from maske_system_bez where maskeninfo_id =$TID" }, - {"etl_step":"upload_maske_system_bez","prop_name":"target_table", "prop_value":"maske_system_bez" }, + {"etl_step":"upload_maske_system_bez","prop_name":"target_table", "prop_value":"tmp_maske_system_bez" }, {"etl_step":"upload_maske_system_bez","prop_name":"format", "prop_value":"xml" }, {"etl_step":"upload_maske_system_bez","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_maske_system_bez\"]/rs/row" }, {"etl_step":"upload_maske_system_bez","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" }, @@ -213,14 +206,15 @@ {"etl_step":"trans_etl_sichten","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/trans_etl_sichten.sql" }, + {"etl_step":"masken_fuellen","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/masken_fuellen.sql" }, {"etl_step":"themenbaum_fuellen","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/themenbaum_fuellen.sql" }, {"etl_step":"sx_stylesheets_fuellen","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/sx_stylesheets_fuellen.sql" }, {"etl_step":"kern_konstanten_update","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" }, - {"etl_step":"unload_sichten_ges","prop_name":"msg", "prop_value":"Entlade Sichten Komponente $SYSTEMINFO_ID" }, - {"etl_step":"unload_sichtentab","prop_name":"select_stmt", "prop_value":"SELECT S.systeminfoid,S.art,S.type,S.name_intern,S.name,S.sortnr,S.quelle,S.standbutton,S.aktiv FROM sichten S where (S.systeminfoid::varchar(255)= ''$SYSTEMINFO_ID'' or S.name_intern=''$NAME_INTERN'') and position(''<#'' in quelle) =0 order by art,sortnr ,name;" }, - {"etl_step":"unload_sichten_sachgeb","prop_name":"select_stmt", "prop_value":"SELECT A.sichtart,A.sachgebiete_id FROM sachgeb_sichtarten A where A.sichtart in (select distinct S.art from sichten S where (S.systeminfoid::varchar(255)= ''$SYSTEMINFO_ID'' or S.name_intern=''$NAME_INTERN'')) order by 1,2;" }, + {"etl_step":"unload_sichten_ges","prop_name":"msg", "prop_value":"Entlade Sichten" }, + {"etl_step":"unload_sichtentab","prop_name":"select_stmt", "prop_value":"SELECT S.systeminfoid,S.art,S.type,S.name_intern,S.name,S.sortnr,S.quelle,S.standbutton,S.aktiv FROM sichten S where S.tid in ( $SICHTEN_TID ) order by art,sortnr ,name;" }, + {"etl_step":"unload_sichten_sachgeb","prop_name":"select_stmt", "prop_value":"SELECT A.sichtart,A.sachgebiete_id FROM sachgeb_sichtarten A where A.sichtart in (select distinct S.art from sichten S where S.tid in ( $SICHTEN_TID )) order by 1,2;" }, {"etl_step":"unload_sos_gewichtung_ges","prop_name":"msg", "prop_value":"Entlade Gewichtungen Komponente $SYSTEMINFO_ID" }, {"etl_step":"unload_sos_gewichtung","prop_name":"select_stmt", "prop_value":" SELECT art, ch35_ang_abschluss, fach_nr, kz_fach, text, faktor FROM sos_gewichtung where ch35_ang_abschluss in (''B5'',''B6'',''B7'',''B8'',''M3'',''M4'',''M7'',''M8'') and art=''vzae'' order by 1,2,3,4,5 ;" }, @@ -233,9 +227,9 @@ {"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_resultset_tab","prop_name":"select_stmt", "prop_value":"SELECT R.* from rpta_resultset R where R.tid in (select L.resultset_id from rpta_column_layout L where L.tid in ( $RPTA_COLUMN_LAYOUT_TID )) order by 1;" }, + {"etl_step":"unload_rpta_column_layout_tab","prop_name":"select_stmt", "prop_value":"SELECT L.*,R.uniquename as resultset_uniquename from rpta_column_layout L, rpta_resultset R where R.tid=L.resultset_id and L.tid in ( $RPTA_COLUMN_LAYOUT_TID ) order by 1;" }, + {"etl_step":"unload_rpta_column_tab","prop_name":"select_stmt", "prop_value":"select * from rpta_column where tid in (select column_id from rpta_column2layout L where L.layout_id in ( $RPTA_COLUMN_LAYOUT_TID ) ) order by 1;" }, {"etl_step":"unload_rpta_column2layout_tab","prop_name":"select_stmt", "prop_value":"select L.tid, L.column_id, L.layout_id, @@ -245,7 +239,7 @@ 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;" }, + L.description from rpta_column2layout L left outer join rpta_format_code F on (F.tid=L.format_code_id) where L.layout_id in ( $RPTA_COLUMN_LAYOUT_TID ) order by 1;" }, {"etl_step":"create_tmp_rpta_column_layout","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/create_load_etl_rpta_column_layout.sql" }, @@ -280,9 +274,7 @@ <#assign testfaelle = [ {"testcase":"test_sx_select_mask","assertion":1, "sql":"select count(*) from etl_job where uniquename='sx_select_mask'" }, {"testcase":"test_sx_insert_mask","assertion":1, "sql":"select count(*) from etl_job where uniquename='sx_insert_mask'" }, - {"testcase":"test_sx_insert_mask_params","assertion":3, "sql":"select count(*) from etl_job_param P, etl_job J where J.tid=P.etl_job_id and J.uniquename='sx_insert_mask'" }, - {"testcase":"test_sx_insert_mask_steps","assertion":18, "sql":"select count(*) from etl_step S, etl_step_relation R, etl_job J where J.tid=R.job_id and S.tid=R.step_id and J.uniquename='sx_insert_mask'" }, - {"testcase":"test_sx_select_mask_steps","assertion":10, "sql":"select count(*) from etl_step S, etl_step_relation R, etl_job J where J.tid=R.job_id and S.tid=R.step_id and J.uniquename='sx_select_mask'" } + {"testcase":"test_sx_insert_mask_params","assertion":3, "sql":"select count(*) from etl_job_param P, etl_job J where J.tid=P.etl_job_id and J.uniquename='sx_insert_mask'" } ] /> diff --git a/src-modules/module/etl/schluesseltabellen/masken_fuellen.sql b/src-modules/module/etl/schluesseltabellen/masken_fuellen.sql new file mode 100644 index 0000000..f876cd9 --- /dev/null +++ b/src-modules/module/etl/schluesseltabellen/masken_fuellen.sql @@ -0,0 +1,106 @@ +--Freemarker Template + +--used in etl-job sx_insert_mask +--zuerst löschen: +delete from sachgeb_maske_bez where maskeninfo_id in (select tid from tmp_maskeninfo); +delete from maske_system_bez where maskeninfo_id in (select tid from tmp_maskeninfo); +delete from felderinfo where tid in (select B.felderinfo_id from tmp_maskeninfo M, masken_felder_bez B where M.tid=B.maskeninfo_id); +delete from masken_felder_bez where maskeninfo_id in (select tid from tmp_maskeninfo); +delete from maskeninfo where tid in (select tid from tmp_maskeninfo); +--dann einfügen: + +insert into maskeninfo(tid, + name, + select_stmt, + xil_proplist, + chart_xtitel, + chart_ytitel, + erlaeuterung, + cleanup_stmt, + default_file, + frontend, + breite, + hoehe, + ampel, + hilfe, + hinweis) + select + tid, + name, + select_stmt, + xil_proplist, + chart_xtitel, + chart_ytitel, + erlaeuterung, + cleanup_stmt, + default_file, + frontend, + breite, + hoehe, + ampel, + hilfe, + hinweis +FROM tmp_maskeninfo + ; + +insert into maske_system_bez(maskeninfo_id, + systeminfo_id ) + SELECT maskeninfo_id, + systeminfo_id +FROM tmp_maske_system_bez + ; +insert into sachgeb_maske_bez(sachgebiete_id, + maskeninfo_id) + SELECT sachgebiete_id, + maskeninfo_id +FROM tmp_sachgeb_maske_bez + + ; +insert into masken_felder_bez(maskeninfo_id, + felderinfo_id) + SELECT maskeninfo_id, + felderinfo_id +FROM tmp_masken_felder_bez + ; +insert into felderinfo( +tid, + name, + nummer, + x, + y, + buttonbreite, + feldbreite, + zeilenanzahl, + typ, + laenge, + obligatorisch, + art, + relation, + attribut, + defaultwert) + select +tid, + name, + nummer, + x, + y, + buttonbreite, + feldbreite, + zeilenanzahl, + typ, + laenge, + obligatorisch, + art, + relation, + attribut, + defaultwert +FROM tmp_felderinfo; + +<#if SQLdialect='Postgres'> +drop table if exists tmp_maskeninfo; +drop table if exists tmp_felderinfo; +drop table if exists tmp_masken_felder_bez; +drop table if exists tmp_sachgeb_maske_bez; +drop table if exists tmp_maske_system_bez; + + diff --git a/src-modules/module/etl/schluesseltabellen/themenbaum_fuellen.sql b/src-modules/module/etl/schluesseltabellen/themenbaum_fuellen.sql index 7cbdb11..80c61b1 100644 --- a/src-modules/module/etl/schluesseltabellen/themenbaum_fuellen.sql +++ b/src-modules/module/etl/schluesseltabellen/themenbaum_fuellen.sql @@ -6,12 +6,27 @@ select sp_update_sequence('themenbaum'); update tmp_etl_themenbaum set parent=(select min(tid) from themenbaum where name=tmp_etl_themenbaum.parent_name); ---existiert bereits? +--Gültigkeit etc. updaten: +update themenbaum set (gueltig_seit,gueltig_bis,erlaeuterung,sort,css_class) +=(select T.gueltig_seit,T.gueltig_bis,T.erlaeuterung,T.sort,T.css_class +from tmp_etl_themenbaum T +where T.maskeninfo_id=themenbaum.maskeninfo_id) +where maskeninfo_id in (select T2.maskeninfo_id from tmp_etl_themenbaum T2); + + +--Masken-Knoten existiert bereits? delete from tmp_etl_themenbaum where exists(select T.tid from themenbaum T where T.maskeninfo_id=tmp_etl_themenbaum.maskeninfo_id and T.parent=tmp_etl_themenbaum.parent); +--Themenbaum-Knoten existiert bereits? +delete from tmp_etl_themenbaum +where exists(select T.tid +from themenbaum T where T.maskeninfo_id is null +and tmp_etl_themenbaum.maskeninfo_id is null +and T.name=tmp_etl_themenbaum.name); + --dann einfügen: insert into themenbaum (name,maskeninfo_id,parent,gueltig_seit,gueltig_bis) diff --git a/src-modules/module/etl/schluesseltabellen/trans_rpta_column_layout.sql b/src-modules/module/etl/schluesseltabellen/trans_rpta_column_layout.sql index 715e057..a7008f1 100644 --- a/src-modules/module/etl/schluesseltabellen/trans_rpta_column_layout.sql +++ b/src-modules/module/etl/schluesseltabellen/trans_rpta_column_layout.sql @@ -4,7 +4,7 @@ <#include "RPTA-Makros"/> - + select uniquename, caption, resultset_uniquename as rpta_resultset, @@ -37,4 +37,286 @@ and T.tid=C.column_type -<@rpta_column_layout_fuellen /> +<@rpta_column_layout_fuellen_multi /> +drop TABLE if exists tmp_rpta_column; +drop TABLE if exists tmp_rpta_column_layout; +drop TABLE if exists tmp_etl_rpta_column_layout; + +<#macro rpta_column_layout_fuellen_multi> +CREATE temp TABLE tmp_rpta_column +( + uniquename varchar(255) NOT NULL, + caption varchar(255), + caption_in_ergebnistabelle varchar(255), + srcfieldname varchar(255), + targetfieldname varchar(255), + column_type integer, + col_function text, + is_visible smallint, + visible_size smallint, + is_aggregate smallint, + resultset_id integer, + sortnr integer, + description TEXT, + description_in_ergebnistabelle TEXT, + format_code_uniquename varchar(255), + format_code_id integer +); + +CREATE temp TABLE tmp_rpta_column_layout +( + uniquename varchar(255) NOT NULL, + caption varchar(255), + resultset_id integer, + whereclause text, + sortclause text, + description text, + is_virtual smallint default 1 +); +<#foreach rpta_column_layout in rpta_column_layouts> + +delete from tmp_rpta_column_layout; +delete from tmp_rpta_column; + + +insert into tmp_rpta_column_layout( +resultset_id, +uniquename, +caption, +whereclause, +<#if rpta_column_layout.sortclause?has_content> +sortclause, + +<#if rpta_column_layout.is_virtual?has_content> + is_virtual, + + description +) +select tid, +'${rpta_column_layout.uniquename}', +'${rpta_column_layout.caption}', +'${rpta_column_layout.whereclause}', +<#if rpta_column_layout.sortclause?has_content> +'${rpta_column_layout.sortclause}', + +<#if rpta_column_layout.is_virtual?has_content> +'${rpta_column_layout.is_virtual}', + +'${rpta_column_layout.description}' +FROM rpta_resultset +where uniquename='${rpta_column_layout.rpta_resultset}'; + + +<#assign sortnr=0 /> +<#foreach column in rpta_columns> +<#assign sortnr=sortnr +1 /> + +INSERT INTO tmp_rpta_column +(resultset_id, + uniquename, + caption, + caption_in_ergebnistabelle, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_visible, + visible_size, + is_aggregate, + sortnr, + description, + description_in_ergebnistabelle, + format_code_uniquename + ) +select R.tid, +'${column.uniquename}', +<#if column.caption?exists> +'${column.caption}', +<#else> +'${column.caption_der_spalte}', + +<#if column.caption_in_ergebnistabelle?exists> +'${column.caption_in_ergebnistabelle}', +<#else> +'${column.caption}', + +'${column.srcfieldname}', +<#if !column.targetfieldname?exists || column.targetfieldname=="">'${column.srcfieldname}' <#else>'${column.targetfieldname}' , +T.tid as column_type, +<#if column.col_function?exists>'${column.col_function}'<#else>null::varchar , +${column.is_visible}, +${column.visible_size}, +${column.is_aggregate}, +${sortnr*10}, +<#if column.description?exists>'${column.description}'<#elseif column.description_der_spalte?exists>'${column.description_der_spalte}'<#else>null::varchar , +<#if column.description_in_ergebnistabelle?exists>'${column.description_in_ergebnistabelle}'<#elseif column.description?exists>'${column.description}'<#else>null::varchar , +<#if column.format_code?exists>'${column.format_code}'<#else>null::varchar +FROM rpta_resultset R, rpta_column_type T +where R.uniquename='${rpta_column_layout.rpta_resultset}' +and T.uniquename='${column.column_type}'; + + + + +update tmp_rpta_column set format_code_id=C.tid +from rpta_format_code C +where C.uniquename=tmp_rpta_column.format_code_uniquename +and format_code_uniquename is not null; + + +select * into temp tmp_rpta_column2layout2 +from rpta_column2layout +where layout_id in (select L.tid +from rpta_column_layout L,rpta_resultset R +where R.tid=L.resultset_id +and R.uniquename='${rpta_column_layout.rpta_resultset}' +and L.uniquename='${rpta_column_layout.uniquename}' +) +; + +select uniquename into temp tmp_rpta_column_layout_target +from rpta_column_layout +where resultset_id in (select tid +FROM rpta_resultset +where uniquename='${rpta_column_layout.rpta_resultset}') +and resultset_id in (select tid +FROM rpta_resultset +where uniquename='${rpta_column_layout.rpta_resultset}') +; +--falls neu +insert into rpta_column_layout +(uniquename, + caption, + resultset_id, + whereclause, + sortclause, + description, + is_virtual) + select uniquename, + caption, + resultset_id, + whereclause, + <#if rpta_column_layout.sortclause?has_content> + sortclause, + <#else> + null::text as sortclause, + + description, + is_virtual +FROM tmp_rpta_column_layout T +where not exists (select T2.uniquename from tmp_rpta_column_layout_target T2 +where T2.uniquename=T.uniquename); + +--falls geändert, uniquename muss bleiben +update rpta_column_layout +set (caption, resultset_id, whereclause,sortclause, description, is_virtual) += ( select distinct caption, resultset_id, + whereclause, + <#if rpta_column_layout.sortclause?has_content> + sortclause, + <#else> + null::text as sortclause, + + description, + is_virtual +FROM tmp_rpta_column_layout T +where T.uniquename=rpta_column_layout.uniquename) +where rpta_column_layout.uniquename in (select uniquename from tmp_rpta_column_layout); + +drop table tmp_rpta_column_layout_target; + +delete from rpta_column2layout +where layout_id in (select L.tid +from rpta_column_layout L,rpta_resultset R +where R.tid=L.resultset_id +and R.uniquename='${rpta_column_layout.rpta_resultset}' +and L.uniquename='${rpta_column_layout.uniquename}' +) +; + +select * into temp tmp_rpta_column2 +from tmp_rpta_column T +where (resultset_id,uniquename) not in +(select resultset_id,uniquename from rpta_column); + +INSERT INTO rpta_column +(resultset_id, + uniquename, + caption, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_aggregate, + description, + custom + ) + select +resultset_id, + uniquename, + caption, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_aggregate, + description, + 0 as custom +from tmp_rpta_column2; + +--evtl. neuen Satz einfügen, dann alle updaten + +update rpta_column set ( caption, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_aggregate, + description) + = (select distinct caption, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_aggregate, + description + from tmp_rpta_column T + where T.resultset_id=rpta_column.resultset_id + and T.uniquename=rpta_column.uniquename) + where custom=0 + and (resultset_id,uniquename) in +(select T.resultset_id,T.uniquename +from tmp_rpta_column T) +; + +drop table tmp_rpta_column2; + +insert into rpta_column2layout(column_id, + layout_id, + sortnr, + is_visible, + visible_size, + caption, + description, + format_code_id) +select C.tid as column_id, + L.tid as layout_id, + T.sortnr, + T.is_visible, + T.visible_size, + T.caption_in_ergebnistabelle, + T.description_in_ergebnistabelle, + T.format_code_id +FROM rpta_column C, rpta_column_layout L, tmp_rpta_column T +where C.uniquename=T.uniquename +and C.resultset_id=T.resultset_id +and L.uniquename='${rpta_column_layout.uniquename}' +and L.resultset_id=T.resultset_id + ; +drop TABLE tmp_rpta_column2layout2; + + + +drop table tmp_rpta_column; + + diff --git a/superx/edit/etl/etl_manager.jsp b/superx/edit/etl/etl_manager.jsp index 50860e8..465e61e 100644 --- a/superx/edit/etl/etl_manager.jsp +++ b/superx/edit/etl/etl_manager.jsp @@ -32,21 +32,22 @@ var restApiPath="<%=restApiPath %>"; function getTabMenu(srctype,caption,i,jobExportUniquename,jobImportUniquename,maskeninfo_tid,felderinfo_tid,paramname,jobParamName) { -var zs=paramname+": "; -// +var zs=""; zs+=" "; zs+=" "; -zs+=" "; -zs+=""; if(srctype=="load") { +zs+=paramname+": "; +zs+=" "; +zs+=""; document.getElementById("MaskHeader").innerHTML=caption+"-Quellcode exportieren"; zs+=""; //zs+=""; zs+="\"Quellcode"; zs+="\"Quellcode"; +zs+="\"Schlüsselfelder"; @@ -56,18 +57,18 @@ zs+=""; //zs+=""; -zs+="\"Quellcode"; - +zs+="\"Quellcode"; +//,document.getElementById('"+paramname+"').value //document.getElementById("maskentid_for_upload").style.visibility="visible"; //document.getElementById("button_for_upload").style.visibility="visible"; //document.getElementById("MaskSubHeader").innerHTML="Maske TID="+tid; //document.getElementById("MaskSubHeader").innerHTML="TID="+" "; } -zs+="\"Schlüsselfelder"; document.getElementById("MaskSubHeader").innerHTML=zs; } @@ -100,21 +101,14 @@ function downloadMaskSrc(jobUniquename,jobParamName,jobParamValue) window.open("../../"+restApiPath+"/jobetlxml/get/"+jobUniquename+"/"+jobParamName+"/download/"+jobParamValue,"_blank"); } -function saveEtlXmlSrc(jobParamName,jobParamValue) +function saveEtlXmlSrc(jobParamName) { document.forms["saveEtlXml"].elements["src"].value=document.getElementById("Inhalt").value; -if(document.forms["saveEtlXml"].elements["src"].value=="" || jobParamValue=="") -{ -alert("Bitte setzen Sie passenden XML-Quellcode ins Feld Inhalt"); -return false; -} -else -{ + document.forms["saveEtlXml"].elements["jobParamName"].value=jobParamName; -document.forms["saveEtlXml"].elements["jobParamValue"].value=jobParamValue; +//document.forms["saveEtlXml"].elements["jobParamValue"].value=jobParamValue; document.forms["saveEtlXml"].submit(); } -} function getComponentMenu(systeminfo_id, componentName,componentUniquename,componentVersion) { document.getElementById("MaskHeader").innerHTML="Komponente "+ componentName+"
Version: "+componentVersion;