From 98678b272d38dc0e808bd357e9e57cde9f2bb83e Mon Sep 17 00:00:00 2001 From: Daniel Quathamer Date: Sat, 1 Jul 2023 12:21:30 +0200 Subject: [PATCH] ETL kompatibel zu kern 5.0 #1 --- .classpath | 12 + .project | 17 + build.xml | 15 +- .../module/etl/bin/etl_sx_select_mask.x | 1 + src-modules/module/etl/conf/etl.xml | 283 ++-- .../module/etl/conf/etl_step_fuellen.xsl | 1190 ++++++++++------- .../etl/conf/etl_step_unload_fuellen.xsl | 298 +++++ src-modules/module/etl/conf/includes.txt | 2 +- .../schluesseltabellen/etl_step_fuellen.sql | 57 +- .../etl/schluesseltabellen/fm_templates.unl | 3 - src/de/superx/etl/util/GetOptsBackport.java | 220 +++ src/de/superx/sxrest/MaskXml.java | 2 +- .../conf/edustore/db/bin/SQL_ENV_etl.sam | 16 + superx/WEB-INF/lib/superx-etl.jar | Bin 0 -> 82183 bytes superx/edit/etl/etl_manager.jsp | 12 +- superx/edit/etl/systeminfo_list.inc | 1 - 16 files changed, 1414 insertions(+), 715 deletions(-) create mode 100644 .classpath create mode 100644 .project create mode 100644 src-modules/module/etl/conf/etl_step_unload_fuellen.xsl create mode 100644 src/de/superx/etl/util/GetOptsBackport.java create mode 100644 superx/WEB-INF/conf/edustore/db/bin/SQL_ENV_etl.sam create mode 100644 superx/WEB-INF/lib/superx-etl.jar diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..cdbd67d --- /dev/null +++ b/.classpath @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..1112c94 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + etl + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/build.xml b/build.xml index 9e6f510..0b2e8b6 100644 --- a/build.xml +++ b/build.xml @@ -13,7 +13,7 @@ ant -DWEBAPP=$WEBAPP distEtl ant -DWEBAPP=$WEBAPP cleanBuildPath --> - + @@ -75,6 +75,7 @@ ant -DWEBAPP=$WEBAPP cleanBuildPath + @@ -98,6 +99,12 @@ ant -DWEBAPP=$WEBAPP cleanBuildPath + + + + + + @@ -113,11 +120,11 @@ ant -DWEBAPP=$WEBAPP cleanBuildPath - + - + - + diff --git a/src-modules/module/etl/bin/etl_sx_select_mask.x b/src-modules/module/etl/bin/etl_sx_select_mask.x index c4d9c10..0712929 100755 --- a/src-modules/module/etl/bin/etl_sx_select_mask.x +++ b/src-modules/module/etl/bin/etl_sx_select_mask.x @@ -38,6 +38,7 @@ CP=".:$JDBC_CLASSPATH" CMD="java $JAVA_OPTS -cp $CP de.superx.etl.bin.EtlJobExecutor -dbproperties:$DB_PROPERTIES -job:sx_select_mask -outfile:$outfile -params:TID=$TID" +echo $CMD $CMD diff --git a/src-modules/module/etl/conf/etl.xml b/src-modules/module/etl/conf/etl.xml index 61448c1..2d85cd1 100644 --- a/src-modules/module/etl/conf/etl.xml +++ b/src-modules/module/etl/conf/etl.xml @@ -1,6 +1,6 @@ - @@ -9,200 +9,34 @@ system="Laderoutinen" thema="Laderoutinen" thema_parent="Abfragen"> rightname="CS_BIA_STANDARDREPORTS_ADMIN[ETL]" /> - - Schlüsseltabelle für Ladeschritte +
+ Schlüsseltabelle für Metadaten Ladejobs - - - - - 1=Gruppierung, 2=Loadtable,3=nativeaction,4=loadmask,5=select - - 1=ja, d.h. von der Hochschule angepaßt, 0=nein, d.h. Auslieferung der Software + + + + - - -superx -superx -etl_step -tid -1 -etl_step_pk - - - - - - - - - -
- - - - - Schlüsseltabelle für Arten von Ladeschritten, z.B. loadtable, nativeaction,unload - - - - - - - - - -superx -superx -etl_step_type -tid -1 -etl_step_type_pk - - - - - -
- - - Schlüsseltabelle für Parameter für Arten von Ladeschritten - - - - - - - - - - - -superx -superx -etl_step_type_param -tid -1 -etl_step_type_param_pk - - - - - -
- - - Schlüsseltabelle für Eigenschaften von Ladeschritten - - - - - - - - - -superx -superx -etl_step_property -tid -1 -etl_step_property_pk - - - - - -
- - - Schlüsseltabelle für Beziehungen zwischen Ladeschritten, und Ausführungssteuerung - - - - - - - - - 1=ja, d.h. von der Hochschule angepaßt, 0=nein, d.h. Auslieferung der Software - - - -superx -superx -etl_step_relation -tid -1 -etl_step_relation_pk - - - - - -
- - - Schlüsseltabelle für Ladejobs - - - - - - - 1=ja, d.h. von der Hochschule angepaßt, 0=nein, d.h. Auslieferung der Software - - - -superx -superx -etl_job -tid -1 -etl_job_pk - - - - - - - - -
- - Schlüsseltabelle für Parameter für Ladejobs - - - - - - - - - - - -superx -superx -etl_job_param -tid -1 -etl_job_param_pk - - - - - + + + + superx + superx + etl_job_metadata + tid + 1 + etl_job_metadata_pk + + + + +
@@ -261,7 +95,62 @@ parent="Laderoutinen">Abfragen zur Administration
- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -303,13 +192,12 @@ version integer + - - + - @@ -366,7 +254,7 @@ mode="update_insert_delete_copy"> - + @@ -430,4 +318,3 @@ mode="full">
- diff --git a/src-modules/module/etl/conf/etl_step_fuellen.xsl b/src-modules/module/etl/conf/etl_step_fuellen.xsl index 0cb4ecb..7377736 100644 --- a/src-modules/module/etl/conf/etl_step_fuellen.xsl +++ b/src-modules/module/etl/conf/etl_step_fuellen.xsl @@ -11,6 +11,8 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> ' +" +'' + + + + @@ -116,6 +124,467 @@ select sp_table_exists('etl_step') from xdummy; + + ]]> + + + + + + + + + + + + + + + ]]> + + + ]]> + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + ]]> + + + + + + +<@ETL_STEPS_FUELLEN /> + + + +]]> + + + + + + + + + + + + + + + +", "uniquename":" +", "name":" +", "type":" + +", "parent":" + + + +, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +", "prop_name":" +msg", "prop_value":" + + + + + + + +", "prop_name":" +select_stmt", "prop_value":" + + + +", "prop_name":" +dbconnection", "prop_value":" + + + + + + +", "prop_name":" +dbconnection", "prop_value":" + + + +", "prop_name":" +sqlVarDbconnection", "prop_value":" + + + +", "prop_name":"PATH_TO_INPUTFILE", "prop_value":" + + + + + +", "prop_name":"target_table", "prop_value":" + + + + +", "prop_name":"path_to_inputfile", "prop_value":" + + + +", "prop_name":"truncateTargetTable", "prop_value":" + + + +", "prop_name":"format", "prop_value":" + + + + + + + + +", "prop_name":" +dbconnection", "prop_value":" + + + +", "prop_name":" +sqlVarDbconnection", "prop_value":" + + + +", "prop_name":"select_stmt", "prop_value":" + + + + +", "prop_name":"outfile", "prop_value":" + + + +", "prop_name":"format", "prop_value":" + + + + + + + + + +, + + + + + + + + + + + + + + + + + +<#assign etl_job_params = [ + {"etl_job":"]]> + ","param_name":" + + + + + ","param_name":" + + + + +]]> + + + + + + +Load + + +Transformation + + +Aggregation + + +Test + + +Standdatum + + + + + + + + + + + + + + + DOSQL + + + + DOQUERY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -133,65 +602,22 @@ select sp_table_exists('etl_step') from xdummy; + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - + @@ -208,78 +634,50 @@ select sp_table_exists('etl_step') from xdummy; -<#assign etl_step_properties = [ - - -]]> - - - - - - - - - - - - - - - - - - - - - - - - + ]]> + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + +]]> + + + + + + + - - - + + - + - + + + + + + + + + + + + + + + - @@ -295,18 +693,19 @@ select sp_table_exists('etl_step') from xdummy; ] /> ]]> - - - - + + + + + + + + + + - - - - - - - @@ -352,7 +751,7 @@ select sp_table_exists('etl_step') from xdummy; - + @@ -399,6 +798,12 @@ select sp_table_exists('etl_step') from xdummy; +]]> + + + + - + @@ -455,340 +860,35 @@ select sp_table_exists('etl_step') from xdummy; - - - - - - - - - - - - - - - - - - - - - - - -]]> - - - - - - -<@ETL_STEPS_FUELLEN /> - - - -]]> - - - - - - - - - - - - - - - -", "uniquename":" -", "name":" -", "type":" - -", "parent":" - - - -, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -", "prop_name":" -msg", "prop_value":" - - - - - - - -", "prop_name":" -select_stmt", "prop_value":" - - - - - -", "prop_name":"PATH_TO_INPUTFILE", "prop_value":" - - - - - -", "prop_name":"target_table", "prop_value":" - - - - -", "prop_name":"path_to_inputfile", "prop_value":" - - - -", "prop_name":"truncateTargetTable", "prop_value":" - - - -", "prop_name":"format", "prop_value":" - - + + + + + + - - - - -, - - + - + - - - - - - - - - - - - -<#assign etl_job_params = [ - {"etl_job":"]]> - ","param_name":" - - - - - ","param_name":" - - + + + + + + - - -<#assign etl_steps = [ -]]> - + - - - - -Load - - -Transformation - - -Aggregation - - -Test - - -Standdatum - - - +]]> - - - - - - - - - DOSQL - - - - DOQUERY - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -886,28 +986,71 @@ select sp_table_exists('etl_step') from xdummy; + + + - + - + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + @@ -1324,4 +1467,145 @@ select sp_table_exists('etl_step') from xdummy; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src-modules/module/etl/conf/etl_step_unload_fuellen.xsl b/src-modules/module/etl/conf/etl_step_unload_fuellen.xsl new file mode 100644 index 0000000..42b1e36 --- /dev/null +++ b/src-modules/module/etl/conf/etl_step_unload_fuellen.xsl @@ -0,0 +1,298 @@ + + + + + + + + + + + + +' + + + + + + +select sp_table_exists('etl_step') from xdummy; + + +select param_val from unload_params where param_id='SOURCESYSTEM' and systeminfo_id=]]> + +select param_val from unload_params where param_id='DATABASE' and systeminfo_id=]]> +]]> + + +select replace(param_val,'''','''''') from unload_params where systeminfo_id=]]> +]]> + + +]]> + + + + + + + + + + + + + + + + +--Unload für sourcesystem= + +--First the steps: +]]> + + + + + + + + + + + +DOQUERY + + +UNLOAD + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + +]]> + + + + + + + + + + + + + + + + + + + + + + + +]]> + + +]]> + + + + + + + + +<@ETL_STEPS_FUELLEN /> + + + +]]> + + + + + + + + + +--Unload properties für sourcesystem= +,database= +,unloadDefaultVersion= + + +" && database==" + + +--then the properties: +]]> + + + + + + + + + + + +", "prop_name":" +", "prop_value":"set search_path to hisinone" + + + + + +", "prop_name":" +", "prop_value": + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +$ +_LOAD_PFAD/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src-modules/module/etl/conf/includes.txt b/src-modules/module/etl/conf/includes.txt index 6abd85a..e3887f0 100644 --- a/src-modules/module/etl/conf/includes.txt +++ b/src-modules/module/etl/conf/includes.txt @@ -1,4 +1,4 @@ doku/etl_modul/etl.html WEB-INF/conf/edustore/db/bin/SQL_ENV_etl.sam -WEB-INF/lib/superx-etl0.2.jar +WEB-INF/lib/superx-etl.jar diff --git a/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql b/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql index 50b8f5a..ce8e9f6 100644 --- a/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql +++ b/src-modules/module/etl/schluesseltabellen/etl_step_fuellen.sql @@ -19,7 +19,6 @@ {"etl_job":"sx_insert_mask","param_name":"TID", "name":"Maskennr.", "param_default":""}, {"etl_job":"sx_insert_mask","param_name":"PATH_TO_INPUTFILE", "name":"Eingabepfad", "param_default":"$SUPERX_DIR/db/masken/$TID.xml"}, {"etl_job":"sx_insert_mask","param_name":"FORMAT", "name":"Format", "param_default":"XML"}, - {"etl_job":"sx_insert_mask","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":"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"} @@ -36,8 +35,6 @@ {"etl_job":"sx_select_mask", "uniquename":"unload_maske_system_bez", "name":"maske_system_bez entladen", "type":"UNLOAD", "parent":"unload_masken_stammdaten"}, {"etl_job":"sx_select_mask", "uniquename":"unload_themenbaum", "name":"themenbaum entladen", "type":"UNLOAD"}, {"etl_job":"sx_select_mask", "uniquename":"unload_sx_mask_style", "name":"sx_mask_style entladen", "type":"UNLOAD"}, - {"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":"upload_maskeninfo", "name":"Maskeninfo hochladen", "type":"LOAD" }, @@ -55,18 +52,6 @@ {"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" }, - - {"etl_job":"sx_insert_mask", "uniquename":"upload_tmp_etl_themenbaum", "name":"tmp_etl_themenbaum hochladen", "type":"LOAD" }, - {"etl_job":"sx_insert_mask", "uniquename":"upload_tmp_etl_stylesheets", "name":"tmp_etl_stylesheets hochladen", "type":"LOAD" }, - {"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":"themenbaum_fuellen", "name":"themenbaum_fuellen", "type":"DOSQL" }, - {"etl_job":"sx_insert_mask", "uniquename":"sx_stylesheets_fuellen", "name":"sx_stylesheets_fuellen", "type":"DOSQL" }, - {"etl_job":"kern_konstanten_update", "uniquename":"kern_konstanten_update", "name":"Kern Konstanten aktualisieren", "type":"DOSQL" } @@ -80,10 +65,8 @@ {"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 T.tid,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 S.tid,S.maskeninfo_id,S.stylesheet_id,S.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 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":"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":"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" }, @@ -114,33 +97,7 @@ {"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" }, - - {"etl_step":"create_tmp_etl_themenbaum","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/create_tmp_etl_themenbaum.sql" }, - {"etl_step":"create_tmp_etl_stylesheets","prop_name":"PATH_TO_INPUTFILE", "prop_value":"$SUPERX_DIR/db/module/etl/schluesseltabellen/create_tmp_etl_stylesheets.sql" }, - {"etl_step":"upload_tmp_etl_themenbaum","prop_name":"target_table", "prop_value":"tmp_etl_themenbaum" }, - {"etl_step":"upload_tmp_etl_themenbaum","prop_name":"format", "prop_value":"xml" }, - {"etl_step":"upload_tmp_etl_themenbaum","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_themenbaum\"]/rs/row" }, - {"etl_step":"upload_tmp_etl_themenbaum","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" }, - - {"etl_step":"upload_tmp_etl_stylesheets","prop_name":"target_table", "prop_value":"tmp_etl_stylesheets" }, - {"etl_step":"upload_tmp_etl_stylesheets","prop_name":"format", "prop_value":"xml" }, - {"etl_step":"upload_tmp_etl_stylesheets","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_sx_stylesheets\"]/rs/row" }, - {"etl_step":"upload_tmp_etl_stylesheets","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" }, - - {"etl_step":"upload_tmp_etl_mask_style","prop_name":"target_table", "prop_value":"tmp_etl_mask_style" }, - {"etl_step":"upload_tmp_etl_mask_style","prop_name":"format", "prop_value":"xml" }, - {"etl_step":"upload_tmp_etl_mask_style","prop_name":"search_path", "prop_value":"/etlAction/unload [@name=\"unload_sx_mask_style\"]/rs/row" }, - {"etl_step":"upload_tmp_etl_mask_style","prop_name":"path_to_inputfile", "prop_value":"$PATH_TO_INPUTFILE" }, - - {"etl_step":"upload_tmp_etl_stylesheet_field","prop_name":"target_table", "prop_value":"tmp_etl_stylesheet_field" }, - {"etl_step":"upload_tmp_etl_stylesheet_field","prop_name":"format", "prop_value":"xml" }, - {"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":"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" } @@ -149,9 +106,9 @@ <#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":4, "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'" }, + {"testcase":"test_sx_insert_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_insert_mask'" }, + {"testcase":"test_sx_select_mask_steps","assertion":8, "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'" } ] /> @@ -390,8 +347,8 @@ FROM tmp_etl_job_param update tmp_etl_step set step_type=(select T.tid from etl_step_type T where T.uniquename=tmp_etl_step.step_type_uniquename); --- select * from tmp_etl_step --- where step_type is null;--_uniquename from tmp_etl_step; +--select * from tmp_etl_step +--where step_type is null;--_uniquename from tmp_etl_step; --vorhandene Steps erkennen: diff --git a/src-modules/module/etl/schluesseltabellen/fm_templates.unl b/src-modules/module/etl/schluesseltabellen/fm_templates.unl index 0073229..205bf7d 100644 --- a/src-modules/module/etl/schluesseltabellen/fm_templates.unl +++ b/src-modules/module/etl/schluesseltabellen/fm_templates.unl @@ -236,9 +236,6 @@ FROM tmp_etl_job_param \ update tmp_etl_step set step_type=(select T.tid from etl_step_type T\ where T.uniquename=tmp_etl_step.step_type_uniquename);\ \ -select * from tmp_etl_step\ -where step_type is null;--_uniquename from tmp_etl_step;\ -\ \ --vorhandene Steps erkennen:\ <#if SQLdialect='Postgres'>\ diff --git a/src/de/superx/etl/util/GetOptsBackport.java b/src/de/superx/etl/util/GetOptsBackport.java new file mode 100644 index 0000000..dea4d8e --- /dev/null +++ b/src/de/superx/etl/util/GetOptsBackport.java @@ -0,0 +1,220 @@ +package de.superx.etl.util; + +/** + * Class to analyze arguments passed to Java class + * Makes ETL compatible to BI 2021.06 and higher + */ +public class GetOptsBackport{ + + public enum Options{ + opt_logger("-logger"), + opt_dbprops("-dbproperties"), + opt_table("-table"), + opt_outFormat("-outFormat"), + opt_outFile("-outfile"), + opt_outfileAttribute("-outfileattribute"), + opt_cancel("-cancel"), + opt_sql("-sqlfile"), + opt_sqlAttribute("-sqlattribute"), + opt_delim("-delim"), + opt_header("-header"), + opt_params("-params"), + opt_param("-param"), + opt_in("-in"), + opt_inFormat("-informat"), + opt_out("-out"), + opt_xsl("-xsl"), + opt_xslPfad("-xslpfad"), + opt_fopxconf("-fopxconf"), + opt_user("-user"), + opt_tid("-tid"), + opt_mandID("-mandantenid"), + opt_locale("-locale"), + opt_simpPars("-simpleParser"), + opt_webinf("-web_inf_pfad"), + opt_module("-module_pfad"), + opt_jobUniqueName("-job_uniquename"), + opt_uploadpath("-path_to_uploadfile"), + opt_method("-method"), + opt_xml("-xml"), + opt_xmlconfig("-xmlconfig"), + opt_db("-database"), + opt_version("-version"), + opt_unl("-unl"), + opt_unlParams("-unload_params"), + opt_jrxml("-jrxml"), + opt_jasper("-jasper"), + opt_jrPrint("-jrprint"), + opt_ignorePagination("-ignore_pagination"), + opt_idescr("-i_descr"), + opt_odescr("-o_descr"), + opt_element("-element"), + opt_function("-function"), + opt_mode("-mode"), + opt_inserts("-inserts"), + opt_encoding("-encoding"), + opt_hsnr("-hsnr"), + opt_noDelete("-nodelete"), + opt_pause("-pause"), + opt_jahr("-jahr"), + opt_datentyp("-datentyp"), + opt_runs("-runs"), + opt_checkval("-checkval"), + opt_url("-url"), + opt_setname("-setname"), + + opt_kernTabellenFreischalten("-kern_tabellen_freischalten"), + opt_noguiVar0("-nogui"), opt_noguiVar1("-no-gui"), opt_noguiVar2("--no-gui"), + opt_job("-job"); + + private String value; + private Options(String value) { + this.value = value; + } + + public String stringValue() { + return value; + } + } + + private static String[] arguments = null; + private GetOptsBackport(){} //Do not instatiate + + /** + * If you pass the arguments you want to analyse to this static helper class + * using setOpts, you can later use the short form of the methods e.g. + * isPresent(String option) without having to pass the arguments again. + * + * @param args + */ + public static void setOpts(String args[]) { + arguments = args; + } + + /** + * checks if the arguments passed before by setOpts contain the given option + * + * @param Options + * option + * @return true if arguments contain the option, i.e. one String which + * starts with the option-String + */ + public static boolean isPresent(Options option){ + if(arguments == null){ + throw new IllegalStateException("must either call setOpts() before or call the long version of this method"); + } + return isPresent(arguments, option); + } + + /** + * checks if the arguments contain the given option + * + * @param args + * @param Options + * option + * @return true if arguments contain the option, i.e. one String which + * starts with the option-String + */ + public static boolean isPresent(String args[], Options option){ + boolean result = false; + + for(int i = 0; i < args.length; i++){ + if (args[i] != null && args[i].toLowerCase().startsWith(option.stringValue())){ + result = true; + } + } + + return result; + } + + /** + * Gets a named option from the arguments passed before with setOps. E.g. + * getOpt("--log") would return the "--log:true" in the arguments + * + * @param Options + * option + * @return String option and value + */ + public static String getOpt(Options option){ + if (arguments == null){ + throw new IllegalStateException("must either call setOpts() before or call the long version of this method"); + } + return getOpt(arguments, option); + } + + /** + * Gets a named option from the arguments. E.g. getOpt("--log") would return + * the "--log:true" in the arguments + * + * @param Options + * option + * @return String option and value + */ + public static String getOpt(String args[], Options option){ + String result = null; + for(int i=0; i < args.length; i++){ + if(args[i].toLowerCase().startsWith(option.stringValue())){ + result = args[i]; + } + } + return result; + } + + /** + * Gets the value of an option from the arguments passed before with setOpts + * if for example, you ask getValue("--log:") and the arguments passed + * before with setOpts contain a String "--log:true") "true" is returned + * + * @param Options + * option + * @return String value of the option + */ + public static String getValue(Options option){ + if (arguments == null){ + throw new IllegalStateException("must either call setOpts() before or call the long version of this method"); + } + return getValue(arguments, option); + } + + /** + * Gets the value of an option, if for example, you ask getValue("--log:") + * and the arguments passed before with setOpts contain a String + * "--log:true") "true" is returned + * + * @param Options + * option + * @return String value of the option + */ + public static String getValue(String args[], Options option) { + String value = null, temp = getOpt(args, option); + int pos = option.stringValue().length(); + if(temp.charAt(pos) == ':') { + pos++; + } + value = temp.substring(pos); + return value; + } + + /** + * Prüft, ob alle notwendigen Optionen angegeben sind. + * + * @param Options[] + * opts, ein Array mit Optionen die überprüft werden sollen + * @return null - alles OK, ansonsten String mit den fehlenden Optionen + */ + public static String isAllRequiredOptionsPresent(Options[] opts){ + String missingOpts = null; + for (Options o : opts){ + if(!isPresent(o)){ + if(missingOpts == null){ + missingOpts = o.stringValue()+", "; + }else{ + missingOpts += o.stringValue()+", "; + } + } + } + return missingOpts; + } + + +} diff --git a/src/de/superx/sxrest/MaskXml.java b/src/de/superx/sxrest/MaskXml.java index 8ebab72..edfe164 100644 --- a/src/de/superx/sxrest/MaskXml.java +++ b/src/de/superx/sxrest/MaskXml.java @@ -55,7 +55,7 @@ public class MaskXml { @GET @Path("/get/{param}") - @Produces(MediaType.APPLICATION_XML) + @Produces(MediaType.TEXT_PLAIN) public String printXml(@PathParam("param") String tid,@Context HttpServletRequest request) { diff --git a/superx/WEB-INF/conf/edustore/db/bin/SQL_ENV_etl.sam b/superx/WEB-INF/conf/edustore/db/bin/SQL_ENV_etl.sam new file mode 100644 index 0000000..19b680e --- /dev/null +++ b/superx/WEB-INF/conf/edustore/db/bin/SQL_ENV_etl.sam @@ -0,0 +1,16 @@ +#Beispielumgebung für das ETL-Modul: + +#SUPERX_MODULE=$SUPERX_DIR/db/module +#SUPERX_ROHDATEN=rohdaten + +ETL_PFAD=$SUPERX_MODULE/etl; export ETL_PFAD +ETL_ERRORDAT=$ETL_PFAD/etl_update.err; export ETL_ERRORDAT +#Hier stehen die Rohdaten (im Unterverzeichnis unl) +ETL_LOAD_PFAD=$ETL_PFAD/$SUPERX_ROHDATEN; export ETL_LOAD_PFAD +ETL_ERRORMAIL=$ERRORMAIL; export ETL_ERRORMAIL +ETL_LOGMAIL=$LOGMAIL; export ETL_LOGMAIL + +PATH=$ETL_PFAD/bin:$PATH +export PATH + + diff --git a/superx/WEB-INF/lib/superx-etl.jar b/superx/WEB-INF/lib/superx-etl.jar new file mode 100644 index 0000000000000000000000000000000000000000..7b9dee466008905259e9b905adc6ea34f22cbe11 GIT binary patch literal 82183 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

(N=5O=bgU%@+Be2he^z#w?!U!n7YcE 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 -