Browse Source

Initialer commit nach Verlagerung zu src-modules

qa_0.6_Release
Daniel Quathamer 3 years ago
parent
commit
167526af38
  1. 4
      build.xml
  2. 0
      src-modules/module/hierhin bitte das Kuerzel Ihres moduls.txt
  3. 10
      src-modules/module/qa/conf/excludes.txt
  4. 2
      src-modules/module/qa/conf/includes.txt
  5. 916
      src-modules/module/qa/conf/qa.xml
  6. 36
      src-modules/module/qa/etl/mask_execution/execute_mask.x
  7. 129
      src-modules/module/qa/etl/mask_execution/execute_masks.sql
  8. 112
      src-modules/module/qa/etl/mask_execution/get_field_params.sql
  9. 41
      src-modules/module/qa/etl/mask_execution/mask_assertion.xsl
  10. 372
      src-modules/module/qa/etl/mask_execution/mask_execution.kjb
  11. 14
      src-modules/module/qa/etl/mask_execution/mask_execution.x
  12. 448
      src-modules/module/qa/etl/mask_execution/mask_executions.kjb
  13. 531
      src-modules/module/qa/etl/mask_execution/prepare_executions.ktr
  14. 4
      src-modules/module/qa/etl/mask_execution/qa_mask_execution.x
  15. BIN
      src-modules/module/qa/etl/testfall_import/qa_importdatei.xlsx
  16. 467
      src-modules/module/qa/etl/testfall_import/testfall_import.kjb
  17. 2857
      src-modules/module/qa/etl/testfall_import/testfall_import.ktr
  18. 127
      src-modules/module/qa/etl/testfall_import/testfall_import.sql
  19. 559
      src-modules/module/qa/etl/testfall_import/testfall_import_xml.kjb
  20. 1132
      src-modules/module/qa/etl/testfall_import/testfall_import_xml.ktr
  21. 4
      src-modules/module/qa/masken/37000_felderinfo.unl
  22. 1
      src-modules/module/qa/masken/37000_maske_system_bez.unl
  23. 4
      src-modules/module/qa/masken/37000_masken_felder_bez.unl
  24. 140
      src-modules/module/qa/masken/37000_maskeninfo.unl
  25. 1
      src-modules/module/qa/masken/37000_sachgeb_maske_bez.unl
  26. 7
      src-modules/module/qa/masken/37020_felderinfo.unl
  27. 1
      src-modules/module/qa/masken/37020_maske_system_bez.unl
  28. 7
      src-modules/module/qa/masken/37020_masken_felder_bez.unl
  29. 151
      src-modules/module/qa/masken/37020_maskeninfo.unl
  30. 1
      src-modules/module/qa/masken/37020_sachgeb_maske_bez.unl
  31. 1
      src-modules/module/qa/masken/37040_felderinfo.unl
  32. 1
      src-modules/module/qa/masken/37040_maske_system_bez.unl
  33. 1
      src-modules/module/qa/masken/37040_masken_felder_bez.unl
  34. 116
      src-modules/module/qa/masken/37040_maskeninfo.unl
  35. 1
      src-modules/module/qa/masken/37040_sachgeb_maske_bez.unl
  36. 17
      src-modules/module/qa/masken/37060_felderinfo.unl
  37. 1
      src-modules/module/qa/masken/37060_maske_system_bez.unl
  38. 9
      src-modules/module/qa/masken/37060_masken_felder_bez.unl
  39. 321
      src-modules/module/qa/masken/37060_maskeninfo.unl
  40. 1
      src-modules/module/qa/masken/37060_sachgeb_maske_bez.unl
  41. 22
      src-modules/module/qa/masken/37080_felderinfo.unl
  42. 1
      src-modules/module/qa/masken/37080_maske_system_bez.unl
  43. 8
      src-modules/module/qa/masken/37080_masken_felder_bez.unl
  44. 8
      src-modules/module/qa/masken/37080_maskeninfo.unl
  45. 1
      src-modules/module/qa/masken/37080_sachgeb_maske_bez.unl
  46. 7
      src-modules/module/qa/masken/37100_felderinfo.unl
  47. 1
      src-modules/module/qa/masken/37100_maske_system_bez.unl
  48. 7
      src-modules/module/qa/masken/37100_masken_felder_bez.unl
  49. 115
      src-modules/module/qa/masken/37100_maskeninfo.unl
  50. 1
      src-modules/module/qa/masken/37100_sachgeb_maske_bez.unl
  51. 208
      src-modules/module/qa/schluesseltabellen/etl_step_fuellen.sql
  52. 7
      src-modules/module/qa/schluesseltabellen/qa_mask_execution_update.sql
  53. 14
      src-modules/module/qa/schluesseltabellen/sachgebiete_fuellen.sql
  54. 3
      src-modules/module/qa/schluesseltabellen/sachgebiete_loeschen.sql
  55. 41
      src-modules/module/qa/schluesseltabellen/sx_jobs_fuellen.sql
  56. 13
      superx/WEB-INF/conf/edustore/db/bin/SQL_ENV_qa.sam
  57. 70
      superx/edit/qa/qa_mask_execution_assert_edit.inc
  58. 58
      superx/edit/qa/qa_mask_execution_felderinfo_edit.inc

4
build.xml

@ -2,10 +2,10 @@
<project name="ModuleCreation" default="all" basedir="."> <project name="ModuleCreation" default="all" basedir=".">
<!--Aufruf mit <!--Aufruf mit
ant -DMODULE_PATH=$COSTAGE_PFAD -DBASE_DIR=. -DWEBAPP=$WEBAPP -DMODULE=meinmodul all ant -DMODULE_PATH=$QA_PFAD -DBASE_DIR=. -DWEBAPP=$WEBAPP -DMODULE=qa all
So erzeugen Sie dann ein SuperX-Paket: So erzeugen Sie dann ein SuperX-Paket:
ant -DMODULE_PATH=$COSTAGE_PFAD -DWEBAPP_DIR=$WEBAPP -DMODULE=meinmodul dist ant -DMODULE_PATH=$QA_PFAD -DWEBAPP_DIR=$WEBAPP -DMODULE=qa dist
--> -->

0
src-modules/module/hierhin bitte das Kuerzel Ihres moduls.txt

10
src-modules/module/qa/conf/excludes.txt

@ -0,0 +1,10 @@
rohdaten/QA_ENV
rohdaten/*.properties
preparation.sql
finalize.sql
rohdaten/*.err
*.log
*.err
rohdaten/unl/*
conf/customize.sql
conf/*.log

2
src-modules/module/qa/conf/includes.txt

@ -0,0 +1,2 @@
doku/qa_modul/qa.html
WEB-INF/conf/edustore/db/bin/SQL_ENV_qa.sam

916
src-modules/module/qa/conf/qa.xml

@ -0,0 +1,916 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE module SYSTEM "../../../conf/superx-module.dtd"> -->
<module name="qa" version="0.5" sachgebiet_id="260"
sachgebiet="Qualitätssicherung" systeminfo_id="260"
system="Qualitätssicherung" thema="Qualitätssicherung" thema_parent="Abfragen">
<database name="superx" version="3.0" system="superx">
<sachgebiete>
<sachgebiet id="261" name="Qualitätssicherung Administr."
rightname="CS_BIA_STANDARDREPORTS_ADMIN[QA]" />
</sachgebiete>
<table name="qa_mask_execution" thema="Qualitätssicherung" typ="Schlüsseltabelle" >
<description>Berichtsausführung </description>
<columns>
<column name="tid" type="SERIAL" size="255" default="" notnull="true" currentlyUsed="true" isKey="true" description="id">
<comment>ID</comment>
</column>
<column name="name" type="varchar" size="255" default="" notnull="true" description="Name">
<comment>Interner Name</comment>
</column>
<column name="userinfo_id" type="INTEGER" size="100" default="" notnull="false" description="Angelegt von">
<comment>Benutzer</comment>
</column>
<column name="maskeninfo_id" type="INTEGER" size="100" default="" notnull="false" description="Maske">
<comment>die ausgeführt werden soll</comment>
</column>
<column name="is_active" type="smallint" size="" default="1" description="Aktiv"
notnull="true">
<comment>Aktiv 0/1</comment>
</column>
<column name="stylesheet_id" type="INTEGER" size="" default="1" description="Styleheet"
notnull="false">
<comment>XSL-Stylesheet bzw. JR</comment>
</column>
<column name="contenttype" type="VARCHAR" size="255" default="" description="Contenttype"
notnull="false" currentlyUsed="false">
<comment>XSL-Stylesheet bzw. JR</comment>
</column>
<column name="output_filename" type="VARCHAR" size="255" default="" description="Ausgabedatei"
notnull="false" currentlyUsed="false">
<comment>Ausgabedatei, wenn leer tmp.Datei</comment>
</column>
<column name="systeminfo_id" type="INTEGER" size="100" default="" notnull="false" description="Komponente">
<comment></comment>
</column>
<column name="uniquename" type="VARCHAR" size="255" default="" description="Schlüssel"
notnull="false" >
<comment></comment>
</column>
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>qa_mask_execution</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_mask_execution1</fld>
</row>
</rs></primaryKeys>
<!-- TODO indices-->
</table>
<table name="qa_mask_field_sel" thema="Qualitätssicherung" typ="Schlüsseltabelle" >
<description>Feldvorbelegung bei Berichtsausführung</description>
<columns>
<column name="tid" type="SERIAL" size="255" default="" notnull="true" currentlyUsed="true" isKey="true" description="id">
<comment>ID</comment>
</column>
<column name="mask_execution_id" type="INTEGER" size="100" default="" notnull="false" description="ID der Berichtsausführung" isKey="true">
<comment>Test-ID</comment>
</column>
<column name="felderinfo_id" type="INTEGER" size="100" default="" notnull="false" description="Feld">
<comment>Feld der Maske</comment>
</column>
<column name="field_value" type="VARCHAR" size="255" default="" notnull="false" description="Feldwert">
<comment>Wert des Feldes</comment>
</column>
<column name="is_active" type="smallint" size="" default="1"
notnull="true">
<comment>Aktiv 0/1</comment>
</column>
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>qa_mask_field_sel</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_mask_field_sel1</fld>
</row>
</rs></primaryKeys>
<!-- TODO indices-->
</table>
<table name="qa_mask_execution_assert" thema="Qualitätssicherung" typ="Schlüsseltabelle" >
<description>Erwartetes Ergebnis nach Berichtsausführung</description>
<columns>
<column name="tid" type="SERIAL" size="255" default="" notnull="true" currentlyUsed="true" isKey="true" description="id">
<comment>ID</comment>
</column>
<column name="mask_execution_id" type="INTEGER" size="100" default="" notnull="false" description="ID der Berichtsausführung" isKey="true">
<comment>Test-ID</comment>
</column>
<!--<column name="search_string" type="VARCHAR" size="255" default="" notnull="false" description="Suchstring">
<comment>Such-Anweisung</comment>
</column>-->
<column name="rownr" type="INTEGER" size="" default="" notnull="false">
<comment>Zeilennummer</comment>
</column>
<column name="colnr" type="INTEGER" size="" default="" notnull="false">
<comment>Spaltennummer</comment>
</column>
<column name="result_value_min" type="FLOAT" size="255" default="" notnull="false" description="Erwartes Ergebnis (min)">
<comment>Untergrenze Ergebniswert</comment>
</column>
<column name="result_value_max" type="FLOAT" size="255" default="" notnull="false" description="Erwartes Ergebnis (max)">
<comment>Obergrenze Ergebniswert</comment>
</column>
<column name="is_active" type="smallint" size="" default="1"
notnull="true">
<comment>Aktiv 0/1</comment>
</column>
<column name="caption" type="VARCHAR" size="255" default="" notnull="false" description="Name des erwarteten Ergebnis" isKey="false">
<comment></comment>
</column>
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>qa_mask_execution_assert</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_mask_execution_assert1</fld>
</row>
</rs></primaryKeys>
<!-- TODO indices-->
</table>
<table name="qa_mask_execution_result" thema="Qualitätssicherung" typ="Ladetabelle" >
<description>Protokoll der Berichtsausführung</description>
<columns>
<column name="tid" type="SERIAL" size="255" default="" notnull="true" currentlyUsed="true" isKey="true" description="id">
<comment>ID</comment>
</column>
<column name="mask_execution_id" type="INTEGER" size="100" default="" notnull="false" description="ID der Berichtsausführung">
<comment></comment>
</column>
<column name="execution_start" type="DATETIME" size="100" default="" notnull="false" description="Beginn der Ausführung">
<comment></comment>
</column>
<column name="execution_end" type="DATETIME" size="100" default="" notnull="false" description="Ende der Ausführung">
<comment></comment>
</column>
<column name="result_code" type="SMALLINT" size="" default="" description="Ausführung erfolgreich" notnull="false">
<comment>0=Erfolg</comment>
</column>
<column name="result_log" type="TEXT" size="" default="" description="Logdatei Ausführung" notnull="false">
<comment></comment>
</column>
<!--
<column name="result_value" type="VARCHAR" size="255" default="" description="Rückgabewert" notnull="false">
<comment></comment>
</column>
<column name="result_rowcount" type="INTEGER" size="" default="" description="Anzahl Zeilen" notnull="false">
<comment></comment>
</column>
<column name="result_errdesc" type="TEXT" size="255" default="" notnull="false" description="Fehlermeldung">
<comment>Stacktrace</comment>
</column>
<column name="result_stream" type="TEXT" size="255" default="" notnull="false" description="Ausgabe">
<comment>CSV oder XML</comment>
</column>
<column name="result_stream_contenttype" type="VARCHAR" size="255" default="" notnull="false" description="Ausgabeformat">
<comment>HTML, Text, CSV oder XML</comment>
</column>
-->
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>qa_mask_execution_result</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_mask_execution_result</fld>
</row>
</rs></primaryKeys>
<!-- TODO indices-->
</table>
<table name="qa_mask_execution_assert_result" thema="Qualitätssicherung" typ="Datentabelle" >
<description>Ergebnis nach Berichtsausführung</description>
<columns>
<column name="tid" type="SERIAL" size="255" default="" notnull="true" currentlyUsed="true" isKey="true" description="id">
<comment>ID</comment>
</column>
<column name="mask_execution_assert_id" type="INTEGER" size="100" default="" notnull="false" description="ID der Planung der Berichtsausführung-Assertion" isKey="false">
<comment>Test-ID</comment>
</column>
<column name="mask_execution_result_id" type="INTEGER" size="100" default="" notnull="false" description="ID der Berichtsausführung-Assertion" isKey="false">
<comment>Test-ID</comment>
</column>
<column name="result_value" type="VARCHAR" size="255" default="" description="Rückgabewert" notnull="false">
<comment></comment>
</column>
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>qa_mask_execution_assert_result</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_mask_execution_assert_result</fld>
</row>
</rs></primaryKeys>
<!-- TODO indices-->
</table>
<!--Tabellenvergleiche -->
<table name="qa_tablecomp_profile" thema="Qualitätssicherung" typ="Schlüsseltabelle" >
<description>Tabellenvergleich Name des Profils</description>
<columns>
<column name="tid" type="SERIAL" size="255" default="" notnull="true" currentlyUsed="true" isKey="true" description="id">
<comment>ID</comment>
</column>
<column name="name" type="varchar" size="255" default="" notnull="true" description="Name">
<comment>Interner Name</comment>
</column>
<column name="uniquename" type="VARCHAR" size="255" default="" description="Schlüssel"
notnull="false" >
<comment></comment>
</column>
<column name="table_1" type="VARCHAR" size="255" default="" description="Tabelle 1"
notnull="true" >
<comment></comment>
</column>
<column name="table_1_caption" type="VARCHAR" size="255" default="" description="Tabelle 1 Beschriftung"
notnull="true" >
<comment></comment>
</column>
<column name="table_2" type="VARCHAR" size="255" default="" description="Tabelle 2"
notnull="true" >
<comment></comment>
</column>
<column name="table_2_caption" type="VARCHAR" size="255" default="" description="Tabelle 2 Beschriftung"
notnull="true" >
<comment></comment>
</column>
<column name="is_active" type="smallint" size="" default="1" description="Aktiv"
notnull="true">
<comment>Aktiv 0/1</comment>
</column>
<column name="systeminfo_id" type="INTEGER" size="100" default="" notnull="false" description="Komponente">
<comment></comment>
</column>
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>qa_tablecomp_profile</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_tablecomp_profile</fld>
</row>
</rs></primaryKeys>
<!-- TODO indices-->
</table>
<table name="qa_tablecomp_aggregation" thema="Qualitätssicherung" typ="Schlüsseltabelle" >
<description>Tabellenvergleich Abgleiche Summen im Rahmen eines Profils</description>
<columns>
<column name="tid" type="SERIAL" size="255" default="" notnull="true" currentlyUsed="true" isKey="true" description="id">
<comment>ID</comment>
</column>
<column name="qa_tablecomp_profile_id" type="INTEGER" size="" default="" description="Profil"
notnull="false">
<comment></comment>
</column>
<column name="name" type="varchar" size="255" default="" notnull="true" description="Name">
<comment>Interner Name</comment>
</column>
<column name="whereclause" type="TEXT" size="255" default="" description="Bedingung"
notnull="false" >
<comment></comment>
</column>
<column name="aggregationfield" type="varchar" size="255" default="" notnull="true" description="Feld der Aggregation">
<comment></comment>
</column>
<column name="aggregationfunction" type="varchar" size="255" default="sum" notnull="true" description="Funktion der Aggregation">
<comment>z.B. sum</comment>
</column>
<column name="is_active" type="smallint" size="" default="1" description="Aktiv"
notnull="true">
<comment>Aktiv 0/1</comment>
</column>
<column name="priority" type="CHAR" size="10" default="" notnull="false" description="Priorität">
<comment></comment>
</column>
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>qa_tablecomp_aggregation</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_tablecomp_aggregation</fld>
</row>
</rs></primaryKeys>
<!-- TODO indices-->
</table>
<table name="qa_tablecomp_field" thema="Qualitätssicherung" typ="Schlüsseltabelle" >
<description>Tabellenvergleich Abgleiche Felder im Rahmen eines Profils</description>
<columns>
<column name="tid" type="SERIAL" size="255" default="" notnull="true" currentlyUsed="true" isKey="true" description="id">
<comment>ID</comment>
</column>
<column name="qa_tablecomp_profile_id" type="INTEGER" size="" default="" description="Profil"
notnull="false">
<comment></comment>
</column>
<column name="name" type="varchar" size="255" default="" notnull="true" description="Name">
<comment>Feldname</comment>
</column>
<column name="priority" type="CHAR" size="10" default="" notnull="false" description="Priorität">
<comment></comment>
</column>
<column name="sortnr" type="SMALLINT" size="10" default="" notnull="false" description="Sortiernummer">
<comment></comment>
</column>
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>qa_tablecomp_field</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_tablecomp_field</fld>
</row>
</rs></primaryKeys>
<!-- TODO indices-->
</table>
<table name="qa_tablecomp_groupby" thema="Qualitätssicherung" typ="Schlüsseltabelle" >
<description>Tabellenvergleich Gruppierungsspalten im Rahmen eines Profils</description>
<columns>
<column name="tid" type="SERIAL" size="255" default="" notnull="true" currentlyUsed="true" isKey="true" description="id">
<comment>ID</comment>
</column>
<column name="qa_tablecomp_profile_id" type="INTEGER" size="" default="" description="Profil"
notnull="false">
<comment></comment>
</column>
<column name="fieldname" type="varchar" size="255" default="" notnull="true" description="Name">
<comment>Interner Name</comment>
</column>
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>qa_tablecomp_groupby</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_tablecomp_groupby</fld>
</row>
</rs></primaryKeys>
<!-- TODO indices-->
</table>
<table name="qa_tablecomp_idcol" thema="Qualitätssicherung" typ="Schlüsseltabelle" >
<description>Tabellenvergleich Identitätsspalten im Rahmen eines Profils</description>
<columns>
<column name="tid" type="SERIAL" size="255" default="" notnull="true" currentlyUsed="true" isKey="true" description="id">
<comment>ID</comment>
</column>
<column name="qa_tablecomp_profile_id" type="INTEGER" size="" default="" description="Profil"
notnull="false">
<comment></comment>
</column>
<column name="fieldname" type="varchar" size="255" default="" notnull="true" description="Name">
<comment>Interner Name</comment>
</column>
</columns>
<primaryKeys>
<rs>
<row>
<fld name='table_cat'>superx</fld>
<fld name='table_schem'>superx</fld>
<fld name='table_name'>qa_tablecomp_idcol</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_tablecomp_idcol</fld>
</row>
</rs></primaryKeys>
<!-- TODO indices-->
</table>
<table name="qa_project" thema="Qualitätssicherung" typ="Schlüsseltabelle">
<columns><column name="tid" type ="SERIAL" size ="10" default ="" notnull ="true" />
<column name="uniquename" type ="VARCHAR" size ="255" default ="" notnull ="false" />
<column name="name" type ="VARCHAR" size ="255" default ="" notnull ="false" />
<column name="systeminfo_id" type ="INTEGER" size ="10" default ="" notnull ="false" />
<column name="sachgebiete_id" type ="INTEGER" size ="10" default ="" notnull ="false" />
<column name="active" type ="SMALLINT" size ="5" default ="" notnull ="false" />
<column name="created_at" type ="DATE" size ="13" default ="" notnull ="false" />
<column name="created_from" type ="INTEGER" size ="10" default ="" notnull ="false" />
</columns>
<indexes></indexes>
<primaryKeys><rs>
<row>
<fld name='table_cat'></fld>
<fld name='table_schem'></fld>
<fld name='table_name'>qa_project</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_project</fld>
</row>
</rs></primaryKeys>
<foreignKeys></foreignKeys>
<importedKeys></importedKeys>
<privileges><rs>
</rs></privileges>
</table>
<table name="qa_resultset" thema="Qualitätssicherung" typ="Schlüsseltabelle">
<columns><column name="tid" type ="SERIAL" size ="10" default ="" notnull ="true" />
<column name="uniquename" type ="VARCHAR" size ="255" default ="" notnull ="false" />
<column name="name" type ="VARCHAR" size ="255" default ="" notnull ="false" />
<column name="systeminfo_id" type ="INTEGER" size ="10" default ="" notnull ="false" />
<column name="fromclause" type ="TEXT" size ="32255" default ="" notnull ="false" />
</columns>
<indexes></indexes>
<primaryKeys><rs>
<row>
<fld name='table_cat'></fld>
<fld name='table_schem'></fld>
<fld name='table_name'>qa_resultset</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_resultset</fld>
</row>
</rs></primaryKeys>
<foreignKeys></foreignKeys>
<importedKeys></importedKeys>
<privileges><rs>
</rs></privileges>
</table>
<table name="qa_resultset_field" thema="Qualitätssicherung" typ="Schlüsseltabelle">
<columns><column name="tid" type ="SERIAL" size ="10" default ="" notnull ="true" />
<column name="uniquename" type ="VARCHAR" size ="255" default ="" notnull ="false" />
<column name="name" type ="VARCHAR" size ="255" default ="" notnull ="false" />
<column name="fieldclause" type ="VARCHAR" size ="255" default ="" notnull ="false" />
<column name="resultset_id" type ="INTEGER" size ="10" default ="" notnull ="false" />
</columns>
<indexes></indexes>
<primaryKeys><rs>
<row>
<fld name='table_cat'></fld>
<fld name='table_schem'></fld>
<fld name='table_name'>qa_resultset_field</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_resultset_field</fld>
</row>
</rs></primaryKeys>
<foreignKeys></foreignKeys>
<importedKeys></importedKeys>
<privileges><rs>
</rs></privileges>
</table>
<table name="qa_dbtest" thema="Qualitätssicherung" typ="Schlüsseltabelle">
<columns><column name="tid" type ="SERIAL" size ="10" default ="" notnull ="true" />
<column name="uniquename" type ="VARCHAR" size ="255" default ="" notnull ="false" />
<column name="name" type ="VARCHAR" size ="255" default ="" notnull ="false" />
<column name="project_id" type ="INTEGER" size ="10" default ="" notnull ="false" />
<column name="resultset_field_id" type ="INTEGER" size ="10" default ="" notnull ="false" />
<column name="whereclause" type ="TEXT" size ="2147483647" default ="" notnull ="false" />
<column name="active" type ="SMALLINT" size ="5" default ="" notnull ="false" />
</columns>
<indexes></indexes>
<primaryKeys><rs>
<row>
<fld name='table_cat'></fld>
<fld name='table_schem'></fld>
<fld name='table_name'>qa_dbtest</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_dbtest</fld>
</row>
</rs></primaryKeys>
<foreignKeys></foreignKeys>
<importedKeys></importedKeys>
<privileges><rs>
</rs></privileges>
</table>
<table name="qa_dbtest_assertion" thema="Qualitätssicherung" typ="Schlüsseltabelle">
<columns><column name="tid" type ="SERIAL" size ="10" default ="" notnull ="true" />
<column name="dbtest_id" type ="INTEGER" size ="10" default ="" notnull ="false" />
<column name="rownr" type ="INTEGER" size ="10" default ="" notnull ="false" />
<column name="def_col_caption" type ="VARCHAR" size ="255" default ="" notnull ="false" />
<column name="def_col_name" type ="VARCHAR" size ="255" default ="" notnull ="false" />
<column name="def_col_value" type ="VARCHAR" size ="255" default ="" notnull ="false" />
</columns>
<indexes></indexes>
<primaryKeys><rs>
<row>
<fld name='table_cat'></fld>
<fld name='table_schem'></fld>
<fld name='table_name'>qa_dbtest_assertion</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>pk_qa_dbtest_assertion</fld>
</row>
</rs></primaryKeys>
<foreignKeys></foreignKeys>
<importedKeys></importedKeys>
<privileges><rs>
</rs></privileges>
</table>
<table name="qa_dbtest_result" thema="Qualitätssicherung" typ="Datentabelle">
<columns>
<column name="dbtest_assertion_id" type ="INTEGER" size ="10" default ="" notnull ="false" />
<column name="execution_start" type ="DATETIME" size ="35" default ="" notnull ="false" />
<column name="execution_end" type ="DATETIME" size ="35" default ="" notnull ="false" />
<column name="result_code" type ="SMALLINT" size ="5" default ="" notnull ="false" />
<column name="result_value" type ="VARCHAR" size ="255" default ="" notnull ="false" />
</columns>
<indexes></indexes>
<foreignKeys></foreignKeys>
<importedKeys></importedKeys>
<privileges><rs>
</rs></privileges>
</table>
<views>
<view name="qa_k_priority" version="0.6">
<description>View PO-Version</description>
<columns><column name="apnr" type ="CHAR" size ="10" default ="" notnull ="true" />
<column name="kurz" type ="CHAR" size ="10" default ="" notnull ="false" />
<column name="druck" type ="CHAR" size ="150" default ="" notnull ="false" />
<column name="sortnr" type ="SMALLINT" size ="150" default ="" notnull ="false" />
</columns>
<sql dbsystem=""><![CDATA[SELECT 'A','A','Sehr wichtig',10 from xdummy
union
SELECT 'B','B','Wichtig',20 from xdummy
union
SELECT 'C','C','Unwichtig',30 from xdummy
union
SELECT 'P','P','Egal',40 from xdummy
]]></sql>
</view>
</views>
<functions>
</functions>
<themen>
<thema name="Administration Qualitätssicherung"
parent="Qualitätssicherung">Abfragen zur Administration</thema>
</themen>
<masken>
<maske tid="37000" name="Masken-Ausführung planen" thema="Administration Qualitätssicherung">
<description>Masken-Ausführung planen</description>
<src>
<path>$QA_PFAD/masken</path>
</src>
</maske>
<maske tid="37020" name="Masken-Ausführung Protokoll" thema="Qualitätssicherung">
<description>Masken-Ausführung</description>
<src>
<path>$QA_PFAD/masken</path>
</src>
</maske>
<maske tid="37040" name="Masken-Ausführung Protokoll (Detail)" thema="">
<description>Masken-Ausführung</description>
<src>
<path>$QA_PFAD/masken</path>
</src>
</maske>
<maske tid="37060" name="Tabellen-Abgleich" thema="Qualitätssicherung">
<description>Masken-Ausführung</description>
<src>
<path>$QA_PFAD/masken</path>
</src>
</maske>
<maske tid="37080" name="Testfälle hochladen" thema="Administration Qualitätssicherung">
<description>Testfälle hochladen</description>
<src>
<path>$QA_PFAD/masken</path>
</src>
</maske>
<maske tid="37100" name="Datenbank-Tests Protokoll" thema="Qualitätssicherung">
<description>Datenbank-Tests Protokoll</description>
<src>
<path>$QA_PFAD/masken</path>
</src>
</maske>
</masken>
<data-integrity>
<!-- qa_mask_execution -->
<relation from="userinfo" to="qa_mask_execution"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="userinfo_id" />
</relation>
<relation from="maskeninfo" to="qa_mask_execution"
delete="FALSE" displayType="select" visibleFields="tid ||'-' || name"
format="%s">
<relation-column from="tid" to="maskeninfo_id" />
</relation>
<relation from="sx_stylesheets" to="qa_mask_execution"
delete="FALSE" displayType="select" visibleFields="filename"
format="%s">
<relation-column from="tid" to="stylesheet_id" />
</relation>
<relation from="systeminfo" to="qa_mask_execution"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="systeminfo_id" />
</relation>
<!-- qa_mask_field_sel -->
<relation from="qa_mask_execution" to="qa_mask_field_sel"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="mask_execution_id" />
</relation>
<relation from="felderinfo" to="qa_mask_field_sel"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="felderinfo_id" />
</relation>
<!-- qa_mask_execution_result -->
<relation from="qa_mask_execution" to="qa_mask_execution_result"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="mask_execution_id" />
</relation>
<!--qa_tablecomp_profile-->
<relation from="systeminfo" to="qa_tablecomp_profile"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="systeminfo_id" />
</relation>
<!-- qa_tablecomp_field -->
<relation from="qa_tablecomp_profile" to="qa_tablecomp_field"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="qa_tablecomp_profile_id" />
</relation>
<relation from="qa_k_priority" to="qa_tablecomp_field"
delete="FALSE" displayType="select" visibleFields="druck"
format="%s">
<relation-column from="apnr" to="priority" />
</relation>
<!-- qa_tablecomp_aggregation -->
<relation from="qa_tablecomp_profile" to="qa_tablecomp_aggregation"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="qa_tablecomp_profile_id" />
</relation>
<relation from="qa_k_priority" to="qa_tablecomp_aggregation"
delete="FALSE" displayType="select" visibleFields="druck"
format="%s">
<relation-column from="apnr" to="priority" />
</relation>
<!-- qa_tablecomp_groupby -->
<relation from="qa_tablecomp_profile" to="qa_tablecomp_groupby"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="qa_tablecomp_profile_id" />
</relation>
<!-- qa_tablecomp_idcol -->
<relation from="qa_tablecomp_profile" to="qa_tablecomp_idcol"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="qa_tablecomp_profile_id" />
</relation>
<!--qa_project-->
<relation from="systeminfo" to="qa_project"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="systeminfo_id" />
</relation>
<relation from="sachgebiete_id" to="qa_project"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="sachgebiete_id_id" />
</relation>
<!--qa_resultset-->
<relation from="systeminfo" to="qa_resultset"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="systeminfo_id" />
</relation>
<!--qa_resultset_field-->
<relation from="qa_resultset" to="qa_resultset_field"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="resultset_id" />
</relation>
<!--qa_dbtest-->
<relation from="qa_project" to="qa_dbtest"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="project_id" />
</relation>
<!--qa_dbtest_assertion-->
<relation from="qa_dbtest" to="qa_dbtest_assertion"
delete="FALSE" displayType="select" visibleFields="name"
format="%s">
<relation-column from="tid" to="dbtest_id" />
</relation>
<!--qa_dbtest_result-->
<relation from="qa_dbtest_assertion" to="qa_dbtest_result"
delete="FALSE" displayType="select" visibleFields="def_col_name"
format="%s">
<relation-column from="tid" to="dbtest_assertion_id" />
</relation>
</data-integrity>
</database>
<!-- ********************* Liste der ETL-Prozesse ************************** -->
<etl>
<etl-step name="Transformation" type="trans">
<action>
<nativeaction sql="" scriptfile="$QA_PFAD/schluesseltabellen/qa_mask_execution_update.sql"
database=""/>
<nativeaction sql="update systeminfo set datum=today() where tid in (260)" scriptfile="" database=""/>
</action>
</etl-step>
</etl>
<install>
<install-step name="Füllen der Modul-Tabellen">
<action error="stop">
<nativeaction sql="" scriptfile="$QA_PFAD/schluesseltabellen/sx_jobs_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$QA_PFAD/schluesseltabellen/sachgebiete_fuellen.sql" database=""/>
</action>
</install-step>
</install>
<upgrade>
<upgrade-step version="1.2">
<action error="stop">
<nativeaction sql="" scriptfile="$QA_PFAD/schluesseltabellen/sx_jobs_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$QA_PFAD/schluesseltabellen/sachgebiete_fuellen.sql" database=""/>
</action>
</upgrade-step>
</upgrade>
<uninstall-step name="Deinstalliere Schlüssel">
<action error="stop">
<nativeaction sql="" scriptfile="$QA_PFAD/schluesseltabellen/sachgebiete_loeschen.sql" database=""/>
</action>
</uninstall-step>
<!-- ********************* Liste der ETL-Prozesse ************************** -->
<dbforms>
<form name="qa_mask_execution_edit"
table="qa_mask_execution"
path="/edit/qa/qa_mask_execution_edit.jsp"
followUp=""
caption="Berichtsausführung verwalten"
orderBy="name"
gotoHt=""
helpfile=""
maxRows="1"
mode="update_insert_delete_copy">
<description>In diesem Formular können Sie Berichtsausführungen verwalten.</description>
<filters>
<filter mandatory="true" type="equals">tid</filter>
</filters>
<field-selection complete="false" />
<customfield name="tid" />
<customfield name="name" visibleSize="50" nullFieldValue="" />
<customfield name="uniquename" visibleSize="50" nullFieldValue="" />
<customfield name="userinfo_id" visibleSize="50" nullFieldValue="" />
<customfield name="maskeninfo_id" visibleSize="80" nullFieldValue="" />
<customfield name="Feld-Vorbelegung" type="include" path="/edit/qa/qa_mask_execution_felderinfo_edit.inc"/>
<customfield name="Erwartetes Ergebnis" type="include" path="/edit/qa/qa_mask_execution_assert_edit.inc"/>
<customfield name="is_active" visibleSize="10" nullFieldValue="" />
<!--<customfield name="stylesheet_id" visibleSize="50" nullFieldValue="" />
<customfield name="contenttype" visibleSize="50" nullFieldValue="" />
<customfield name="output_filename" visibleSize="50" nullFieldValue="" />
-->
<customfield name="systeminfo_id" visibleSize="50" nullFieldValue="" />
</form>
<form name="qa_tablecomp_profile_list"
table="qa_tablecomp_profile"
path="/edit/qa/qa_tablecomp_profile_list.jsp"
followUp=""
caption="Profile verwalten"
orderBy="name"
gotoHt=""
helpfile=""
maxRows="*"
mode="full">
<description>In diesem Formular können Sie Profile verwalten. Im Details-Formular können Sie Tabellen und Felder zuordnen.</description>
<filters>
</filters>
<field-selection complete="false" />
<customfield name="tid" nullFieldValue="" />
<customfield name="name" nullFieldValue="" visibleSize="30" />
<customfield name="uniquename" nullFieldValue="" visibleSize="30" />
<customfield name="is_active" nullFieldValue="" pattern="" visibleSize="10" />
<customfield name="systeminfo_id" nullFieldValue="" pattern="" visibleSize="30" />
<customfield type="link" name="Details" path="/superx/edit/qa/qa_tablecomp_profile_edit.jsp" linkid="tid"/>
</form>
<form name="qa_tablecomp_profile_edit"
table="qa_tablecomp_profile"
path="/edit/qa/qa_tablecomp_profile_edit.jsp"
followUp=""
caption="Profil verwalten"
orderBy="name"
gotoHt=""
helpfile=""
maxRows="1"
mode="full">
<description>In diesem Formular können Sie Profile verwalten. Hier können Sie Tabellen und Felder zuordnen.</description>
<filters>
<filter mandatory="true" type="equals">tid</filter>
</filters>
<field-selection complete="false" />
<customfield name="tid" nullFieldValue="" />
<customfield name="name" nullFieldValue="" visibleSize="30" />
<customfield name="uniquename" nullFieldValue="" visibleSize="30" />
<customfield name="is_active" nullFieldValue="" pattern="" visibleSize="10" />
<customfield name="table_1" nullFieldValue="" pattern="" visibleSize="20" />
<customfield name="table_1_caption" nullFieldValue="" pattern="" visibleSize="30" />
<customfield name="table_2" nullFieldValue="" pattern="" visibleSize="20" />
<customfield name="table_2_caption" nullFieldValue="" pattern="" visibleSize="30" />
<customfield name="systeminfo_id" nullFieldValue="" pattern="" visibleSize="30" />
<customfield name="Gruppierung" type="subform" multipart="false" autoUpdate="false"
maxRows="*" table="qa_tablecomp_groupby" parentField="tid" childField="qa_tablecomp_profile_id"
orderBy="" allowNew="true"
mode="full">
<field-selection complete="false" />
<customfield name="qa_tablecomp_profile_id" type="hidden" overrideValue="tid" />
<customfield name="fieldname" nullFieldValue="" visibleSize="30" />
</customfield>
<customfield name="Eindeutige Datensatz-Erkennung" type="subform" multipart="false" autoUpdate="false"
maxRows="*" table="qa_tablecomp_idcol" parentField="tid" childField="qa_tablecomp_profile_id"
orderBy="" allowNew="true"
mode="full">
<field-selection complete="false" />
<customfield name="qa_tablecomp_profile_id" type="hidden" overrideValue="tid" />
<customfield name="fieldname" nullFieldValue="" visibleSize="30" />
</customfield>
<customfield name="Aggregation" type="subform" multipart="false" autoUpdate="false"
maxRows="*" table="qa_tablecomp_aggregation" parentField="tid" childField="qa_tablecomp_profile_id"
orderBy="" allowNew="true"
mode="full">
<field-selection complete="false" />
<customfield name="qa_tablecomp_profile_id" type="hidden" overrideValue="tid" />
<customfield name="name" nullFieldValue="" visibleSize="30" />
<customfield name="whereclause" nullFieldValue="" visibleSize="100" />
<customfield name="aggregationfield" nullFieldValue="" visibleSize="30" />
<customfield name="aggregationfunction" nullFieldValue="" visibleSize="30" />
<customfield name="is_active" nullFieldValue="" pattern="" visibleSize="10" />
<customfield name="priority" nullFieldValue="" pattern="" visibleSize="10" />
</customfield>
<customfield name="Feldvergleich" type="subform" multipart="false" autoUpdate="false"
maxRows="*" table="qa_tablecomp_field" parentField="tid" childField="qa_tablecomp_profile_id"
orderBy="" allowNew="true"
mode="full">
<field-selection complete="false" />
<customfield name="qa_tablecomp_profile_id" type="hidden" overrideValue="tid" />
<customfield name="name" nullFieldValue="" visibleSize="30" />
<customfield name="priority" nullFieldValue="" pattern="" visibleSize="10" />
<customfield name="sortnr" nullFieldValue="" pattern="" visibleSize="10" />
</customfield>
</form>
</dbforms>
</module>

36
src-modules/module/qa/etl/mask_execution/execute_mask.x

@ -0,0 +1,36 @@
#!/bin/bash
OUTFILE=mask_execution_log.xml
echo "CMDLINE: $1 $2 $3 $4 $5"
cd $WEBAPP/WEB-INF
if [ "$LANG" = "de_DE.utf8" ]
then
ENCODING="UTF-8"
else
ENCODING="ISO-8859-1"
fi
echo "<?xml version=\"1.0\" encoding=\"$ENCODING\" ?>" >$OUTFILE
echo '<rs><row><fld name="execution_start">' >>$OUTFILE
date +'%d.%m.%Y %H:%M:%S' >>$OUTFILE
echo '</fld>' >>$OUTFILE
java -cp "$JDBC_CLASSPATH" $JAVA_OPTS de.superx.bin.ExecuteMask $1 $2 $3 $4 "$5" >tmp.log 2>&1
RESULT_CODE=$?
echo '<fld name="execution_end">' >>$OUTFILE
date +'%d.%m.%Y %H:%M:%S' >>$OUTFILE
echo '</fld>' >>$OUTFILE
echo '<fld name="result_log"><![CDATA[' >>$OUTFILE
cat tmp.log >>$OUTFILE
echo ']]></fld>' >>$OUTFILE
echo '<fld name="result_code">'$RESULT_CODE'</fld>' >>$OUTFILE
echo '</row></rs>' >>$OUTFILE

129
src-modules/module/qa/etl/mask_execution/execute_masks.sql

@ -0,0 +1,129 @@
--freemarker template
<sqlvars>
<sqlvar name="mask_executions" type="hashsequence"><![CDATA[
select tid,userinfo_str ,
stylesheet_str ,
contenttype ,
output_filename ,
name,
' -tid:' || maskeninfo_id || ' -out:tmp.xml -user:' || userinfo_str || ' -logger:$SUPERX_DIR/db/conf/logging.properties' as params1,
'-params:1=1' || trim(field_values) || '&stylesheet=' || stylesheet_str || '&contenttype=text/xml' as params2
from tmp_execution
order by 1;]]>
</sqlvar>
<sqlvar name="mask_execution_asserts" type="hashsequence"><![CDATA[
SELECT tid,
mask_execution_id,
rownr,
colnr,
result_value_min,
result_value_max,
is_active
FROM qa_mask_execution_assert
where mask_execution_id in (select tid from tmp_execution)
and is_active=1
order by 1;
]]>
</sqlvar>
</sqlvars>
<#assign shebang="!" />
<#if SQLdialect='Postgres'>
<#assign shebang="\\!" />
drop table if exists tmp_result_upload;
drop table if exists tmp_result;
</#if>
<#assign type_timestamp="datetime year to second" />
<#if SQLdialect='Postgres'>
<#assign type_timestamp="timestamptz" />
</#if>
<#foreach mask_execution in mask_executions>
select 'Start Ausführung: ${mask_execution.tid} ${mask_execution.name}' from xdummy;
create table tmp_result_upload(
execution_start ${type_timestamp} ,
execution_end ${type_timestamp} ,
result_log TEXT,
result_code SMALLINT
);
create table tmp_result(
mask_execution_assert_id integer,
mask_execution_result_id integer,
execution_start ${type_timestamp} ,
execution_end ${type_timestamp} ,
result_log TEXT,
result_code SMALLINT
);
${shebang} ./execute_mask.x ${mask_execution.params1} "${mask_execution.params2}"
${shebang} SX_CLIENT=jdbc; sx_auto_upload_table.x tmp_result_upload $WEBAPP/WEB-INF/mask_execution_log.xml false xml
insert into tmp_result(execution_start , execution_end, result_log, result_code)
select execution_start , execution_end, result_log, result_code from tmp_result_upload;
insert into qa_mask_execution_result(
mask_execution_id)
values (${mask_execution.tid});
update tmp_result set mask_execution_result_id=(select max(tid) from qa_mask_execution_result);
<#if SQLdialect='Postgres'>
--Postgres Dialekt:
update qa_mask_execution_result set
execution_start =T. execution_start,
execution_end =T.execution_end ,
result_log=T.result_log,
result_code=T.result_code
from tmp_result T
where T.mask_execution_result_id=qa_mask_execution_result.tid;
<#else>
--Informix Dialekt:
update qa_mask_execution_result set (execution_start,
execution_end,
result_code)
= ((select
T.execution_start,
T.execution_end,
T.result_code
from tmp_result T
where T.mask_execution_result_id=qa_mask_execution_result.tid
))
where qa_mask_execution_result.tid =(select T.mask_execution_result_id
from tmp_result T)
;
--BLOB Spalte muss separat geupdated werden:
update qa_mask_execution_result set result_log=(select
T.result_log
from tmp_result T
where T.mask_execution_result_id=qa_mask_execution_result.tid
)
where qa_mask_execution_result.tid = (select T.mask_execution_result_id
from tmp_result T)
;
</#if>
<#foreach mask_execution_assert in mask_execution_asserts>
<#if mask_execution_assert.mask_execution_id==mask_execution.tid>
select 'Start Assertion: ${mask_execution_assert.tid}' from xdummy;
${shebang} sx_transform.x -IN:$WEBAPP/WEB-INF/tmp.xml -XSL:mask_assertion.xsl -OUT:tmp_mask_assertion_result.sql -method:text -param:mask_execution_id=${mask_execution_assert.mask_execution_id},mask_execution_assert_id=${mask_execution_assert.tid},rownr=${mask_execution_assert.rownr},colnr=${mask_execution_assert.colnr}
${shebang} DOSQL tmp_mask_assertion_result.sql
</#if>
</#foreach>
drop table tmp_result_upload;
drop table tmp_result;
</#foreach>
drop table tmp_execution;

112
src-modules/module/qa/etl/mask_execution/get_field_params.sql

@ -0,0 +1,112 @@
--freemarker template
<#if SQLdialect='Postgres'>
drop table if exists tmp_execution;
</#if>
create table tmp_execution( tid INTEGER not null,
name varchar(255) not null,
userinfo_id INTEGER ,
userinfo_str VARCHAR(255) ,
maskeninfo_id INTEGER ,
is_active smallint default 1 not null,
stylesheet_id INTEGER default 1 ,
stylesheet_str VARCHAR(255) ,
contenttype VARCHAR(255) ,
output_filename VARCHAR(255) ,
systeminfo_id INTEGER ,
field_value varchar(255),
field_values varchar(255)
)
;
insert into tmp_execution(tid,
name,
userinfo_id,
maskeninfo_id,
is_active,
stylesheet_id,
contenttype,
output_filename,
systeminfo_id,
field_values)
SELECT E.tid,
E.name,
E.userinfo_id,
E.maskeninfo_id,
E.is_active,
E.stylesheet_id,
E.contenttype,
E.output_filename,
E.systeminfo_id,
''
FROM qa_mask_execution E
where E.is_active=1
;
create temp table tmp_inserted(
mask_execution_id integer,
qa_mask_field_sel_tid integer,
do_insert smallint);
<#list 1..10 as i>
insert into tmp_inserted(mask_execution_id ,
do_insert,
qa_mask_field_sel_tid)
select S.mask_execution_id,1,min(S.tid)
from felderinfo F, qa_mask_field_sel S
where F.tid=S.felderinfo_id
and S.is_active=1
and '' || S.mask_execution_id || '_' || S.tid not in (
select '' || T.mask_execution_id || '_' || T.qa_mask_field_sel_tid
from tmp_inserted T)
group by 1,2
;
update tmp_execution set field_value=(select trim(F.name) || '=' || trim(S.field_value)
from felderinfo F, qa_mask_field_sel S, tmp_inserted T
where T.mask_execution_id=S.mask_execution_id
and T.mask_execution_id=tmp_execution.tid
and F.tid=S.felderinfo_id
and S.is_active=1
and S.tid=T.qa_mask_field_sel_tid
and T.do_insert=1
)
;
update tmp_inserted set do_insert=0;
update tmp_execution set field_values=field_values || trim(string_not_null('&' || field_value));
</#list>
drop table tmp_inserted;
update tmp_execution set stylesheet_str='tabelle_xml.xsl'
--derzeit noch fest verdrahtet xml
--(select trim(S.filename)
--from sx_stylesheets S
--where S.tid=tmp_execution.stylesheet_id)
;
update tmp_execution set userinfo_str=(select trim(U.benutzer)
from userinfo U
where U.tid=tmp_execution.userinfo_id);
--java -cp "$JDBC_CLASSPATH" $JAVA_OPTS de.superx.bin.ExecuteMask -tid:16000 -out:test.pdf -user:admin "-params:Köpfe oder Fälle ?=1=1&Stichtag=1&stylesheet=tabelle_fo_pdf.xsl&contenttype=application/pdf" -logger:$SUPERX_DIR/db/conf/logging.properties
--select 'java -cp "$JDBC_CLASSPATH" $JAVA_OPTS de.superx.bin.ExecuteMask -tid:' || maskeninfo_id
--|| ' -out:' || output_filename || ' -user:' || userinfo_str || ' "-params:1=1'|| field_values || '&&stylesheet=' || stylesheet_str || '&contenttype=' || contenttype || '" -logger:$SUPERX_DIR/db/conf/logging.properties'
--from tmp_execution;
--drop table tmp_execution;

41
src-modules/module/qa/etl/mask_execution/mask_assertion.xsl

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="mask_execution_id" />
<xsl:param name="mask_execution_assert_id" />
<xsl:param name="rownr" />
<xsl:param name="colnr" />
<xsl:template match="/">
<xsl:variable name="row" select="number($rownr)-1" />
<xsl:variable name="col" select="number($colnr)-1" />
<!--<xsl:text>DEBUG</xsl:text><xsl:value-of select="/ergebnisse/ergebnis/ergebniselement/sqlerg/row[@no=$row]/col[@id=$col]/wert" /><xsl:text>
ROW: </xsl:text>
<xsl:value-of select="$row" /><xsl:text>
COL: </xsl:text>
<xsl:value-of select="$col" />-->
<xsl:variable name="result_value">
<xsl:choose>
<xsl:when test="/ergebnisse/ergebnis/ergebniselement/sqlerg/row[@no=$row]/col[@id=$col]/wert!=''
and string(number(/ergebnisse/ergebnis/ergebniselement/sqlerg/row[@no=$row]/col[@id=$col]/wert)) != 'NaN'">
<xsl:value-of select="/ergebnisse/ergebnis/ergebniselement/sqlerg/row[@no=$row]/col[@id=$col]/wert" />
</xsl:when>
<xsl:otherwise>
<xsl:text>null::integer</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:text>
--freemarker template
insert into qa_mask_execution_assert_result(
mask_execution_assert_id,
mask_execution_result_id,
result_value)
select </xsl:text><xsl:value-of select="$mask_execution_assert_id" /><xsl:text>,T.mask_execution_result_id,</xsl:text><xsl:value-of select="$result_value" />
<xsl:text>
from tmp_result T;
</xsl:text>
</xsl:template>
</xsl:stylesheet>

372
src-modules/module/qa/etl/mask_execution/mask_execution.kjb

@ -0,0 +1,372 @@
<?xml version="1.0" encoding="UTF-8"?>
<job>
<name>mask_execution</name>
<description/>
<extended_description/>
<job_version/>
<job_status>0</job_status>
<directory>&#x2f;</directory>
<created_user>-</created_user>
<created_date>2019&#x2f;09&#x2f;17 22&#x3a;10&#x3a;21.757</created_date>
<modified_user>-</modified_user>
<modified_date>2019&#x2f;09&#x2f;17 22&#x3a;10&#x3a;21.757</modified_date>
<parameters>
<parameter>
<name>params</name>
<default_value/>
<description/>
</parameter>
</parameters>
<slaveservers>
</slaveservers>
<job-log-table>
<connection/>
<schema/>
<table/>
<size_limit_lines/>
<interval/>
<timeout_days/>
<field>
<id>ID_JOB</id>
<enabled>Y</enabled>
<name>ID_JOB</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>JOBNAME</id>
<enabled>Y</enabled>
<name>JOBNAME</name>
</field>
<field>
<id>STATUS</id>
<enabled>Y</enabled>
<name>STATUS</name>
</field>
<field>
<id>LINES_READ</id>
<enabled>Y</enabled>
<name>LINES_READ</name>
</field>
<field>
<id>LINES_WRITTEN</id>
<enabled>Y</enabled>
<name>LINES_WRITTEN</name>
</field>
<field>
<id>LINES_UPDATED</id>
<enabled>Y</enabled>
<name>LINES_UPDATED</name>
</field>
<field>
<id>LINES_INPUT</id>
<enabled>Y</enabled>
<name>LINES_INPUT</name>
</field>
<field>
<id>LINES_OUTPUT</id>
<enabled>Y</enabled>
<name>LINES_OUTPUT</name>
</field>
<field>
<id>LINES_REJECTED</id>
<enabled>Y</enabled>
<name>LINES_REJECTED</name>
</field>
<field>
<id>ERRORS</id>
<enabled>Y</enabled>
<name>ERRORS</name>
</field>
<field>
<id>STARTDATE</id>
<enabled>Y</enabled>
<name>STARTDATE</name>
</field>
<field>
<id>ENDDATE</id>
<enabled>Y</enabled>
<name>ENDDATE</name>
</field>
<field>
<id>LOGDATE</id>
<enabled>Y</enabled>
<name>LOGDATE</name>
</field>
<field>
<id>DEPDATE</id>
<enabled>Y</enabled>
<name>DEPDATE</name>
</field>
<field>
<id>REPLAYDATE</id>
<enabled>Y</enabled>
<name>REPLAYDATE</name>
</field>
<field>
<id>LOG_FIELD</id>
<enabled>Y</enabled>
<name>LOG_FIELD</name>
</field>
<field>
<id>EXECUTING_SERVER</id>
<enabled>N</enabled>
<name>EXECUTING_SERVER</name>
</field>
<field>
<id>EXECUTING_USER</id>
<enabled>N</enabled>
<name>EXECUTING_USER</name>
</field>
<field>
<id>START_JOB_ENTRY</id>
<enabled>N</enabled>
<name>START_JOB_ENTRY</name>
</field>
<field>
<id>CLIENT</id>
<enabled>N</enabled>
<name>CLIENT</name>
</field>
</job-log-table>
<jobentry-log-table>
<connection/>
<schema/>
<table/>
<timeout_days/>
<field>
<id>ID_BATCH</id>
<enabled>Y</enabled>
<name>ID_BATCH</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>LOG_DATE</id>
<enabled>Y</enabled>
<name>LOG_DATE</name>
</field>
<field>
<id>JOBNAME</id>
<enabled>Y</enabled>
<name>TRANSNAME</name>
</field>
<field>
<id>JOBENTRYNAME</id>
<enabled>Y</enabled>
<name>STEPNAME</name>
</field>
<field>
<id>LINES_READ</id>
<enabled>Y</enabled>
<name>LINES_READ</name>
</field>
<field>
<id>LINES_WRITTEN</id>
<enabled>Y</enabled>
<name>LINES_WRITTEN</name>
</field>
<field>
<id>LINES_UPDATED</id>
<enabled>Y</enabled>
<name>LINES_UPDATED</name>
</field>
<field>
<id>LINES_INPUT</id>
<enabled>Y</enabled>
<name>LINES_INPUT</name>
</field>
<field>
<id>LINES_OUTPUT</id>
<enabled>Y</enabled>
<name>LINES_OUTPUT</name>
</field>
<field>
<id>LINES_REJECTED</id>
<enabled>Y</enabled>
<name>LINES_REJECTED</name>
</field>
<field>
<id>ERRORS</id>
<enabled>Y</enabled>
<name>ERRORS</name>
</field>
<field>
<id>RESULT</id>
<enabled>Y</enabled>
<name>RESULT</name>
</field>
<field>
<id>NR_RESULT_ROWS</id>
<enabled>Y</enabled>
<name>NR_RESULT_ROWS</name>
</field>
<field>
<id>NR_RESULT_FILES</id>
<enabled>Y</enabled>
<name>NR_RESULT_FILES</name>
</field>
<field>
<id>LOG_FIELD</id>
<enabled>N</enabled>
<name>LOG_FIELD</name>
</field>
<field>
<id>COPY_NR</id>
<enabled>N</enabled>
<name>COPY_NR</name>
</field>
</jobentry-log-table>
<channel-log-table>
<connection/>
<schema/>
<table/>
<timeout_days/>
<field>
<id>ID_BATCH</id>
<enabled>Y</enabled>
<name>ID_BATCH</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>LOG_DATE</id>
<enabled>Y</enabled>
<name>LOG_DATE</name>
</field>
<field>
<id>LOGGING_OBJECT_TYPE</id>
<enabled>Y</enabled>
<name>LOGGING_OBJECT_TYPE</name>
</field>
<field>
<id>OBJECT_NAME</id>
<enabled>Y</enabled>
<name>OBJECT_NAME</name>
</field>
<field>
<id>OBJECT_COPY</id>
<enabled>Y</enabled>
<name>OBJECT_COPY</name>
</field>
<field>
<id>REPOSITORY_DIRECTORY</id>
<enabled>Y</enabled>
<name>REPOSITORY_DIRECTORY</name>
</field>
<field>
<id>FILENAME</id>
<enabled>Y</enabled>
<name>FILENAME</name>
</field>
<field>
<id>OBJECT_ID</id>
<enabled>Y</enabled>
<name>OBJECT_ID</name>
</field>
<field>
<id>OBJECT_REVISION</id>
<enabled>Y</enabled>
<name>OBJECT_REVISION</name>
</field>
<field>
<id>PARENT_CHANNEL_ID</id>
<enabled>Y</enabled>
<name>PARENT_CHANNEL_ID</name>
</field>
<field>
<id>ROOT_CHANNEL_ID</id>
<enabled>Y</enabled>
<name>ROOT_CHANNEL_ID</name>
</field>
</channel-log-table>
<pass_batchid>N</pass_batchid>
<shared_objects_file/>
<entries>
<entry>
<name>START</name>
<description/>
<type>SPECIAL</type>
<start>Y</start>
<dummy>N</dummy>
<repeat>N</repeat>
<schedulerType>0</schedulerType>
<intervalSeconds>0</intervalSeconds>
<intervalMinutes>60</intervalMinutes>
<hour>12</hour>
<minutes>0</minutes>
<weekDay>1</weekDay>
<DayOfMonth>1</DayOfMonth>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>80</xloc>
<yloc>80</yloc>
</entry>
<entry>
<name>execute</name>
<description/>
<type>SHELL</type>
<filename>&#x24;&#x7b;Internal.Job.Filename.Directory&#x7d;&#x2f;execute_mask.x</filename>
<work_directory>&#x24;&#x7b;Internal.Job.Filename.Directory&#x7d;</work_directory>
<arg_from_previous>N</arg_from_previous>
<exec_per_row>N</exec_per_row>
<set_logfile>Y</set_logfile>
<logfile>&#x24;&#x7b;Internal.Job.Filename.Directory&#x7d;&#x2f;execute_mask</logfile>
<set_append_logfile>N</set_append_logfile>
<logext>log</logext>
<add_date>N</add_date>
<add_time>N</add_time>
<insertScript>N</insertScript>
<script/>
<loglevel>Nothing</loglevel>
<argument0>params</argument0>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>208</xloc>
<yloc>80</yloc>
</entry>
<entry>
<name>Success</name>
<description/>
<type>SUCCESS</type>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>368</xloc>
<yloc>80</yloc>
</entry>
</entries>
<hops>
<hop>
<from>START</from>
<to>execute</to>
<from_nr>0</from_nr>
<to_nr>0</to_nr>
<enabled>Y</enabled>
<evaluation>Y</evaluation>
<unconditional>Y</unconditional>
</hop>
<hop>
<from>execute</from>
<to>Success</to>
<from_nr>0</from_nr>
<to_nr>0</to_nr>
<enabled>Y</enabled>
<evaluation>Y</evaluation>
<unconditional>N</unconditional>
</hop>
</hops>
<notepads>
</notepads>
</job>

14
src-modules/module/qa/etl/mask_execution/mask_execution.x

@ -0,0 +1,14 @@
#!/bin/bash
cd $WEBAPP/WEB-INF
java -cp "$JDBC_CLASSPATH" $JAVA_OPTS de.superx.bin.ExecuteMask -tid:26020 -out:qa/tmp/bewerber.xml -user:admin "-params:1=1&Semester=20092&Fächer=083&&stylesheet=tabelle_xml.xsl&contenttype=text/xml" -logger:$SUPERX_DIR/db/conf/logging.properties
if [ ! $? -eq 0 ]
then
echo "Warnung: Execute Mask Fehler"
else
echo "ExecuteMask erfolgreich"
fi

448
src-modules/module/qa/etl/mask_execution/mask_executions.kjb

@ -0,0 +1,448 @@
<?xml version="1.0" encoding="UTF-8"?>
<job>
<name>mask_executions</name>
<description/>
<extended_description/>
<job_version/>
<job_status>0</job_status>
<directory>&#x2f;</directory>
<created_user>-</created_user>
<created_date>2019&#x2f;09&#x2f;17 22&#x3a;10&#x3a;21.757</created_date>
<modified_user>-</modified_user>
<modified_date>2019&#x2f;09&#x2f;17 22&#x3a;10&#x3a;21.757</modified_date>
<parameters>
</parameters>
<connection>
<name>eduetl</name>
<server>localhost</server>
<type>POSTGRESQL</type>
<access>Native</access>
<database>superx</database>
<port>5433</port>
<username>superx</username>
<password>Encrypted 2be98afc86aa7f292a20aa77fd0c3fa9e</password>
<servername/>
<data_tablespace/>
<index_tablespace/>
<attributes>
<attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
<attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
<attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
<attribute><code>PORT_NUMBER</code><attribute>5433</attribute></attribute>
<attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
<attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
<attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
<attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
<attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
</attributes>
</connection>
<slaveservers>
</slaveservers>
<job-log-table>
<connection/>
<schema/>
<table/>
<size_limit_lines/>
<interval/>
<timeout_days/>
<field>
<id>ID_JOB</id>
<enabled>Y</enabled>
<name>ID_JOB</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>JOBNAME</id>
<enabled>Y</enabled>
<name>JOBNAME</name>
</field>
<field>
<id>STATUS</id>
<enabled>Y</enabled>
<name>STATUS</name>
</field>
<field>
<id>LINES_READ</id>
<enabled>Y</enabled>
<name>LINES_READ</name>
</field>
<field>
<id>LINES_WRITTEN</id>
<enabled>Y</enabled>
<name>LINES_WRITTEN</name>
</field>
<field>
<id>LINES_UPDATED</id>
<enabled>Y</enabled>
<name>LINES_UPDATED</name>
</field>
<field>
<id>LINES_INPUT</id>
<enabled>Y</enabled>
<name>LINES_INPUT</name>
</field>
<field>
<id>LINES_OUTPUT</id>
<enabled>Y</enabled>
<name>LINES_OUTPUT</name>
</field>
<field>
<id>LINES_REJECTED</id>
<enabled>Y</enabled>
<name>LINES_REJECTED</name>
</field>
<field>
<id>ERRORS</id>
<enabled>Y</enabled>
<name>ERRORS</name>
</field>
<field>
<id>STARTDATE</id>
<enabled>Y</enabled>
<name>STARTDATE</name>
</field>
<field>
<id>ENDDATE</id>
<enabled>Y</enabled>
<name>ENDDATE</name>
</field>
<field>
<id>LOGDATE</id>
<enabled>Y</enabled>
<name>LOGDATE</name>
</field>
<field>
<id>DEPDATE</id>
<enabled>Y</enabled>
<name>DEPDATE</name>
</field>
<field>
<id>REPLAYDATE</id>
<enabled>Y</enabled>
<name>REPLAYDATE</name>
</field>
<field>
<id>LOG_FIELD</id>
<enabled>Y</enabled>
<name>LOG_FIELD</name>
</field>
<field>
<id>EXECUTING_SERVER</id>
<enabled>N</enabled>
<name>EXECUTING_SERVER</name>
</field>
<field>
<id>EXECUTING_USER</id>
<enabled>N</enabled>
<name>EXECUTING_USER</name>
</field>
<field>
<id>START_JOB_ENTRY</id>
<enabled>N</enabled>
<name>START_JOB_ENTRY</name>
</field>
<field>
<id>CLIENT</id>
<enabled>N</enabled>
<name>CLIENT</name>
</field>
</job-log-table>
<jobentry-log-table>
<connection/>
<schema/>
<table/>
<timeout_days/>
<field>
<id>ID_BATCH</id>
<enabled>Y</enabled>
<name>ID_BATCH</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>LOG_DATE</id>
<enabled>Y</enabled>
<name>LOG_DATE</name>
</field>
<field>
<id>JOBNAME</id>
<enabled>Y</enabled>
<name>TRANSNAME</name>
</field>
<field>
<id>JOBENTRYNAME</id>
<enabled>Y</enabled>
<name>STEPNAME</name>
</field>
<field>
<id>LINES_READ</id>
<enabled>Y</enabled>
<name>LINES_READ</name>
</field>
<field>
<id>LINES_WRITTEN</id>
<enabled>Y</enabled>
<name>LINES_WRITTEN</name>
</field>
<field>
<id>LINES_UPDATED</id>
<enabled>Y</enabled>
<name>LINES_UPDATED</name>
</field>
<field>
<id>LINES_INPUT</id>
<enabled>Y</enabled>
<name>LINES_INPUT</name>
</field>
<field>
<id>LINES_OUTPUT</id>
<enabled>Y</enabled>
<name>LINES_OUTPUT</name>
</field>
<field>
<id>LINES_REJECTED</id>
<enabled>Y</enabled>
<name>LINES_REJECTED</name>
</field>
<field>
<id>ERRORS</id>
<enabled>Y</enabled>
<name>ERRORS</name>
</field>
<field>
<id>RESULT</id>
<enabled>Y</enabled>
<name>RESULT</name>
</field>
<field>
<id>NR_RESULT_ROWS</id>
<enabled>Y</enabled>
<name>NR_RESULT_ROWS</name>
</field>
<field>
<id>NR_RESULT_FILES</id>
<enabled>Y</enabled>
<name>NR_RESULT_FILES</name>
</field>
<field>
<id>LOG_FIELD</id>
<enabled>N</enabled>
<name>LOG_FIELD</name>
</field>
<field>
<id>COPY_NR</id>
<enabled>N</enabled>
<name>COPY_NR</name>
</field>
</jobentry-log-table>
<channel-log-table>
<connection/>
<schema/>
<table/>
<timeout_days/>
<field>
<id>ID_BATCH</id>
<enabled>Y</enabled>
<name>ID_BATCH</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>LOG_DATE</id>
<enabled>Y</enabled>
<name>LOG_DATE</name>
</field>
<field>
<id>LOGGING_OBJECT_TYPE</id>
<enabled>Y</enabled>
<name>LOGGING_OBJECT_TYPE</name>
</field>
<field>
<id>OBJECT_NAME</id>
<enabled>Y</enabled>
<name>OBJECT_NAME</name>
</field>
<field>
<id>OBJECT_COPY</id>
<enabled>Y</enabled>
<name>OBJECT_COPY</name>
</field>
<field>
<id>REPOSITORY_DIRECTORY</id>
<enabled>Y</enabled>
<name>REPOSITORY_DIRECTORY</name>
</field>
<field>
<id>FILENAME</id>
<enabled>Y</enabled>
<name>FILENAME</name>
</field>
<field>
<id>OBJECT_ID</id>
<enabled>Y</enabled>
<name>OBJECT_ID</name>
</field>
<field>
<id>OBJECT_REVISION</id>
<enabled>Y</enabled>
<name>OBJECT_REVISION</name>
</field>
<field>
<id>PARENT_CHANNEL_ID</id>
<enabled>Y</enabled>
<name>PARENT_CHANNEL_ID</name>
</field>
<field>
<id>ROOT_CHANNEL_ID</id>
<enabled>Y</enabled>
<name>ROOT_CHANNEL_ID</name>
</field>
</channel-log-table>
<pass_batchid>N</pass_batchid>
<shared_objects_file/>
<entries>
<entry>
<name>START</name>
<description/>
<type>SPECIAL</type>
<start>Y</start>
<dummy>N</dummy>
<repeat>N</repeat>
<schedulerType>0</schedulerType>
<intervalSeconds>0</intervalSeconds>
<intervalMinutes>60</intervalMinutes>
<hour>12</hour>
<minutes>0</minutes>
<weekDay>1</weekDay>
<DayOfMonth>1</DayOfMonth>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>80</xloc>
<yloc>80</yloc>
</entry>
<entry>
<name>prepare_execution_cmdline</name>
<description/>
<type>SQL</type>
<sql/>
<useVariableSubstitution>F</useVariableSubstitution>
<sqlfromfile>T</sqlfromfile>
<sqlfilename>&#x24;&#x7b;Internal.Job.Filename.Directory&#x7d;&#x2f;get_field_params_generated.sql</sqlfilename>
<sendOneStatement>F</sendOneStatement>
<connection>eduetl</connection>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>224</xloc>
<yloc>80</yloc>
</entry>
<entry>
<name>prepare_executions</name>
<description/>
<type>TRANS</type>
<specification_method>filename</specification_method>
<trans_object_id/>
<filename>&#x24;&#x7b;Internal.Job.Filename.Directory&#x7d;&#x2f;prepare_executions.ktr</filename>
<transname/>
<arg_from_previous>N</arg_from_previous>
<params_from_previous>N</params_from_previous>
<exec_per_row>N</exec_per_row>
<clear_rows>N</clear_rows>
<clear_files>N</clear_files>
<set_logfile>N</set_logfile>
<logfile/>
<logext/>
<add_date>N</add_date>
<add_time>N</add_time>
<loglevel>Basic</loglevel>
<cluster>N</cluster>
<slave_server_name/>
<set_append_logfile>N</set_append_logfile>
<wait_until_finished>Y</wait_until_finished>
<follow_abort_remote>N</follow_abort_remote>
<create_parent_folder>N</create_parent_folder>
<logging_remote_work>N</logging_remote_work>
<parameters>
<pass_all_parameters>Y</pass_all_parameters>
</parameters>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>416</xloc>
<yloc>80</yloc>
</entry>
<entry>
<name>mask_execution</name>
<description/>
<type>JOB</type>
<specification_method>filename</specification_method>
<job_object_id/>
<filename>&#x24;&#x7b;Internal.Job.Filename.Directory&#x7d;&#x2f;mask_execution.kjb</filename>
<jobname/>
<arg_from_previous>N</arg_from_previous>
<params_from_previous>Y</params_from_previous>
<exec_per_row>Y</exec_per_row>
<set_logfile>N</set_logfile>
<logfile/>
<logext/>
<add_date>N</add_date>
<add_time>N</add_time>
<loglevel>Nothing</loglevel>
<slave_server_name/>
<wait_until_finished>Y</wait_until_finished>
<follow_abort_remote>N</follow_abort_remote>
<expand_remote_job>N</expand_remote_job>
<create_parent_folder>N</create_parent_folder>
<pass_export>N</pass_export>
<parameters> <pass_all_parameters>Y</pass_all_parameters>
</parameters> <set_append_logfile>N</set_append_logfile>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>576</xloc>
<yloc>80</yloc>
</entry>
</entries>
<hops>
<hop>
<from>START</from>
<to>prepare_execution_cmdline</to>
<from_nr>0</from_nr>
<to_nr>0</to_nr>
<enabled>Y</enabled>
<evaluation>Y</evaluation>
<unconditional>Y</unconditional>
</hop>
<hop>
<from>prepare_execution_cmdline</from>
<to>prepare_executions</to>
<from_nr>0</from_nr>
<to_nr>0</to_nr>
<enabled>Y</enabled>
<evaluation>Y</evaluation>
<unconditional>N</unconditional>
</hop>
<hop>
<from>prepare_executions</from>
<to>mask_execution</to>
<from_nr>0</from_nr>
<to_nr>0</to_nr>
<enabled>Y</enabled>
<evaluation>Y</evaluation>
<unconditional>N</unconditional>
</hop>
</hops>
<notepads>
</notepads>
</job>

531
src-modules/module/qa/etl/mask_execution/prepare_executions.ktr

@ -0,0 +1,531 @@
<?xml version="1.0" encoding="UTF-8"?>
<transformation>
<info>
<name>prepare_executions</name>
<description/>
<extended_description/>
<trans_version/>
<trans_type>Normal</trans_type>
<directory>&#x2f;</directory>
<parameters>
</parameters>
<log>
<trans-log-table>
<connection/>
<schema/>
<table/>
<size_limit_lines/>
<interval/>
<timeout_days/>
<field>
<id>ID_BATCH</id>
<enabled>Y</enabled>
<name>ID_BATCH</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>TRANSNAME</id>
<enabled>Y</enabled>
<name>TRANSNAME</name>
</field>
<field>
<id>STATUS</id>
<enabled>Y</enabled>
<name>STATUS</name>
</field>
<field>
<id>LINES_READ</id>
<enabled>Y</enabled>
<name>LINES_READ</name>
<subject/>
</field>
<field>
<id>LINES_WRITTEN</id>
<enabled>Y</enabled>
<name>LINES_WRITTEN</name>
<subject/>
</field>
<field>
<id>LINES_UPDATED</id>
<enabled>Y</enabled>
<name>LINES_UPDATED</name>
<subject/>
</field>
<field>
<id>LINES_INPUT</id>
<enabled>Y</enabled>
<name>LINES_INPUT</name>
<subject/>
</field>
<field>
<id>LINES_OUTPUT</id>
<enabled>Y</enabled>
<name>LINES_OUTPUT</name>
<subject/>
</field>
<field>
<id>LINES_REJECTED</id>
<enabled>Y</enabled>
<name>LINES_REJECTED</name>
<subject/>
</field>
<field>
<id>ERRORS</id>
<enabled>Y</enabled>
<name>ERRORS</name>
</field>
<field>
<id>STARTDATE</id>
<enabled>Y</enabled>
<name>STARTDATE</name>
</field>
<field>
<id>ENDDATE</id>
<enabled>Y</enabled>
<name>ENDDATE</name>
</field>
<field>
<id>LOGDATE</id>
<enabled>Y</enabled>
<name>LOGDATE</name>
</field>
<field>
<id>DEPDATE</id>
<enabled>Y</enabled>
<name>DEPDATE</name>
</field>
<field>
<id>REPLAYDATE</id>
<enabled>Y</enabled>
<name>REPLAYDATE</name>
</field>
<field>
<id>LOG_FIELD</id>
<enabled>Y</enabled>
<name>LOG_FIELD</name>
</field>
<field>
<id>EXECUTING_SERVER</id>
<enabled>N</enabled>
<name>EXECUTING_SERVER</name>
</field>
<field>
<id>EXECUTING_USER</id>
<enabled>N</enabled>
<name>EXECUTING_USER</name>
</field>
<field>
<id>CLIENT</id>
<enabled>N</enabled>
<name>CLIENT</name>
</field>
</trans-log-table>
<perf-log-table>
<connection/>
<schema/>
<table/>
<interval/>
<timeout_days/>
<field>
<id>ID_BATCH</id>
<enabled>Y</enabled>
<name>ID_BATCH</name>
</field>
<field>
<id>SEQ_NR</id>
<enabled>Y</enabled>
<name>SEQ_NR</name>
</field>
<field>
<id>LOGDATE</id>
<enabled>Y</enabled>
<name>LOGDATE</name>
</field>
<field>
<id>TRANSNAME</id>
<enabled>Y</enabled>
<name>TRANSNAME</name>
</field>
<field>
<id>STEPNAME</id>
<enabled>Y</enabled>
<name>STEPNAME</name>
</field>
<field>
<id>STEP_COPY</id>
<enabled>Y</enabled>
<name>STEP_COPY</name>
</field>
<field>
<id>LINES_READ</id>
<enabled>Y</enabled>
<name>LINES_READ</name>
</field>
<field>
<id>LINES_WRITTEN</id>
<enabled>Y</enabled>
<name>LINES_WRITTEN</name>
</field>
<field>
<id>LINES_UPDATED</id>
<enabled>Y</enabled>
<name>LINES_UPDATED</name>
</field>
<field>
<id>LINES_INPUT</id>
<enabled>Y</enabled>
<name>LINES_INPUT</name>
</field>
<field>
<id>LINES_OUTPUT</id>
<enabled>Y</enabled>
<name>LINES_OUTPUT</name>
</field>
<field>
<id>LINES_REJECTED</id>
<enabled>Y</enabled>
<name>LINES_REJECTED</name>
</field>
<field>
<id>ERRORS</id>
<enabled>Y</enabled>
<name>ERRORS</name>
</field>
<field>
<id>INPUT_BUFFER_ROWS</id>
<enabled>Y</enabled>
<name>INPUT_BUFFER_ROWS</name>
</field>
<field>
<id>OUTPUT_BUFFER_ROWS</id>
<enabled>Y</enabled>
<name>OUTPUT_BUFFER_ROWS</name>
</field>
</perf-log-table>
<channel-log-table>
<connection/>
<schema/>
<table/>
<timeout_days/>
<field>
<id>ID_BATCH</id>
<enabled>Y</enabled>
<name>ID_BATCH</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>LOG_DATE</id>
<enabled>Y</enabled>
<name>LOG_DATE</name>
</field>
<field>
<id>LOGGING_OBJECT_TYPE</id>
<enabled>Y</enabled>
<name>LOGGING_OBJECT_TYPE</name>
</field>
<field>
<id>OBJECT_NAME</id>
<enabled>Y</enabled>
<name>OBJECT_NAME</name>
</field>
<field>
<id>OBJECT_COPY</id>
<enabled>Y</enabled>
<name>OBJECT_COPY</name>
</field>
<field>
<id>REPOSITORY_DIRECTORY</id>
<enabled>Y</enabled>
<name>REPOSITORY_DIRECTORY</name>
</field>
<field>
<id>FILENAME</id>
<enabled>Y</enabled>
<name>FILENAME</name>
</field>
<field>
<id>OBJECT_ID</id>
<enabled>Y</enabled>
<name>OBJECT_ID</name>
</field>
<field>
<id>OBJECT_REVISION</id>
<enabled>Y</enabled>
<name>OBJECT_REVISION</name>
</field>
<field>
<id>PARENT_CHANNEL_ID</id>
<enabled>Y</enabled>
<name>PARENT_CHANNEL_ID</name>
</field>
<field>
<id>ROOT_CHANNEL_ID</id>
<enabled>Y</enabled>
<name>ROOT_CHANNEL_ID</name>
</field>
</channel-log-table>
<step-log-table>
<connection/>
<schema/>
<table/>
<timeout_days/>
<field>
<id>ID_BATCH</id>
<enabled>Y</enabled>
<name>ID_BATCH</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>LOG_DATE</id>
<enabled>Y</enabled>
<name>LOG_DATE</name>
</field>
<field>
<id>TRANSNAME</id>
<enabled>Y</enabled>
<name>TRANSNAME</name>
</field>
<field>
<id>STEPNAME</id>
<enabled>Y</enabled>
<name>STEPNAME</name>
</field>
<field>
<id>STEP_COPY</id>
<enabled>Y</enabled>
<name>STEP_COPY</name>
</field>
<field>
<id>LINES_READ</id>
<enabled>Y</enabled>
<name>LINES_READ</name>
</field>
<field>
<id>LINES_WRITTEN</id>
<enabled>Y</enabled>
<name>LINES_WRITTEN</name>
</field>
<field>
<id>LINES_UPDATED</id>
<enabled>Y</enabled>
<name>LINES_UPDATED</name>
</field>
<field>
<id>LINES_INPUT</id>
<enabled>Y</enabled>
<name>LINES_INPUT</name>
</field>
<field>
<id>LINES_OUTPUT</id>
<enabled>Y</enabled>
<name>LINES_OUTPUT</name>
</field>
<field>
<id>LINES_REJECTED</id>
<enabled>Y</enabled>
<name>LINES_REJECTED</name>
</field>
<field>
<id>ERRORS</id>
<enabled>Y</enabled>
<name>ERRORS</name>
</field>
<field>
<id>LOG_FIELD</id>
<enabled>N</enabled>
<name>LOG_FIELD</name>
</field>
</step-log-table>
<metrics-log-table>
<connection/>
<schema/>
<table/>
<timeout_days/>
<field>
<id>ID_BATCH</id>
<enabled>Y</enabled>
<name>ID_BATCH</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>LOG_DATE</id>
<enabled>Y</enabled>
<name>LOG_DATE</name>
</field>
<field>
<id>METRICS_DATE</id>
<enabled>Y</enabled>
<name>METRICS_DATE</name>
</field>
<field>
<id>METRICS_CODE</id>
<enabled>Y</enabled>
<name>METRICS_CODE</name>
</field>
<field>
<id>METRICS_DESCRIPTION</id>
<enabled>Y</enabled>
<name>METRICS_DESCRIPTION</name>
</field>
<field>
<id>METRICS_SUBJECT</id>
<enabled>Y</enabled>
<name>METRICS_SUBJECT</name>
</field>
<field>
<id>METRICS_TYPE</id>
<enabled>Y</enabled>
<name>METRICS_TYPE</name>
</field>
<field>
<id>METRICS_VALUE</id>
<enabled>Y</enabled>
<name>METRICS_VALUE</name>
</field>
</metrics-log-table>
</log>
<maxdate>
<connection/>
<table/>
<field/>
<offset>0.0</offset>
<maxdiff>0.0</maxdiff>
</maxdate>
<size_rowset>10000</size_rowset>
<sleep_time_empty>50</sleep_time_empty>
<sleep_time_full>50</sleep_time_full>
<unique_connections>N</unique_connections>
<feedback_shown>Y</feedback_shown>
<feedback_size>50000</feedback_size>
<using_thread_priorities>Y</using_thread_priorities>
<shared_objects_file/>
<capture_step_performance>N</capture_step_performance>
<step_performance_capturing_delay>1000</step_performance_capturing_delay>
<step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
<dependencies>
</dependencies>
<partitionschemas>
</partitionschemas>
<slaveservers>
</slaveservers>
<clusterschemas>
</clusterschemas>
<created_user>-</created_user>
<created_date>2019&#x2f;09&#x2f;17 22&#x3a;12&#x3a;08.191</created_date>
<modified_user>-</modified_user>
<modified_date>2019&#x2f;09&#x2f;17 22&#x3a;12&#x3a;08.191</modified_date>
<key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
<is_key_private>N</is_key_private>
</info>
<notepads>
</notepads>
<connection>
<name>eduetl</name>
<server>localhost</server>
<type>POSTGRESQL</type>
<access>Native</access>
<database>superx</database>
<port>5433</port>
<username>superx</username>
<password>Encrypted 2be98afc86aa7f292a20aa77fd0c3fa9e</password>
<servername/>
<data_tablespace/>
<index_tablespace/>
<attributes>
<attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
<attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
<attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
<attribute><code>PORT_NUMBER</code><attribute>5433</attribute></attribute>
<attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
<attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
<attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
<attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
<attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
</attributes>
</connection>
<order>
<hop>
<from>get_executions</from>
<to>Copy rows to result</to>
<enabled>Y</enabled>
</hop>
</order>
<step>
<name>get_executions</name>
<type>TableInput</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<connection>eduetl</connection>
<sql>select userinfo_str , &#xa;stylesheet_str , &#xa;contenttype , &#xa;output_filename , &#xa;&#x27; -tid&#x3a;&#x27; &#x7c;&#x7c; maskeninfo_id &#x7c;&#x7c; &#x27; -out&#x3a;&#x27; &#x7c;&#x7c; output_filename &#x7c;&#x7c; &#x27; -user&#x3a;&#x27; &#x7c;&#x7c; userinfo_str &#x7c;&#x7c; &#x27; &#x22;-params&#x3a;1&#x3d;1&#x27;&#x7c;&#x7c; field_values &#x7c;&#x7c; &#x27;&#x26;&#x26;stylesheet&#x3d;&#x27; &#x7c;&#x7c; stylesheet_str &#x7c;&#x7c; &#x27;&#x26;contenttype&#x3d;&#x27; &#x7c;&#x7c; contenttype &#x7c;&#x7c; &#x27;&#x22; -logger&#x3a;&#x24;SUPERX_DIR&#x2f;db&#x2f;conf&#x2f;logging.properties&#x27; as params&#xa;from tmp_execution&#x3b;</sql>
<limit>0</limit>
<lookup/>
<execute_each_row>N</execute_each_row>
<variables_active>N</variables_active>
<lazy_conversion_active>N</lazy_conversion_active>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
</remotesteps>
<GUI>
<xloc>96</xloc>
<yloc>64</yloc>
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Copy rows to result</name>
<type>RowsToResult</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<cluster_schema/>
<remotesteps>
<input>
</input>
<output>
</output>
</remotesteps>
<GUI>
<xloc>240</xloc>
<yloc>64</yloc>
<draw>Y</draw>
</GUI>
</step>
<step_error_handling>
</step_error_handling>
<slave-step-copy-partition-distribution>
</slave-step-copy-partition-distribution>
<slave_transformation>N</slave_transformation>
</transformation>

4
src-modules/module/qa/etl/mask_execution/qa_mask_execution.x

@ -0,0 +1,4 @@
DOSQL $QA_PFAD/etl/mask_execution/get_field_params.sql
DOSQL $QA_PFAD/etl/mask_execution/execute_masks.sql

BIN
src-modules/module/qa/etl/testfall_import/qa_importdatei.xlsx

Binary file not shown.

467
src-modules/module/qa/etl/testfall_import/testfall_import.kjb

@ -0,0 +1,467 @@
<?xml version="1.0" encoding="UTF-8"?><job>
<name>testfall_import</name>
<description/>
<extended_description/>
<job_version/>
<job_status>0</job_status>
<directory>/</directory>
<created_user>-</created_user>
<created_date>2020/02/23 21:14:53.737</created_date>
<modified_user>-</modified_user>
<modified_date>2020/02/23 21:14:53.737</modified_date>
<parameters>
<parameter>
<name>PATH_TO_UPLOADFILE</name>
<default_value>file:///home/superx/git/Memtext-Interna/Projekte/duisburg-essen_uni/impl/db_module/qa/ects_testfaelle/qa_importdatei.xlsx</default_value>
<description/>
</parameter>
<parameter>
<name>userid</name>
<default_value>803</default_value>
<description/>
</parameter>
</parameters>
<slaveservers/>
<job-log-table>
<connection/>
<schema/>
<table/>
<size_limit_lines/>
<interval/>
<timeout_days/>
<field>
<id>ID_JOB</id>
<enabled>Y</enabled>
<name>ID_JOB</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>JOBNAME</id>
<enabled>Y</enabled>
<name>JOBNAME</name>
</field>
<field>
<id>STATUS</id>
<enabled>Y</enabled>
<name>STATUS</name>
</field>
<field>
<id>LINES_READ</id>
<enabled>Y</enabled>
<name>LINES_READ</name>
</field>
<field>
<id>LINES_WRITTEN</id>
<enabled>Y</enabled>
<name>LINES_WRITTEN</name>
</field>
<field>
<id>LINES_UPDATED</id>
<enabled>Y</enabled>
<name>LINES_UPDATED</name>
</field>
<field>
<id>LINES_INPUT</id>
<enabled>Y</enabled>
<name>LINES_INPUT</name>
</field>
<field>
<id>LINES_OUTPUT</id>
<enabled>Y</enabled>
<name>LINES_OUTPUT</name>
</field>
<field>
<id>LINES_REJECTED</id>
<enabled>Y</enabled>
<name>LINES_REJECTED</name>
</field>
<field>
<id>ERRORS</id>
<enabled>Y</enabled>
<name>ERRORS</name>
</field>
<field>
<id>STARTDATE</id>
<enabled>Y</enabled>
<name>STARTDATE</name>
</field>
<field>
<id>ENDDATE</id>
<enabled>Y</enabled>
<name>ENDDATE</name>
</field>
<field>
<id>LOGDATE</id>
<enabled>Y</enabled>
<name>LOGDATE</name>
</field>
<field>
<id>DEPDATE</id>
<enabled>Y</enabled>
<name>DEPDATE</name>
</field>
<field>
<id>REPLAYDATE</id>
<enabled>Y</enabled>
<name>REPLAYDATE</name>
</field>
<field>
<id>LOG_FIELD</id>
<enabled>Y</enabled>
<name>LOG_FIELD</name>
</field>
<field>
<id>EXECUTING_SERVER</id>
<enabled>N</enabled>
<name>EXECUTING_SERVER</name>
</field>
<field>
<id>EXECUTING_USER</id>
<enabled>N</enabled>
<name>EXECUTING_USER</name>
</field>
<field>
<id>START_JOB_ENTRY</id>
<enabled>N</enabled>
<name>START_JOB_ENTRY</name>
</field>
<field>
<id>CLIENT</id>
<enabled>N</enabled>
<name>CLIENT</name>
</field>
</job-log-table>
<jobentry-log-table>
<connection/>
<schema/>
<table/>
<timeout_days/>
<field>
<id>ID_BATCH</id>
<enabled>Y</enabled>
<name>ID_BATCH</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>LOG_DATE</id>
<enabled>Y</enabled>
<name>LOG_DATE</name>
</field>
<field>
<id>JOBNAME</id>
<enabled>Y</enabled>
<name>TRANSNAME</name>
</field>
<field>
<id>JOBENTRYNAME</id>
<enabled>Y</enabled>
<name>STEPNAME</name>
</field>
<field>
<id>LINES_READ</id>
<enabled>Y</enabled>
<name>LINES_READ</name>
</field>
<field>
<id>LINES_WRITTEN</id>
<enabled>Y</enabled>
<name>LINES_WRITTEN</name>
</field>
<field>
<id>LINES_UPDATED</id>
<enabled>Y</enabled>
<name>LINES_UPDATED</name>
</field>
<field>
<id>LINES_INPUT</id>
<enabled>Y</enabled>
<name>LINES_INPUT</name>
</field>
<field>
<id>LINES_OUTPUT</id>
<enabled>Y</enabled>
<name>LINES_OUTPUT</name>
</field>
<field>
<id>LINES_REJECTED</id>
<enabled>Y</enabled>
<name>LINES_REJECTED</name>
</field>
<field>
<id>ERRORS</id>
<enabled>Y</enabled>
<name>ERRORS</name>
</field>
<field>
<id>RESULT</id>
<enabled>Y</enabled>
<name>RESULT</name>
</field>
<field>
<id>NR_RESULT_ROWS</id>
<enabled>Y</enabled>
<name>NR_RESULT_ROWS</name>
</field>
<field>
<id>NR_RESULT_FILES</id>
<enabled>Y</enabled>
<name>NR_RESULT_FILES</name>
</field>
<field>
<id>LOG_FIELD</id>
<enabled>N</enabled>
<name>LOG_FIELD</name>
</field>
<field>
<id>COPY_NR</id>
<enabled>N</enabled>
<name>COPY_NR</name>
</field>
</jobentry-log-table>
<channel-log-table>
<connection/>
<schema/>
<table/>
<timeout_days/>
<field>
<id>ID_BATCH</id>
<enabled>Y</enabled>
<name>ID_BATCH</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>LOG_DATE</id>
<enabled>Y</enabled>
<name>LOG_DATE</name>
</field>
<field>
<id>LOGGING_OBJECT_TYPE</id>
<enabled>Y</enabled>
<name>LOGGING_OBJECT_TYPE</name>
</field>
<field>
<id>OBJECT_NAME</id>
<enabled>Y</enabled>
<name>OBJECT_NAME</name>
</field>
<field>
<id>OBJECT_COPY</id>
<enabled>Y</enabled>
<name>OBJECT_COPY</name>
</field>
<field>
<id>REPOSITORY_DIRECTORY</id>
<enabled>Y</enabled>
<name>REPOSITORY_DIRECTORY</name>
</field>
<field>
<id>FILENAME</id>
<enabled>Y</enabled>
<name>FILENAME</name>
</field>
<field>
<id>OBJECT_ID</id>
<enabled>Y</enabled>
<name>OBJECT_ID</name>
</field>
<field>
<id>OBJECT_REVISION</id>
<enabled>Y</enabled>
<name>OBJECT_REVISION</name>
</field>
<field>
<id>PARENT_CHANNEL_ID</id>
<enabled>Y</enabled>
<name>PARENT_CHANNEL_ID</name>
</field>
<field>
<id>ROOT_CHANNEL_ID</id>
<enabled>Y</enabled>
<name>ROOT_CHANNEL_ID</name>
</field>
</channel-log-table>
<pass_batchid>N</pass_batchid>
<shared_objects_file/>
<entries>
<entry>
<name>START</name>
<description/>
<type>SPECIAL</type>
<start>Y</start>
<dummy>N</dummy>
<repeat>N</repeat>
<schedulerType>0</schedulerType>
<intervalSeconds>0</intervalSeconds>
<intervalMinutes>60</intervalMinutes>
<hour>12</hour>
<minutes>0</minutes>
<weekDay>1</weekDay>
<DayOfMonth>1</DayOfMonth>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>112</xloc>
<yloc>80</yloc>
</entry>
<entry>
<name>testfall_import</name>
<description/>
<type>TRANS</type>
<specification_method>filename</specification_method>
<trans_object_id/>
<filename>${Internal.Job.Filename.Directory}/testfall_import.ktr</filename>
<transname/>
<arg_from_previous>N</arg_from_previous>
<params_from_previous>N</params_from_previous>
<exec_per_row>N</exec_per_row>
<clear_rows>N</clear_rows>
<clear_files>N</clear_files>
<set_logfile>N</set_logfile>
<logfile/>
<logext/>
<add_date>N</add_date>
<add_time>N</add_time>
<loglevel>Basic</loglevel>
<cluster>N</cluster>
<slave_server_name/>
<set_append_logfile>N</set_append_logfile>
<wait_until_finished>Y</wait_until_finished>
<follow_abort_remote>N</follow_abort_remote>
<create_parent_folder>N</create_parent_folder>
<logging_remote_work>N</logging_remote_work>
<parameters>
<pass_all_parameters>Y</pass_all_parameters>
</parameters>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>448</xloc>
<yloc>80</yloc>
</entry>
<entry>
<name>create table tmp_testfall_import</name>
<description/>
<type>SQL</type>
<sql>
drop table if exists tmp_testfall_import_felder;
drop table if exists tmp_testfall_import_feldwerte;
drop table if exists tmp_testfall_import_erg;
create table tmp_testfall_import_felder(
testfall_schluessel varchar(255),
feldnr integer,
feldname varchar(255)
);
create table tmp_testfall_import_feldwerte(
systeminfo_id integer,
testfall_schluessel varchar(255),
maskeninfo_id integer,
feldnr integer,
feldwert varchar(255)
);
create table tmp_testfall_import_erg(
testfall_schluessel varchar(255),
systeminfo_id integer,
mask_execution_id INTEGER ,
rownr INTEGER ,
colnr INTEGER ,
result_value_min FLOAT ,
result_value_max FLOAT ,
is_active smallint default 1 not null,
caption varchar(255)
);</sql>
<useVariableSubstitution>F</useVariableSubstitution>
<sqlfromfile>F</sqlfromfile>
<sqlfilename/>
<sendOneStatement>F</sendOneStatement>
<connection>eduetl</connection>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>256</xloc>
<yloc>80</yloc>
</entry>
<entry>
<name>finalize</name>
<description/>
<type>SQL</type>
<sql/>
<useVariableSubstitution>T</useVariableSubstitution>
<sqlfromfile>T</sqlfromfile>
<sqlfilename>${Internal.Job.Filename.Directory}/testfall_import.sql</sqlfilename>
<sendOneStatement>F</sendOneStatement>
<connection>eduetl</connection>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>592</xloc>
<yloc>80</yloc>
</entry>
</entries>
<hops>
<hop>
<from>START</from>
<to>create table tmp_testfall_import</to>
<from_nr>0</from_nr>
<to_nr>0</to_nr>
<enabled>Y</enabled>
<evaluation>Y</evaluation>
<unconditional>Y</unconditional>
</hop>
<hop>
<from>create table tmp_testfall_import</from>
<to>testfall_import</to>
<from_nr>0</from_nr>
<to_nr>0</to_nr>
<enabled>Y</enabled>
<evaluation>Y</evaluation>
<unconditional>N</unconditional>
</hop>
<hop>
<from>testfall_import</from>
<to>finalize</to>
<from_nr>0</from_nr>
<to_nr>0</to_nr>
<enabled>Y</enabled>
<evaluation>Y</evaluation>
<unconditional>N</unconditional>
</hop>
</hops>
<notepads>
<notepad>
<note>TODO: Parameter userid aus Maskenfeld</note>
<xloc>472</xloc>
<yloc>234</yloc>
<width>273</width>
<heigth>27</heigth>
<fontname/>
<fontsize>-1</fontsize>
<fontbold>N</fontbold>
<fontitalic>N</fontitalic>
<fontcolorred>0</fontcolorred>
<fontcolorgreen>0</fontcolorgreen>
<fontcolorblue>0</fontcolorblue>
<backgroundcolorred>255</backgroundcolorred>
<backgroundcolorgreen>205</backgroundcolorgreen>
<backgroundcolorblue>112</backgroundcolorblue>
<bordercolorred>100</bordercolorred>
<bordercolorgreen>100</bordercolorgreen>
<bordercolorblue>100</bordercolorblue>
<drawshadow>Y</drawshadow>
</notepad>
</notepads>
</job>

2857
src-modules/module/qa/etl/testfall_import/testfall_import.ktr

File diff suppressed because it is too large Load Diff

127
src-modules/module/qa/etl/testfall_import/testfall_import.sql

@ -0,0 +1,127 @@
create temp table tmp_mask_field_sel(
uniquename varchar(255),
mask_execution_id INTEGER ,
felderinfo_id INTEGER ,
field_value VARCHAR(255) ,
is_active smallint default 1 not null
)
;
create temp table tmp_mask_execution_assert(
uniquename varchar(255),
mask_execution_id INTEGER ,
rownr INTEGER ,
colnr INTEGER ,
result_value_min FLOAT ,
result_value_max FLOAT ,
is_active smallint default 1 not null,
caption varchar(255)
)
;
update qa_mask_execution set userinfo_id=${userid}
where uniquename || '_' || systeminfo_id in (
select distinct W.testfall_schluessel || '_' || W.systeminfo_id
from tmp_testfall_import_feldwerte W);
insert into tmp_mask_field_sel(uniquename ,
mask_execution_id ,
felderinfo_id ,
field_value)
select W.testfall_schluessel,
Q.tid,
F.tid,
W.feldwert
from qa_mask_execution Q, tmp_testfall_import_feldwerte W, tmp_testfall_import_felder E, felderinfo F, masken_felder_bez M
where Q.uniquename=W.testfall_schluessel
and Q.systeminfo_id=W.systeminfo_id
and E.feldnr=W.feldnr
and M.felderinfo_id=F.tid
and M.maskeninfo_id=W.maskeninfo_id
and E.feldname=F.name;
insert into tmp_mask_execution_assert(
mask_execution_id,
-- search_string,
result_value_min,
result_value_max,
is_active,
rownr,
colnr,
caption)
select Q.tid as mask_execution_id,
-- search_string,
--E.testfall_schluessel,
result_value_min,
result_value_max,
1 as is_active,
rownr,
colnr,
caption
from qa_mask_execution Q, tmp_testfall_import_erg E
where Q.uniquename=E.testfall_schluessel
and Q.systeminfo_id=E.systeminfo_id;
--löschen:
delete from qa_mask_execution_assert_result
where mask_execution_assert_id in (select A.tid
from qa_mask_execution_assert A
where A.mask_execution_id in (select distinct
T.mask_execution_id from tmp_mask_execution_assert T));
delete from qa_mask_execution_assert
where mask_execution_id in (select distinct
Q.tid from qa_mask_execution Q, tmp_testfall_import_feldwerte W
where W.testfall_schluessel=Q.uniquename
and W.systeminfo_id =Q.systeminfo_id
);
delete from qa_mask_field_sel
where mask_execution_id in (select distinct
T.mask_execution_id from tmp_mask_field_sel T)
;
--nun einfügen:
insert into qa_mask_field_sel(
mask_execution_id ,
felderinfo_id ,
field_value)
select
mask_execution_id ,
felderinfo_id ,
field_value
from tmp_mask_field_sel;
insert into qa_mask_execution_assert(
mask_execution_id,
-- search_string,
result_value_min,
result_value_max,
is_active,
rownr,
colnr,
caption)
select
mask_execution_id,
-- search_string,
result_value_min,
result_value_max,
1 as is_active,
rownr,
colnr,
caption
from tmp_mask_execution_assert;
drop table tmp_mask_field_sel;
drop table tmp_mask_execution_assert;
drop table tmp_testfall_import_felder;
drop table tmp_testfall_import_feldwerte;
drop table tmp_testfall_import_erg;

559
src-modules/module/qa/etl/testfall_import/testfall_import_xml.kjb

@ -0,0 +1,559 @@
<?xml version="1.0" encoding="UTF-8"?><job>
<name>testfall_import_xml</name>
<description/>
<extended_description/>
<job_version/>
<job_status>0</job_status>
<directory>/</directory>
<created_user>-</created_user>
<created_date>2020/02/23 21:14:53.737</created_date>
<modified_user>-</modified_user>
<modified_date>2020/02/23 21:14:53.737</modified_date>
<parameters>
<parameter>
<name>PATH_TO_UPLOADFILE</name>
<default_value>/home/superx/devel_module/lm/todo/ude_hawmodell_chem_bsc.xml</default_value>
<description/>
</parameter>
<parameter>
<name>systeminfo_id</name>
<default_value>300</default_value>
<description/>
</parameter>
<parameter>
<name>testfall_schluessel</name>
<default_value>ude_hawmodell_chem_bsc</default_value>
<description/>
</parameter>
<parameter>
<name>userid</name>
<default_value>803</default_value>
<description/>
</parameter>
</parameters>
<slaveservers/>
<job-log-table>
<connection/>
<schema/>
<table/>
<size_limit_lines/>
<interval/>
<timeout_days/>
<field>
<id>ID_JOB</id>
<enabled>Y</enabled>
<name>ID_JOB</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>JOBNAME</id>
<enabled>Y</enabled>
<name>JOBNAME</name>
</field>
<field>
<id>STATUS</id>
<enabled>Y</enabled>
<name>STATUS</name>
</field>
<field>
<id>LINES_READ</id>
<enabled>Y</enabled>
<name>LINES_READ</name>
</field>
<field>
<id>LINES_WRITTEN</id>
<enabled>Y</enabled>
<name>LINES_WRITTEN</name>
</field>
<field>
<id>LINES_UPDATED</id>
<enabled>Y</enabled>
<name>LINES_UPDATED</name>
</field>
<field>
<id>LINES_INPUT</id>
<enabled>Y</enabled>
<name>LINES_INPUT</name>
</field>
<field>
<id>LINES_OUTPUT</id>
<enabled>Y</enabled>
<name>LINES_OUTPUT</name>
</field>
<field>
<id>LINES_REJECTED</id>
<enabled>Y</enabled>
<name>LINES_REJECTED</name>
</field>
<field>
<id>ERRORS</id>
<enabled>Y</enabled>
<name>ERRORS</name>
</field>
<field>
<id>STARTDATE</id>
<enabled>Y</enabled>
<name>STARTDATE</name>
</field>
<field>
<id>ENDDATE</id>
<enabled>Y</enabled>
<name>ENDDATE</name>
</field>
<field>
<id>LOGDATE</id>
<enabled>Y</enabled>
<name>LOGDATE</name>
</field>
<field>
<id>DEPDATE</id>
<enabled>Y</enabled>
<name>DEPDATE</name>
</field>
<field>
<id>REPLAYDATE</id>
<enabled>Y</enabled>
<name>REPLAYDATE</name>
</field>
<field>
<id>LOG_FIELD</id>
<enabled>Y</enabled>
<name>LOG_FIELD</name>
</field>
<field>
<id>EXECUTING_SERVER</id>
<enabled>N</enabled>
<name>EXECUTING_SERVER</name>
</field>
<field>
<id>EXECUTING_USER</id>
<enabled>N</enabled>
<name>EXECUTING_USER</name>
</field>
<field>
<id>START_JOB_ENTRY</id>
<enabled>N</enabled>
<name>START_JOB_ENTRY</name>
</field>
<field>
<id>CLIENT</id>
<enabled>N</enabled>
<name>CLIENT</name>
</field>
</job-log-table>
<jobentry-log-table>
<connection/>
<schema/>
<table/>
<timeout_days/>
<field>
<id>ID_BATCH</id>
<enabled>Y</enabled>
<name>ID_BATCH</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>LOG_DATE</id>
<enabled>Y</enabled>
<name>LOG_DATE</name>
</field>
<field>
<id>JOBNAME</id>
<enabled>Y</enabled>
<name>TRANSNAME</name>
</field>
<field>
<id>JOBENTRYNAME</id>
<enabled>Y</enabled>
<name>STEPNAME</name>
</field>
<field>
<id>LINES_READ</id>
<enabled>Y</enabled>
<name>LINES_READ</name>
</field>
<field>
<id>LINES_WRITTEN</id>
<enabled>Y</enabled>
<name>LINES_WRITTEN</name>
</field>
<field>
<id>LINES_UPDATED</id>
<enabled>Y</enabled>
<name>LINES_UPDATED</name>
</field>
<field>
<id>LINES_INPUT</id>
<enabled>Y</enabled>
<name>LINES_INPUT</name>
</field>
<field>
<id>LINES_OUTPUT</id>
<enabled>Y</enabled>
<name>LINES_OUTPUT</name>
</field>
<field>
<id>LINES_REJECTED</id>
<enabled>Y</enabled>
<name>LINES_REJECTED</name>
</field>
<field>
<id>ERRORS</id>
<enabled>Y</enabled>
<name>ERRORS</name>
</field>
<field>
<id>RESULT</id>
<enabled>Y</enabled>
<name>RESULT</name>
</field>
<field>
<id>NR_RESULT_ROWS</id>
<enabled>Y</enabled>
<name>NR_RESULT_ROWS</name>
</field>
<field>
<id>NR_RESULT_FILES</id>
<enabled>Y</enabled>
<name>NR_RESULT_FILES</name>
</field>
<field>
<id>LOG_FIELD</id>
<enabled>N</enabled>
<name>LOG_FIELD</name>
</field>
<field>
<id>COPY_NR</id>
<enabled>N</enabled>
<name>COPY_NR</name>
</field>
</jobentry-log-table>
<channel-log-table>
<connection/>
<schema/>
<table/>
<timeout_days/>
<field>
<id>ID_BATCH</id>
<enabled>Y</enabled>
<name>ID_BATCH</name>
</field>
<field>
<id>CHANNEL_ID</id>
<enabled>Y</enabled>
<name>CHANNEL_ID</name>
</field>
<field>
<id>LOG_DATE</id>
<enabled>Y</enabled>
<name>LOG_DATE</name>
</field>
<field>
<id>LOGGING_OBJECT_TYPE</id>
<enabled>Y</enabled>
<name>LOGGING_OBJECT_TYPE</name>
</field>
<field>
<id>OBJECT_NAME</id>
<enabled>Y</enabled>
<name>OBJECT_NAME</name>
</field>
<field>
<id>OBJECT_COPY</id>
<enabled>Y</enabled>
<name>OBJECT_COPY</name>
</field>
<field>
<id>REPOSITORY_DIRECTORY</id>
<enabled>Y</enabled>
<name>REPOSITORY_DIRECTORY</name>
</field>
<field>
<id>FILENAME</id>
<enabled>Y</enabled>
<name>FILENAME</name>
</field>
<field>
<id>OBJECT_ID</id>
<enabled>Y</enabled>
<name>OBJECT_ID</name>
</field>
<field>
<id>OBJECT_REVISION</id>
<enabled>Y</enabled>
<name>OBJECT_REVISION</name>
</field>
<field>
<id>PARENT_CHANNEL_ID</id>
<enabled>Y</enabled>
<name>PARENT_CHANNEL_ID</name>
</field>
<field>
<id>ROOT_CHANNEL_ID</id>
<enabled>Y</enabled>
<name>ROOT_CHANNEL_ID</name>
</field>
</channel-log-table>
<pass_batchid>N</pass_batchid>
<shared_objects_file/>
<entries>
<entry>
<name>START</name>
<description/>
<type>SPECIAL</type>
<start>Y</start>
<dummy>N</dummy>
<repeat>N</repeat>
<schedulerType>0</schedulerType>
<intervalSeconds>0</intervalSeconds>
<intervalMinutes>60</intervalMinutes>
<hour>12</hour>
<minutes>0</minutes>
<weekDay>1</weekDay>
<DayOfMonth>1</DayOfMonth>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>112</xloc>
<yloc>80</yloc>
</entry>
<entry>
<name>testfall_import_xml</name>
<description/>
<type>TRANS</type>
<specification_method>filename</specification_method>
<trans_object_id/>
<filename>${Internal.Job.Filename.Directory}/testfall_import_xml.ktr</filename>
<transname/>
<arg_from_previous>N</arg_from_previous>
<params_from_previous>N</params_from_previous>
<exec_per_row>N</exec_per_row>
<clear_rows>N</clear_rows>
<clear_files>N</clear_files>
<set_logfile>N</set_logfile>
<logfile/>
<logext/>
<add_date>N</add_date>
<add_time>N</add_time>
<loglevel>Basic</loglevel>
<cluster>N</cluster>
<slave_server_name/>
<set_append_logfile>N</set_append_logfile>
<wait_until_finished>Y</wait_until_finished>
<follow_abort_remote>N</follow_abort_remote>
<create_parent_folder>N</create_parent_folder>
<logging_remote_work>N</logging_remote_work>
<parameters>
<pass_all_parameters>Y</pass_all_parameters>
</parameters>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>448</xloc>
<yloc>80</yloc>
</entry>
<entry>
<name>create table tmp_testfall_import</name>
<description/>
<type>SQL</type>
<sql>
drop table if exists tmp_testfall_import_felder;
drop table if exists tmp_testfall_import_feldwerte;
drop table if exists tmp_testfall_import_erg;
create table tmp_testfall_import_felder(
testfall_schluessel varchar(255),
feldnr integer,
feldname varchar(255)
);
create table tmp_testfall_import_feldwerte(
systeminfo_id integer,
testfall_schluessel varchar(255),
maskeninfo_id integer,
feldnr integer,
feldwert varchar(255)
);
create table tmp_testfall_import_erg(
testfall_schluessel varchar(255),
systeminfo_id integer,
mask_execution_id INTEGER ,
rownr INTEGER ,
colnr INTEGER ,
result_value_min FLOAT ,
result_value_max FLOAT ,
is_active smallint default 1 not null,
caption varchar(255)
);
delete from qa_mask_execution_assert
where mask_execution_id in (select distinct
E.tid from qa_mask_execution E
where E.uniquename='${testfall_schluessel}'
and E.systeminfo_id=${systeminfo_id}
);
delete from qa_mask_field_sel
where mask_execution_id in (select distinct
E.tid from qa_mask_execution E
where E.uniquename='${testfall_schluessel}'
and E.systeminfo_id=${systeminfo_id})
;
delete from qa_mask_execution
where uniquename='${testfall_schluessel}'
and systeminfo_id=${systeminfo_id};
insert into qa_mask_execution(
name,
userinfo_id,
-- maskeninfo_id,
is_active,
-- stylesheet_id,
-- contenttype,
-- output_filename,
systeminfo_id,
uniquename)
select '${testfall_schluessel}' as name,
${userid},
1 as is_active,
${systeminfo_id},
'${testfall_schluessel}'
from xdummy;
</sql>
<useVariableSubstitution>T</useVariableSubstitution>
<sqlfromfile>F</sqlfromfile>
<sqlfilename/>
<sendOneStatement>F</sendOneStatement>
<connection>eduetl</connection>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>256</xloc>
<yloc>80</yloc>
</entry>
<entry>
<name>finalize</name>
<description/>
<type>SQL</type>
<sql/>
<useVariableSubstitution>T</useVariableSubstitution>
<sqlfromfile>T</sqlfromfile>
<sqlfilename>${Internal.Job.Filename.Directory}/testfall_import.sql</sqlfilename>
<sendOneStatement>F</sendOneStatement>
<connection>eduetl</connection>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>768</xloc>
<yloc>80</yloc>
</entry>
<entry>
<name>set_metadata</name>
<description/>
<type>SQL</type>
<sql>update tmp_testfall_import_felder set testfall_schluessel='${testfall_schluessel}';
update tmp_testfall_import_feldwerte set testfall_schluessel='${testfall_schluessel}',
systeminfo_id=${systeminfo_id};
update tmp_testfall_import_erg set testfall_schluessel='${testfall_schluessel}',
systeminfo_id=${systeminfo_id};
update tmp_testfall_import_erg set mask_execution_id=(select E.tid
from qa_mask_execution E
where E.uniquename='${testfall_schluessel}'
and systeminfo_id=${systeminfo_id});
update qa_mask_execution E set maskeninfo_id=(select distinct F.maskeninfo_id
from tmp_testfall_import_feldwerte F
)
where uniquename='${testfall_schluessel}'
and systeminfo_id=${systeminfo_id};
update tmp_testfall_import_erg set colnr=colnr+1;
update tmp_testfall_import_erg set rownr=rownr+1;</sql>
<useVariableSubstitution>T</useVariableSubstitution>
<sqlfromfile>F</sqlfromfile>
<sqlfilename/>
<sendOneStatement>F</sendOneStatement>
<connection>eduetl</connection>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>592</xloc>
<yloc>80</yloc>
</entry>
</entries>
<hops>
<hop>
<from>START</from>
<to>create table tmp_testfall_import</to>
<from_nr>0</from_nr>
<to_nr>0</to_nr>
<enabled>Y</enabled>
<evaluation>Y</evaluation>
<unconditional>Y</unconditional>
</hop>
<hop>
<from>create table tmp_testfall_import</from>
<to>testfall_import_xml</to>
<from_nr>0</from_nr>
<to_nr>0</to_nr>
<enabled>Y</enabled>
<evaluation>Y</evaluation>
<unconditional>N</unconditional>
</hop>
<hop>
<from>testfall_import_xml</from>
<to>set_metadata</to>
<from_nr>0</from_nr>
<to_nr>0</to_nr>
<enabled>Y</enabled>
<evaluation>Y</evaluation>
<unconditional>N</unconditional>
</hop>
<hop>
<from>set_metadata</from>
<to>finalize</to>
<from_nr>0</from_nr>
<to_nr>0</to_nr>
<enabled>Y</enabled>
<evaluation>Y</evaluation>
<unconditional>N</unconditional>
</hop>
</hops>
<notepads>
<notepad>
<note>TODO: Parameter userid aus Maskenfeld</note>
<xloc>472</xloc>
<yloc>234</yloc>
<width>273</width>
<heigth>27</heigth>
<fontname/>
<fontsize>-1</fontsize>
<fontbold>N</fontbold>
<fontitalic>N</fontitalic>
<fontcolorred>0</fontcolorred>
<fontcolorgreen>0</fontcolorgreen>
<fontcolorblue>0</fontcolorblue>
<backgroundcolorred>255</backgroundcolorred>
<backgroundcolorgreen>205</backgroundcolorgreen>
<backgroundcolorblue>112</backgroundcolorblue>
<bordercolorred>100</bordercolorred>
<bordercolorgreen>100</bordercolorgreen>
<bordercolorblue>100</bordercolorblue>
<drawshadow>Y</drawshadow>
</notepad>
</notepads>
</job>

1132
src-modules/module/qa/etl/testfall_import/testfall_import_xml.ktr

File diff suppressed because it is too large Load Diff

4
src-modules/module/qa/masken/37000_felderinfo.unl

@ -0,0 +1,4 @@
37000^Benutzer/in^50^0^0^150^200^1^integer^200^0^1^<<SQL>> select tid,nvl(name,benutzer) from userinfo order by 2;^^^
37001^Maske^0^0^0^150^80^1^integer^200^0^1^<<SQL>> select tid,name from maskeninfo order by 2;^^^
37003^Name^20^0^0^150^150^1^sql^50^0^0^^^^
37004^Komponente^30^0^0^150^200^1^integer^200^0^1^<<SQL>> select tid,name from systeminfo order by 2;^^^

1
src-modules/module/qa/masken/37000_maske_system_bez.unl

@ -0,0 +1 @@
37000^260^

4
src-modules/module/qa/masken/37000_masken_felder_bez.unl

@ -0,0 +1,4 @@
37000^37000^
37000^37001^
37000^37003^
37000^37004^

140
src-modules/module/qa/masken/37000_maskeninfo.unl

@ -0,0 +1,140 @@
37000^Masken-Ausführung planen^--Autor: D. Quathamer\
--Datum: 2.8.2019\
--freemarker template\
create temp table tmp_ergebnis (\
ord smallint,\
tid integer, \
userinfo_id integer,\
benutzer varchar(255),\
name varchar(255),\
uniquename varchar(255),\
maskeninfo_id integer,\
maskeninfo_name varchar(255),\
is_active smallint,\
stylesheet_id integer ,\
stylesheet_str varchar(255),\
contenttype varchar(255),\
output_filename varchar(255),\
letzter_lauf date,\
nextedit varchar(255)\
);\
insert into tmp_ergebnis (ord,\
tid,\
userinfo_id, \
benutzer,\
name,\
uniquename,\
maskeninfo_id,\
maskeninfo_name,\
is_active,\
stylesheet_id,\
contenttype,\
output_filename,\
nextedit) \
select 1 as ord,\
E.tid,\
E.userinfo_id,\
nvl(U.name,U.benutzer),\
E.name,\
E.uniquename,\
E.maskeninfo_id,\
M.name,\
E.is_active,\
E.stylesheet_id,\
E.contenttype,\
E.output_filename,\
('../edit/qa/qa_mask_execution_edit.jsp|tid=' || E.tid)::varchar(255)\
FROM maskeninfo M, qa_mask_execution E left outer join userinfo U\
on (U.tid=E.userinfo_id)\
where M.tid=E.maskeninfo_id\
/* and E.userinfo_id=<<Benutzer/in>> */\
/* and E.name like '%<<Name>>%' */\
/* and E.systeminfo_id=<<Komponente>> */\
/* and E.maskeninfo_id=<<Maske>> */\
;\
\
update tmp_ergebnis set stylesheet_str=(select S.filename\
from sx_stylesheets S\
where S.tid=tmp_ergebnis.stylesheet_id);\
\
update tmp_ergebnis set letzter_lauf=(select max(date(execution_start))\
from qa_mask_execution_result R\
where R.mask_execution_id=tmp_ergebnis.tid);\
\
\
-- update tmp_ergebnis set nextedit=trim(nextedit) || trim('&rs=' || \
--sp_get_keylist_str(<<Gruppe>>::varchar(200),'groupinfo_id'::varchar(200),'user_group_bez'::varchar(200),'userinfo_id'::varchar(200),null,null); ) \
/* update tmp_ergebnis set nextedit=nextedit || '&name=<<Name>>'; */ \
\
insert into tmp_ergebnis (ord,\
--tid,userinfo_id, benutzer,\
name, --maskeninfo_id,\
--maskeninfo_name,\
-- is_active,\
-- stylesheet_id,\
-- contenttype,\
-- output_filename,\
-- letzter_lauf,\
nextedit) \
select 10, --ord\
'Neuer Eintrag',\
nvl(('../edit/qa/qa_mask_execution_edit.jsp|tid=' || max(tid)+1)::varchar(255),'../edit/qa/qa_mask_execution_edit.jsp'::varchar(255))\
from qa_mask_execution\
--where 0=(select count(*) from qa_mask_execution)\
;\
\
<@selectintotmp \
select="name,\
uniquename,\
maskeninfo_name,\
benutzer,\
is_active,\
letzter_lauf,\
nextedit,\
ord"\
source="tmp_ergebnis"\
target="tmp_ergebnis2">\
order by ord,name ,uniquename,maskeninfo_name\
</@selectintotmp>\
<@informixnolog/>;\
\
drop table tmp_ergebnis;\
\
select \
name,\
uniquename,\
maskeninfo_name,\
benutzer,\
--stylesheet_str,\
--contenttype,\
--output_filename,\
is_active,\
letzter_lauf,\
nextedit \
from tmp_ergebnis2\
;^XIL List\
drop_and_delete movable_columns sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=2\
min_heading_height=35\
Column CID=0 heading_text="Name" center_heading\
row_selectable col_selectable heading_platform readonly\
width=50 text_size=100\
Column CID=0 heading_text="Schlüssel" center_heading\
row_selectable col_selectable heading_platform readonly\
width=50 text_size=100\
Column CID=1 heading_text="Maske" center_heading\
row_selectable col_selectable heading_platform readonly\
width=150 text_size=200\
Column CID=1 heading_text="Benutzer/in " center_heading\
row_selectable col_selectable heading_platform readonly\
width=30 text_size=200\
Column CID=1 heading_text="Aktiv" center_heading\
row_selectable col_selectable heading_platform readonly\
width=5 text_size=200\
Column CID=1 heading_text="Letzter Lauf" center_heading\
row_selectable col_selectable heading_platform readonly\
width=5 text_size=200\
Column CID=1 heading_text="Bearbeiten" center_heading\
row_selectable col_selectable heading_platform readonly\
width=5 text_size=200\
@@@^^^Geplante Ausführungsjobs für Masken und deren Export ins jew. Format^drop table tmp_ergebnis2;^^1^440^360^0^1^^

1
src-modules/module/qa/masken/37000_sachgeb_maske_bez.unl

@ -0,0 +1 @@
261^37000^

7
src-modules/module/qa/masken/37020_felderinfo.unl

@ -0,0 +1,7 @@
37020^Benutzer/in^60^0^0^150^200^1^integer^200^0^1^<<SQL>> select tid,nvl(name,benutzer) from userinfo order by 2;^^^
37021^Ausführungs-Status^0^0^0^150^80^1^integer^200^0^1^<<SQL>> select 0,'Erfolgreich' from xdummy union select 1,'Warnung' from xdummy union select 2,'Fehler' from xdummy order by 1^^^
37022^Maske^20^0^0^150^80^1^integer^200^0^1^<<SQL>> select tid,name from maskeninfo /*where tid in (select S.maskeninfo_id from maske_system_bez S where S.systeminfo_id=<<Komponente>>) */ order by 2;^^^
37023^Testfall-Name (Stichwort)^50^0^0^150^150^1^sql^50^0^0^^^^
37024^Komponente^10^0^0^150^200^1^integer^200^0^1^<<SQL>> select tid,name from systeminfo order by 2;^^^
37025^Nur aktive^30^0^0^150^80^1^integer^200^0^1^<<SQL>> select 1,'Ja' from xdummy union select 0,'nein' from xdummy order by 1 desc;^^<<SQL>>select 1,'Ja' from xdummy^
37026^Ab Datum^40^0^0^150^80^1^date^200^0^0^ ^^<<SQL>> select today()-3 from xdummy^

1
src-modules/module/qa/masken/37020_maske_system_bez.unl

@ -0,0 +1 @@
37020^260^

7
src-modules/module/qa/masken/37020_masken_felder_bez.unl

@ -0,0 +1,7 @@
37020^37020^
37020^37021^
37020^37022^
37020^37023^
37020^37024^
37020^37025^
37020^37026^

151
src-modules/module/qa/masken/37020_maskeninfo.unl

@ -0,0 +1,151 @@
37020^Masken-Ausführung Protokoll^--Autor: D. Quathamer\
--Datum: 2.8.2019\
--Freemarker Template\
<#include "SQL_lingua_franca"/>\
<#include "SuperX_general"/>\
\
\
<#assign resultValueNative="result_value::float" />\
<#if SQLdialect='Postgres'>\
<#assign resultValueNative="round(decval(replace(result_value,'.',',')),0) " />\
</#if>\
\
\
<@selectintotmp \
select="R.tid,\
R.mask_execution_id,\
R.execution_start,\
R.execution_end,\
R.result_code,\
null::integer as result_status,\
''::char(255) as result_status_str,\
A.result_value,\
E.name as execution_name,\
E.systeminfo_id,\
''::char(255) as systeminfo_id_str,\
E.maskeninfo_id,\
''::char(255) as maskeninfo_id_str,\
A.mask_execution_assert_id,\
null::integer as result_value_min,\
null::integer as result_value_max,\
null::varchar as assert_caption\
"\
source="qa_mask_execution E, qa_mask_execution_result R left outer join qa_mask_execution_assert_result A on (A.mask_execution_result_id=R.tid)"\
target="tmp_qa_mask_execution">\
-- nested in selectinto muss die where Bedingung u. ggfs. group by etc kommen\
where \
E.tid=R.mask_execution_id\
/* and E.is_active=<<Nur aktive>> */\
/* and E.maskeninfo_id=<<Maske>> */\
/* and E.userinfo_id=<<Benutzer/in>> */\
/* and E.systeminfo_id=<<Komponente>> */\
/* and name ilike '%<<Testfall-Name (Stichwort)>>%' */\
/* and date(R.execution_start) >= date_val(<<Ab Datum>>) */\
</@selectintotmp>\
<@informixnolog/>;\
\
<#if SQLdialect='Postgres'>\
update tmp_qa_mask_execution set result_value_min=A.result_value_min,\
result_value_max=A.result_value_max,\
assert_caption=coalesce(A.caption,'Zeile ' || A.rownr || ' Spalte ' || A.colnr) \
from qa_mask_execution_assert A\
where A.tid=tmp_qa_mask_execution.mask_execution_assert_id;\
<#else>\
--Informix Dialekt:\
update tmp_qa_mask_execution set (result_value_min,\
result_value_max,\
assert_caption) \
= ((select \
A.result_value_min,\
A.result_value_max,\
nvl(A.caption,'Zeile ' || A.rownr || ' Spalte ' || A.colnr)\
from qa_mask_execution_assert A\
where A.tid=tmp_qa_mask_execution.mask_execution_assert_id\
))\
where tmp_qa_mask_execution.mask_execution_assert_id in (select A.tid\
from qa_mask_execution_assert A)\
;\
</#if>\
\
update tmp_qa_mask_execution set result_status=2,\
result_status_str='Fehler'\
where result_code!=0;\
\
update tmp_qa_mask_execution set result_status=0,\
result_status_str='Erfolg'\
where result_code=0\
and (\
(${resultValueNative} >= result_value_min or result_value_min is null) \
and\
(${resultValueNative} <= result_value_max or result_value_max is null) \
)\
;\
\
update tmp_qa_mask_execution set result_status=1,\
result_status_str='Warnung'\
where result_status is null;\
\
/* delete from tmp_qa_mask_execution where result_status!= <<Ausführungs-Status>> ; */\
\
\
update tmp_qa_mask_execution set systeminfo_id_str=(select name from systeminfo S\
where S.tid=tmp_qa_mask_execution.systeminfo_id);\
\
update tmp_qa_mask_execution set maskeninfo_id_str=(select name from maskeninfo M\
where M.tid=tmp_qa_mask_execution.maskeninfo_id);\
\
\
select systeminfo_id_str,\
execution_name,\
maskeninfo_id_str,\
execution_start,\
<#if SQLdialect='Postgres'>\
round(extract(second from (execution_end-execution_start))::decimal,0)::integer as dauer,\
<#else>\
execution_end-execution_start as dauer,\
</#if>\
assert_caption,\
result_value_min,\
result_value_max,\
result_value,\
result_status_str,\
('37040&Ergebnis=' || tid)::varchar(255) as nexttable\
from tmp_qa_mask_execution\
order by 1,2,3,4,5,6,7;^XIL List\
drop_and_delete movable_columns sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=2\
min_heading_height=35\
Column CID=0 heading_text="Komponente" center_heading\
row_selectable col_selectable heading_platform readonly\
width=20 text_size=100\
Column CID=1 heading_text="Testfall" center_heading\
row_selectable col_selectable heading_platform readonly\
width=50 text_size=200\
Column CID=1 heading_text="Maske" center_heading\
row_selectable col_selectable heading_platform readonly\
width=50 text_size=200\
Column CID=1 heading_text="Ausführungszeit\\nStart" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Dauer\\n(Sek.)" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Erwarteter Wert\\n(Zelle)" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Erwarteter Wert\\n(Minimum)" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Erwarteter Wert\\n(Maximum)" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Wert" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Ausführungsstatus" center_heading\
row_selectable col_selectable heading_platform readonly\
width=15 text_size=200\
Column CID=1 heading_text="Details" center_heading\
row_selectable col_selectable heading_platform readonly\
width=5 text_size=200\
@@@^^^Protokoll der Masken-Ausführung ausgeben^drop table tmp_qa_mask_execution;^^1^440^360^0^1^^

1
src-modules/module/qa/masken/37020_sachgeb_maske_bez.unl

@ -0,0 +1 @@
260^37020^

1
src-modules/module/qa/masken/37040_felderinfo.unl

@ -0,0 +1 @@
37041^Ergebnis^0^0^0^150^80^1^integer^200^0^1^<<SQL>> select tid,tid from qa_mask_execution_result order by 2^^^

1
src-modules/module/qa/masken/37040_maske_system_bez.unl

@ -0,0 +1 @@
37040^260^

1
src-modules/module/qa/masken/37040_masken_felder_bez.unl

@ -0,0 +1 @@
37040^37041^

116
src-modules/module/qa/masken/37040_maskeninfo.unl

@ -0,0 +1,116 @@
37040^Masken-Ausführung Protokoll (Detail)^--Freemarker Template\
<#include "SQL_lingua_franca"/>\
<#include "SuperX_general"/>\
\
\
<@selectintotmp \
select="R.tid,\
R.mask_execution_id,\
R.execution_start,\
R.execution_end,\
R.result_code,\
R.result_log,\
null::integer as result_status,\
''::char(255) as result_status_str,\
A.result_value,\
E.name as execution_name,\
E.systeminfo_id,\
''::char(255) as systeminfo_id_str,\
E.maskeninfo_id,\
''::char(255) as maskeninfo_id_str,\
A.mask_execution_assert_id,\
null::integer as result_value_min,\
null::integer as result_value_max\
"\
source="qa_mask_execution E, qa_mask_execution_result R left outer join qa_mask_execution_assert_result A on (A.mask_execution_result_id=R.tid)"\
target="tmp_qa_mask_execution">\
-- nested in selectinto muss die where Bedingung u. ggfs. group by etc kommen\
where \
E.tid=R.mask_execution_id\
and E.is_active=1\
/* and R.tid=<<Ergebnis>> */\
</@selectintotmp>\
<@informixnolog/>;\
\
<#if SQLdialect='Postgres'>\
update tmp_qa_mask_execution set result_value_min=A.result_value_min,\
result_value_max=A.result_value_max\
from qa_mask_execution_assert A\
where A.tid=tmp_qa_mask_execution.mask_execution_assert_id;\
<#else>\
--Informix Dialekt:\
update tmp_qa_mask_execution set (result_value_min,\
result_value_max) \
= ((select \
A.result_value_min,\
A.result_value_max\
from qa_mask_execution_assert A\
where A.tid=tmp_qa_mask_execution.mask_execution_assert_id\
))\
where tmp_qa_mask_execution.mask_execution_assert_id in (select A.tid\
from qa_mask_execution_assert A)\
;\
</#if>\
\
update tmp_qa_mask_execution set result_status=2,\
result_status_str='Fehler'\
where result_code!=0;\
\
update tmp_qa_mask_execution set result_status=0,\
result_status_str='Erfolg'\
where result_code=0\
and (\
<#if SQLdialect='Postgres'>\
decval(replace(result_value,'.',',')) \
<#else>\
--Informix Dialekt:\
result_value::float \
</#if>\
between result_value_min and result_value_max\
or result_value_min is null)\
;\
\
update tmp_qa_mask_execution set result_status=1,\
result_status_str='Warnung'\
where result_status is null;\
\
select \
execution_name,\
--maskeninfo_id_str,\
execution_start,\
execution_end,\
result_log,\
result_value_min,\
result_value_max,\
result_value,\
result_status_str\
from tmp_qa_mask_execution\
order by 1,2,3;^XIL List\
drop_and_delete movable_columns sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=2\
min_heading_height=35\
Column CID=1 heading_text="Testfall" center_heading\
row_selectable col_selectable heading_platform readonly\
width=50 text_size=200\
Column CID=1 heading_text="Ausführungszeit\\nStart" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Ausführungszeit\\nEnde" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Protokoll" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Erwarteter Wert\\n(Minimum)" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Erwarteter Wert\\n(Maximum)" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Wert" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Ausführungsstatus" center_heading\
row_selectable col_selectable heading_platform readonly\
width=15 text_size=200\
@@@^^^Detailausgabe des Protokolls einer Maskenausführung^drop table tmp_qa_mask_execution;^^1^440^360^0^1^^

1
src-modules/module/qa/masken/37040_sachgeb_maske_bez.unl

@ -0,0 +1 @@
260^37040^

17
src-modules/module/qa/masken/37060_felderinfo.unl

@ -0,0 +1,17 @@
37060^Benutzer/in^60^0^0^150^200^1^integer^200^0^1^<<SQL>> select tid,nvl(name,benutzer) from userinfo order by 2;^hidden^^
37061^Ausführungs-Status^0^0^0^150^80^1^integer^200^0^1^<<SQL>> select 0,'Erfolgreich' from xdummy union select 1,'Warnung' from xdummy order by 1^^^
37062^Aggregation des Vergleichs^20^0^0^150^80^1^integer^200^1^1^<<SQL>> select 1,'Nur Summen' from xdummy\
union select 2,'Felder' from xdummy\
--union select 3,'Matrikelnr.' from xdummy\
order by 1;^^<<SQL>> select 1,'Nur Summen' from xdummy^
37063^Testfall-Name (Stichwort)^50^0^0^150^150^1^sql^50^0^0^^ ^^
37064^Priorität^10^0^0^150^200^1^char^200^0^1^<<SQL>> select 'A','A (höchste Priorität)' from xdummy union \
select 'B','B (mittlere Priorität)' from xdummy union \
select 'C','C (niedrige Priorität)' from xdummy\
order by 1^^^
37065^Nur aktive^30^0^0^150^80^1^integer^200^0^1^<<SQL>> select 1,'Ja' from xdummy union select 0,'nein' from xdummy order by 1 desc;^hidden^<<SQL>>select 1,'Ja' from xdummy^
37066^Ab Datum^40^0^0^150^80^1^date^200^0^0^ ^hidden^<<SQL>> select today()-3 from xdummy^
37067^Profil^5^0^0^150^80^1^integer^200^1^1^<<SQL>> select tid,name from qa_tablecomp_profile where is_active=1 order by 2^^^
37068^Tabellen-Abgleiche planen^100^0^0^150^300^1^char^30^0^18^^^<<SQL>>\
--freemarker template \
<#if UserIsAdmin> select '../edit/qa/qa_tablecomp_profile_list.jsp' from xdummy ;<#else> select '../not_authorized.htm' from xdummy;</#if>^

1
src-modules/module/qa/masken/37060_maske_system_bez.unl

@ -0,0 +1 @@
37060^260^

9
src-modules/module/qa/masken/37060_masken_felder_bez.unl

@ -0,0 +1,9 @@
37060^37060^
37060^37061^
37060^37062^
37060^37063^
37060^37064^
37060^37065^
37060^37066^
37060^37067^
37060^37068^

321
src-modules/module/qa/masken/37060_maskeninfo.unl

@ -0,0 +1,321 @@
37060^Tabellen-Abgleich^--Freemarker Template\
<sqlvars>\
\
<sqlvar name="profiles" type="hashsequence">\
\
select name,\
uniquename,\
table_1,\
table_1_caption,\
table_2,\
table_2_caption,\
is_active,\
systeminfo_id\
FROM qa_tablecomp_profile \
where tid=<<Profil>> \
\
</sqlvar>\
<sqlvar name="pruefungen" type="hashsequence">\
\
select name,\
whereclause,\
is_active,\
priority,\
aggregationfield,\
aggregationfunction\
FROM qa_tablecomp_aggregation \
where qa_tablecomp_profile_id=<<Profil>> \
</sqlvar>\
<sqlvar name="fields" type="hashsequence">\
\
select name,\
priority,\
sortnr\
FROM qa_tablecomp_field \
where qa_tablecomp_profile_id=<<Profil>>\
order by sortnr\
</sqlvar> \
<sqlvar name="groupbycols" type="hashsequence">\
\
SELECT fieldname\
FROM qa_tablecomp_groupby \
where qa_tablecomp_profile_id=<<Profil>>\
\
</sqlvar> \
<sqlvar name="idcols" type="hashsequence">\
\
SELECT \
fieldname\
FROM qa_tablecomp_idcol \
where qa_tablecomp_profile_id=<<Profil>>\
\
</sqlvar> \
\
</sqlvars>\
\
\
\
<#assign prio_filter="" />\
/* <#assign prio_filter=<<Priorität>> /> */\
\
\
<#assign aggregation="<<Aggregation des Vergleichs>>" />\
\
create temp table tmp_abgleich\
(semester integer,\
prio char(1),\
ord smallint,\
pruefung varchar(255),\
comparison varchar(255),\
fieldname varchar(255),\
result_table_1 varchar(255),\
result_table_2 varchar(255),\
result_code smallint,\
result_code_str varchar(255)\
);\
\
create temp table tmp_abgleich_summen\
(semester integer,\
prio char(1),\
ord smallint,\
pruefung varchar(255),\
comparison varchar(255),\
fieldname varchar(255),\
result_table_1 varchar(255),\
result_table_2 varchar(255),\
result_code smallint\
);\
\
<#assign ord=0 />\
\
<#foreach profile in profiles>\
\
<#if aggregation=="1">\
<#foreach pruefung in pruefungen>\
<#if pruefung.priority!="P" && (pruefung.priority==prio_filter || prio_filter=="")>\
\
<#assign ord=ord+1 />\
\
\
insert into tmp_abgleich_summen\
(semester,\
prio,\
ord,\
pruefung,\
comparison,\
result_table_1,\
result_table_2\
)\
select <#foreach groupbycol in groupbycols>\
${groupbycol.fieldname},\
</#foreach>\
'${pruefung.priority}',\
${ord},\
'${pruefung.name}',\
'${pruefung.aggregationfunction}',\
${pruefung.aggregationfunction}(${pruefung.aggregationfield})::integer,\
0\
from ${profile.table_1}\
where ${pruefung.whereclause}\
group by <#foreach groupbycol in groupbycols>\
${groupbycol.fieldname},\
</#foreach>\
null::char(1)\
;\
\
insert into tmp_abgleich_summen\
(semester,\
prio,\
ord,\
pruefung,\
comparison,\
result_table_1,\
result_table_2\
)\
select <#foreach groupbycol in groupbycols>\
${groupbycol.fieldname},\
</#foreach>\
'${pruefung.priority}',\
${ord},\
'${pruefung.name}',\
'${pruefung.aggregationfunction}',\
0,\
${pruefung.aggregationfunction}(${pruefung.aggregationfield})::integer\
from ${profile.table_2}\
where ${pruefung.whereclause}\
group by <#foreach groupbycol in groupbycols>\
${groupbycol.fieldname},\
</#foreach>\
null::char(1);\
\
</#if> --vom prio-Filter\
</#foreach>\
\
insert into tmp_abgleich\
(semester,\
prio,\
ord,\
pruefung,\
comparison,\
result_table_1,\
result_table_2,\
result_code\
)\
select semester,\
prio,\
ord,\
pruefung,\
comparison,\
sum(val(result_table_1)),\
sum(val(result_table_2)),\
1\
from tmp_abgleich_summen\
--where comparison='Summe'\
group by 1,2,3,4,5;\
\
update tmp_abgleich set result_code=0\
where val(result_table_2) =val(result_table_1);\
\
\
</#if> --wenn aggregation=Summen\
\
drop table tmp_abgleich_summen;\
\
\
<#if aggregation=="2">\
<#foreach field in fields>\
<#if field.priority!="P" && (field.priority==prio_filter || prio_filter=="")>\
\
<#assign ord=ord+1 />\
\
insert into tmp_abgleich\
(semester,\
prio,\
ord,\
pruefung,\
comparison,\
fieldname,\
result_table_1,\
result_table_2,\
result_code\
)\
select <#foreach groupbycol in groupbycols>\
T1.${groupbycol.fieldname},\
</#foreach>\
'${field.priority}',\
${ord},\
'Feld-Abgleich',\
'Gleichheit',\
'${field.name}',\
T1.${field.name},\
T2.${field.name},\
(case when T1.${field.name}=T2.${field.name} then 0 \
else 1 end) as result_code\
from ${profile.table_1} T1 left outer join ${profile.table_2} T2\
on (1=1 <#foreach idcol in idcols>\
and T1.${idcol.fieldname}=T2.${idcol.fieldname}\
</#foreach>\
)\
where 1=1\
;\
\
</#if> --vom prio-Filter\
\
</#foreach>\
</#if> --wenn aggregation=Felder\
\
</#foreach> --Ende Profil-Schleife\
\
update tmp_abgleich set result_code_str='Differenz'\
where result_code!=0;\
\
update tmp_abgleich set result_code_str='Erfolg'\
where result_code=0;\
\
<#if aggregation="1">\
select ord,\
prio,\
pruefung,\
semester,\
comparison,\
result_table_1,\
result_table_2,\
result_code_str\
from tmp_abgleich\
where 1=1\
/* and <<Ausführungs-Status>>=result_code */\
order by 1;\
\
<#elseif aggregation=="2">\
select ord,prio,pruefung,\
semester,\
null::integer as matrikel_nr,\
fieldname,result_code_str,count(*)\
from tmp_abgleich\
where 1=1\
/* and <<Ausführungs-Status>>=result_code */\
group by 1,2,3,4,5,6,7\
order by 1,2,3,4;\
</#if>^--Freemarker Template\
<sqlvars>\
\
<sqlvar name="profile" type="hash">\
\
select name,\
uniquename,\
table_1,\
table_1_caption,\
table_2,\
table_2_caption,\
is_active,\
systeminfo_id\
FROM qa_tablecomp_profile \
where tid=<<Profil>> \
\
</sqlvar>\
</sqlvars>\
<#assign aggregation="<<Aggregation des Vergleichs>>" />\
XIL List\
drop_and_delete movable_columns sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=2\
min_heading_height=35\
Column CID=0 heading_text="Nr." center_heading\
row_selectable col_selectable heading_platform readonly\
width=20 text_size=100\
Column CID=1 heading_text="Priorität" center_heading\
row_selectable col_selectable heading_platform readonly\
width=50 text_size=200\
Column CID=1 heading_text="Testfall" center_heading\
row_selectable col_selectable heading_platform readonly\
width=50 text_size=200\
Column CID=1 heading_text="Semester" center_heading\
row_selectable col_selectable heading_platform readonly\
width=50 text_size=200\
<#if aggregation="1">\
Column CID=1 heading_text="Vergleich" center_heading\
row_selectable col_selectable heading_platform readonly\
width=50 text_size=200\
Column CID=1 heading_text="Wert ${profile.table_1_caption}" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Wert ${profile.table_2_caption}" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Status" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
<#elseif aggregation=="2">\
Column CID=1 heading_text="Matrikelnr." center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Feldname" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Ergebnis" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Summe" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
</#if>\
@@@^^^Generische Auswertung eines Tabellenabgleichs^drop table tmp_abgleich;^^1^440^360^0^1^^

1
src-modules/module/qa/masken/37060_sachgeb_maske_bez.unl

@ -0,0 +1 @@
260^37060^

22
src-modules/module/qa/masken/37080_felderinfo.unl

@ -0,0 +1,22 @@
37080^Modus^30^0^0^150^150^1^char^200^0^1^<<SQL>> select distinct '1','Hinzufügen' from sx_jobs where 1=1\
/* and tid=<<Job>> */\
and modus_supported=1 union \
select distinct '2','Löschen und Hinzufügen' from sx_jobs where 1=1\
/* and tid=<<Job>> */\
and modus_supported=2 order by 1^hidden^^
37081^Job^20^0^0^150^150^1^integer^200^1^1^<<SQL>> select tid,caption from sx_jobs where\
sachgebiete_id in (-1 ${UserSachgebiete} -1)\
/* and sachgebiete_id=<<Sachgebiet>> */\
and sachgebiete_id=260\
and (kenn_profil is null or kenn_profil=${K_KENN_PROFIL})\
order by 2^^<<SQL>> select min(tid) from sx_jobs where\
sachgebiete_id in (-1 ${UserSachgebiete} -1)\
/* and sachgebiete_id=<<Sachgebiet>> */\
and sachgebiete_id=260\
and (kenn_profil is null or kenn_profil=${K_KENN_PROFIL})^
37082^userid^0^0^0^100^40^1^integer^30^0^13^^^<<SQL>> select <<UserID>> from xdummy^
37083^Sachgebiet^10^0^0^150^150^1^integer^200^0^1^<<SQL>> select tid,name from sachgebiete where tid in (-1 ${UserSachgebiete} -1)order by 2^hidden^ ^
37084^Datei^40^0^0^150^150^1^char^200^1^19^^^^
37085^Sachgebietsauswahl ist optional^0^0^0^150^150^5^char^30^0^13^ ^^^
37086^dummy2^7^0^0^150^150^5^char^30^0^999^ ^^^
37087^dokettlejob^100^0^0^150^400^1^char^10^0^0^^hidden^^

1
src-modules/module/qa/masken/37080_maske_system_bez.unl

@ -0,0 +1 @@
37080^260^

8
src-modules/module/qa/masken/37080_masken_felder_bez.unl

@ -0,0 +1,8 @@
37080^37080^
37080^37081^
37080^37082^
37080^37083^
37080^37084^
37080^37085^
37080^37086^
37080^37087^

8
src-modules/module/qa/masken/37080_maskeninfo.unl

@ -0,0 +1,8 @@
37080^Testfälle hochladen^select count(*) from xdummy^XIL List\
drop_and_delete movable_columns sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=0\
min_heading_height=35\
Column CID=0 heading_text="Ergebnis" explanation="" center_heading\
row_selectable col_selectable heading_platform readonly\
width=500 text_size=500\
@@@^ ^ ^XLSX Import von Testfällen^ ^^1^440^360^0^1^^

1
src-modules/module/qa/masken/37080_sachgeb_maske_bez.unl

@ -0,0 +1 @@
261^37080^

7
src-modules/module/qa/masken/37100_felderinfo.unl

@ -0,0 +1,7 @@
37100^Benutzer/in^60^0^0^150^200^1^integer^200^0^1^<<SQL>> select tid,nvl(name,benutzer) from userinfo order by 2;^^^
37101^Ausführungs-Status^0^0^0^150^80^1^integer^200^0^1^<<SQL>> select 0,'Erfolgreich' from xdummy union select 1,'Warnung' from xdummy union select 2,'Fehler' from xdummy order by 1^^^
37102^Projekt^20^0^0^150^80^1^integer^200^0^1^<<SQL>> select tid,name from qa_project where active=1 /* and systeminfo_id=<<Komponente>> */ order by 2;^^^
37103^Testfall-Name (Stichwort)^50^0^0^150^150^1^sql^50^0^0^^^^
37104^Komponente^10^0^0^150^200^1^integer^200^0^1^<<SQL>> select tid,name from systeminfo order by 2;^^^
37105^Nur aktive^30^0^0^150^80^1^integer^200^0^1^<<SQL>> select 1,'Ja' from xdummy union select 0,'nein' from xdummy order by 1 desc;^^<<SQL>>select 1,'Ja' from xdummy^
37106^Ab Datum^40^0^0^150^80^1^date^200^0^0^ ^^<<SQL>> select today()-3 from xdummy^

1
src-modules/module/qa/masken/37100_maske_system_bez.unl

@ -0,0 +1 @@
37100^260^

7
src-modules/module/qa/masken/37100_masken_felder_bez.unl

@ -0,0 +1,7 @@
37100^37100^
37100^37101^
37100^37102^
37100^37103^
37100^37104^
37100^37105^
37100^37106^

115
src-modules/module/qa/masken/37100_maskeninfo.unl

@ -0,0 +1,115 @@
37100^Datenbank-Tests Protokoll^--Autor: D. Quathamer\
--Datum: 2.8.2019\
--Freemarker Template\
<#include "SQL_lingua_franca"/>\
<#include "SuperX_general"/>\
\
\
<#assign resultValueNative="result_value::float" />\
<#if SQLdialect='Postgres'>\
<#assign resultValueNative="round(decval(replace(result_value,'.',',')),0) " />\
</#if>\
\
\
<@selectintotmp \
select="\
T.tid,\
T.name,\
T.uniquename,\
R.execution_start,\
R.execution_end,\
R.result_code,\
null::integer as result_status,\
''::char(255) as result_status_str,\
R.result_value,\
P.systeminfo_id,\
''::char(255) as systeminfo_id_str,\
A.tid as qa_dbtest_assertion_id,\
A.def_col_caption,\
A.def_col_name,\
A.def_col_value\
"\
source="qa_project P,qa_dbtest T, qa_dbtest_assertion A left outer join qa_dbtest_result R on (R.dbtest_assertion_id=A.tid /* and date(R.execution_start) >= date_val(<<Ab Datum>>) */)"\
target="tmp_qa_dbtest">\
-- nested in selectinto muss die where Bedingung u. ggfs. group by etc kommen\
where \
P.tid=T.project_id\
and T.tid=A.dbtest_id\
/* and T.active=<<Nur aktive>> */\
/* and P.tid=<<Projekt>> */\
/* and E.userinfo_id=<<Benutzer/in>> */\
/* and P.systeminfo_id=<<Komponente>> */\
/* and T.name ilike '%<<Testfall-Name (Stichwort)>>%' */\
</@selectintotmp>\
<@informixnolog/>;\
\
\
update tmp_qa_dbtest set result_status=2,\
result_status_str='Fehler'\
where result_code!=0;\
\
update tmp_qa_dbtest set result_status=0,\
result_status_str='Erfolg'\
where result_code=0\
;\
\
/* delete from tmp_qa_dbtest where result_status!= <<Ausführungs-Status>> ; */\
\
\
update tmp_qa_dbtest set systeminfo_id_str=(select name from systeminfo S\
where S.tid=tmp_qa_dbtest.systeminfo_id);\
\
select systeminfo_id_str,\
name,\
uniquename,\
def_col_caption,\
execution_start,\
<#if SQLdialect='Postgres'>\
round(extract(second from (execution_end-execution_start))::decimal,0)::integer as dauer,\
<#else>\
execution_end-execution_start as dauer,\
</#if>\
def_col_caption,\
def_col_name,\
def_col_value,\
result_value,\
result_status_str\
from tmp_qa_dbtest\
order by 1,2,3,4,5,6,7;^XIL List\
drop_and_delete movable_columns sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=2\
min_heading_height=35\
Column CID=0 heading_text="Komponente" center_heading\
row_selectable col_selectable heading_platform readonly\
width=20 text_size=100\
Column CID=1 heading_text="Testfall" center_heading\
row_selectable col_selectable heading_platform readonly\
width=50 text_size=200\
Column CID=1 heading_text="Testfall\\nSchlüssel" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Annahme" center_heading\
row_selectable col_selectable heading_platform readonly\
width=50 text_size=200\
Column CID=1 heading_text="Ausführungszeit\\nStart" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Dauer\\n(Sek.)" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Erwarteter Wert\\n(Name)" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Erwarteter Wert\\n(Spalte)" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Erwarteter Wert" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Gefundener Wert" center_heading\
row_selectable col_selectable heading_platform readonly\
width=10 text_size=200\
Column CID=1 heading_text="Ausführungsstatus" center_heading\
row_selectable col_selectable heading_platform readonly\
width=15 text_size=200\
@@@^^^Protokoll der Datenbanktest-Ausführung ausgeben^drop table tmp_qa_dbtest;^^1^440^360^0^1^^

1
src-modules/module/qa/masken/37100_sachgeb_maske_bez.unl

@ -0,0 +1 @@
260^37100^

208
src-modules/module/qa/schluesseltabellen/etl_step_fuellen.sql

@ -0,0 +1,208 @@
-- XML-generiertes SQL-Script fuer psql--von etl_step_fuellen.xsl
create temp table tmp_etl_action_loadtable(
tid INTEGER,
uniquename VARCHAR(255) ,
caption VARCHAR(255) ,
filepath VARCHAR(255) not null,
target_table VARCHAR(255) not null,
truncate_table SMALLINT ,
with_header SMALLINT default 0 ,
delimiter VARCHAR(10) default '^' ,
systeminfo_id INTEGER not null,
parent_step_uniquename varchar(255)
)
;
create temp table tmp_etl_step(
tid INTEGER,
uniquename VARCHAR(255) ,
caption VARCHAR(255) ,
systeminfo_id INTEGER not null,
step_type SMALLINT not null,
step_number SMALLINT not null,
force_continue SMALLINT,
etl_job_id INTEGER ,
parent_etl_step_id INTEGER ,
etl_action_loadtable_id INTEGER ,
parent_step_uniquename varchar(255),
parent_job_uniquename varchar(255),
logfile varchar(255)
)
;
create temp table tmp_etl_job(
tid INTEGER,
uniquename VARCHAR(255) ,
caption VARCHAR(255) ,
systeminfo_id INTEGER not null,
logfile varchar(255)
)
;
insert into tmp_etl_job(uniquename,caption,systeminfo_id,logfile)
values ('qa_main','Hauptladeroutine Qualitätssicherung',260,' L_qa_Update.log');
delete from tmp_etl_job where 0!= (select count(*) from etl_job J where J.uniquename=tmp_etl_job.uniquename
and J.systeminfo_id=tmp_etl_job.systeminfo_id);
insert into etl_job(uniquename,caption,systeminfo_id)
select uniquename,caption,systeminfo_id
from tmp_etl_job;
;
--TIDs zurückschreiben:
update tmp_etl_job set tid=(select S.tid from etl_job S
where S.uniquename=tmp_etl_job.uniquename
and S.systeminfo_id=260
);
--ETL-Schritt trans: Transformation
insert into tmp_etl_step(
uniquename ,
caption ,
systeminfo_id ,
step_type,
step_number,
force_continue,
etl_job_id ,
--parent_etl_step_id ,
--etl_action_loadtable_id ,
parent_step_uniquename,
parent_job_uniquename,
logfile)
select 'qa_trans',
'Hauptladeroutine Qualitätssicherung Ladeschritt trans',
260,
1 as step_type,
1 as step_number,
0 as force_continue,
J.tid as etl_job_id,
'' as parent_step_uniquename,
J.uniquename,
'L_qa_Transformation.log' as logfile
from etl_job J
where J.uniquename='qa_main'
and J.systeminfo_id=260;
delete from etl_step
where systeminfo_id=260
and etl_job_id in (select distinct T.etl_job_id from tmp_etl_step T);
insert into etl_step(uniquename ,
caption ,
systeminfo_id ,
step_type,
step_number,
force_continue,
etl_job_id
--parent_etl_step_id ,
--etl_action_loadtable_id
)
select uniquename ,
caption ,
systeminfo_id ,
step_type,
step_number,
force_continue,
etl_job_id
from tmp_etl_step T
where T.step_type=1;
--TIDs zurückschreiben:
update tmp_etl_step set tid=(select S.tid from etl_step S
where S.uniquename=tmp_etl_step.uniquename
and S.systeminfo_id=260
) where step_type=1;
insert into etl_step(uniquename ,
caption ,
systeminfo_id ,
step_type,
step_number,
force_continue,
etl_job_id
--parent_etl_step_id ,
--etl_action_loadtable_id
)
select uniquename ,
caption ,
systeminfo_id ,
step_type,
step_number,
force_continue,
etl_job_id
from tmp_etl_step T
where T.step_type=2;
--TIDs zurückschreiben:
update tmp_etl_step set tid=(select S.tid from etl_step S
where S.uniquename=tmp_etl_step.uniquename
and S.systeminfo_id=260
) where step_type=2;
--parent_step_id ermitteln:
update tmp_etl_step set parent_etl_step_id=(select S.tid from etl_step S
where S.uniquename=tmp_etl_step.parent_step_uniquename
) where systeminfo_id=260
and step_type=2;
update etl_step set parent_etl_step_id=(select S.parent_etl_step_id from tmp_etl_step S
where S.tid=etl_step.tid
) where systeminfo_id=260
and step_type=2;
delete from etl_action_loadtable
where systeminfo_id=260
and uniquename in (select T.uniquename from etl_action_loadtable T);
insert into etl_action_loadtable(uniquename ,
caption ,
filepath,
target_table,
truncate_table ,
with_header ,
delimiter ,
systeminfo_id)
select uniquename ,
caption ,
filepath,
target_table,
truncate_table ,
with_header ,
delimiter ,
systeminfo_id
from tmp_etl_action_loadtable;
--TIDs zurückschreiben:
update tmp_etl_action_loadtable set tid=(select S.tid from etl_action_loadtable S
where S.uniquename=tmp_etl_action_loadtable.uniquename
and S.systeminfo_id=260
);
--parent_step_id ermitteln:
update etl_step set etl_action_loadtable_id=(select S.tid from tmp_etl_action_loadtable S
where S.parent_step_uniquename=etl_step.uniquename
) where systeminfo_id=260
and step_type=2;
update etl_step set logfile='L_' || trim(uniquename) || '.log'
where logfile is null;
update etl_job set logfile='L_' || trim(uniquename) || '.log'
where logfile is null;
drop table tmp_etl_action_loadtable;
drop table tmp_etl_step;
drop table tmp_etl_job;

7
src-modules/module/qa/schluesseltabellen/qa_mask_execution_update.sql

@ -0,0 +1,7 @@
--bei Excel Upload kann userid ungültig sein, daher zur Sicherheit updaten:
update qa_mask_execution set userinfo_id=(select min(tid) from userinfo where administration=1)
where userinfo_id is null
or 0=(select count(*) from userinfo U
where U.tid=qa_mask_execution.userinfo_id);

14
src-modules/module/qa/schluesseltabellen/sachgebiete_fuellen.sql

@ -0,0 +1,14 @@
--Das Sachgebiet 261 (Qualitätssicherung Administr.) wird installiert
delete from sachgebiete where tid in (261);
insert into sachgebiete(tid,name) values (261,'Qualitätssicherung Administr.');
delete from group_sachgeb_bez where sachgebiete_id in (260,261)
and groupinfo_id in (select G.tid from groupinfo G where G.name='Administratoren' or G.name='superx') ;
insert into group_sachgeb_bez
select G.tid,260 from groupinfo G where G.name='Administratoren' or G.name='superx';
insert into group_sachgeb_bez
select G.tid,261 from groupinfo G where G.name='Administratoren' or G.name='superx';

3
src-modules/module/qa/schluesseltabellen/sachgebiete_loeschen.sql

@ -0,0 +1,3 @@
delete from sachgebiete where tid in (260,261);
delete from group_sachgeb_bez where sachgebiete_id in (260,261);
delete from user_sachgeb_bez where sachgebiete_id in (260,261);

41
src-modules/module/qa/schluesseltabellen/sx_jobs_fuellen.sql

@ -0,0 +1,41 @@
--Freemarker Template
--Achtung: Macro fügt Inhalte ein
--Bitte nur Freemarker Variablen füllen
<sqlvars>
<sqlvar name="sx_jobs_exists">select sp_table_exists('sx_jobs') from xdummy;</sqlvar>
</sqlvars>
<#assign jobs = [
{"uniquename":"testfall_import", "caption":"QA Testfälle einlesen", "filepath":"qa/etl/testfall_import/testfall_import.kjb","sachgebiete_id":260,
"kenn_profil":"","hs_nr":"","modus_supported":1,"params":"",
"check_sql":"select count(*) from qa_mask_field_sel F, qa_mask_execution E where E.tid=F.mask_execution_id and E.systeminfo_id=260"}
] />
--- Freemarker Magic
<#if sx_jobs_exists=1>
<#foreach job in jobs>
delete from sx_jobs where uniquename='${job.uniquename}';
</#foreach>
<#if SQLdialect='Postgres'>
select sp_update_sequence('sx_jobs');
</#if>
<#foreach job in jobs>
insert into sx_jobs (uniquename,caption,filepath,sachgebiete_id,kenn_profil,hs_nr,modus_supported,params
<#if SQLdialect='Postgres'>,check_sql
</#if>)
values ('${job.uniquename}','${job.caption}','${job.filepath}',${job.sachgebiete_id},<#if job.kenn_profil!="">${job.kenn_profil}<#else>null::integer</#if>,
<#if job.hs_nr!="">${job.hs_nr}<#else>null::integer</#if>,${job.modus_supported},'${job.params}'
<#if SQLdialect='Postgres'>
,'${job.check_sql}'
</#if>
);
</#foreach>
<#if SQLdialect='Postgres'>
select sp_update_sequence('sx_jobs');
</#if>
</#if>

13
superx/WEB-INF/conf/edustore/db/bin/SQL_ENV_qa.sam

@ -0,0 +1,13 @@
#Beispielumgebung für das QA-Modul:
#SUPERX_MODULE=$SUPERX_DIR/db/module
#SUPERX_ROHDATEN=rohdaten
QA_PFAD=$SUPERX_MODULE/qa; export QA_PFAD
QA_ERRORDAT=$QA_PFAD/qa_update.err; export QA_ERRORDAT
#Hier stehen die Rohdaten (im Unterverzeichnis unl)
QA_LOAD_PFAD=$QA_PFAD/$SUPERX_ROHDATEN; export QA_LOAD_PFAD
QA_ERRORMAIL=$ERRORMAIL; export QA_ERRORMAIL
QA_LOGMAIL=$LOGMAIL; export QA_LOGMAIL

70
superx/edit/qa/qa_mask_execution_assert_edit.inc

@ -0,0 +1,70 @@
<tr>
<td class="db_label">Erwartetes Ergebnis</td><td>
<table class="subform">
<db:dbform orderBy="" childField="mask_execution_id" parentField="tid" tableName="qa_mask_execution_assert" maxRows="*" captionResource="true" followUp="/edit/qa/qa_mask_execution_edit.jsp" autoUpdate="false" multipart="false" dbConnectionName="<%= mandantenid %>">
<db:header>
<tr class="subform_tr">
<th class="subform_th">Zeile Nr. </th><th class="subform_th">Spalte Nr. </th><th class="subform_th">Name</th><th class="subform_th">Erwartes Ergebnis (min)</th><th class="subform_th">Erwartes Ergebnis (max)</th><th class="subform_th">Aktiv</th>
</tr>
</db:header>
<db:body allowNew="true">
<tr class="subform_tr"><td>
<%
if(currentRow_qa_mask_execution != null && currentRow_qa_mask_execution.get("maskeninfo_id") != null && !currentRow_qa_mask_execution.get("maskeninfo_id").toString().equals("") )
{
%>
<db:textField hidden="true" fieldName="mask_execution_id" overrideValue="<%= currentRow_qa_mask_execution.get(\"tid\").toString() %>"/>
<div id="fld_field_value">
<db:textField nullFieldValue="" styleClass="clsInputStyle" size="5" fieldName="rownr"/>
</div>
<span style="display:none" connectId="fld_field_value" dojoType="tooltip">Zeilennummer</span></td>
<td>
<div id="fld_field_value1">
<db:textField nullFieldValue="" styleClass="clsInputStyle" size="5" fieldName="colnr"/>
</div>
<span style="display:none" connectId="fld_field_value1" dojoType="tooltip">Spaltennummer</span>
<%
}
else
{
out.println("Speichern Sie zunächst die Ausführung");
}
%>
</td>
<td align="left">
<div id="fld_field_value">
<db:textField nullFieldValue="" styleClass="clsInputStyle" pattern="" size="10" fieldName="caption"/>
</div>
<span style="display:none" connectId="fld_field_value" dojoType="tooltip">Erwartes Ergebnis (min)</span></td>
<td align="left">
<div id="fld_field_value">
<db:textField nullFieldValue="" styleClass="clsInputStyle" pattern="#" size="10" fieldName="result_value_min"/>
</div>
<span style="display:none" connectId="fld_field_value" dojoType="tooltip">Erwartes Ergebnis (min)</span></td>
<td align="left">
<div id="fld_field_value">
<db:textField nullFieldValue="" styleClass="clsInputStyle" pattern="#" size="10" fieldName="result_value_max"/>
</div>
<span style="display:none" connectId="fld_field_value" dojoType="tooltip">Erwartes Ergebnis (max)</span></td>
<td align="left">
<div id="fld_is_active">
<db:checkbox fieldName="is_active" value="1" checked="true"/>
</div>
<span style="display:none" connectId="fld_is_active" dojoType="tooltip">Aktiv 0/1</span></td><td class="naviBtn">
<db:updateButton styleClass="clsButtonStyle" style="height:18px" alt="button.update" src="../../images/save.svg" flavor="image" id="db_updateButton"/></td><td class="naviBtn">
<db:deleteButton confirmMessage="button.delete.confirm" styleClass="clsButtonStyle" style="height:18px" title="Datensatz l&ouml;schen" alt="button.delete" src="../../images/delete.svg" id="db_deleteButton" flavor="image"/></td>
</tr>
</db:body>
<db:footer>
<tr class="subform_tr">
<td><td class="naviBtn"><span connectId="new4" dojoType="tooltip">Neuen Datensatz erzeugen. Mit Mausklick auf diesen Button geht das Formular bzw. Unterformular in den Einf&uuml;gemodus, alle vorhandenen Datens&auml;tze werden ausgeblendet. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navNewButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.new" src="../../images/context_add.svg" id="new4" flavor="image"/></td><td class="naviBtn"><span connectId="ins4" dojoType="tooltip">Datensatz einf&uuml;gen. Wenn Sie einen neuen Datensatz erzeugt haben, k&ouml;nnen Sie diesen mit diesem Button speichern.</span>
<db:insertButton showAlways="false" style="height:18px" styleClass="clsButtonStyle" alt="Datensatz einf&uuml;gen" src="../../images/circle_tick.svg" id="ins4" flavor="image"/></td></td>
</tr>
</db:footer>
</db:dbform>
</table>
</td>
</tr>

58
superx/edit/qa/qa_mask_execution_felderinfo_edit.inc

@ -0,0 +1,58 @@
<tr>
<td class="db_label">Feld-Vorbelegung</td><td>
<table class="subform">
<db:dbform orderBy="" childField="mask_execution_id" parentField="tid" tableName="qa_mask_field_sel" maxRows="*" captionResource="true" followUp="/edit/qa/qa_mask_execution_edit.jsp" autoUpdate="false" multipart="false" dbConnectionName="<%= mandantenid %>">
<db:header>
<tr class="subform_tr">
<th class="subform_th">Feld</th><th class="subform_th">Feldwert</th><th class="subform_th">Aktiv</th>
</tr>
</db:header>
<db:body allowNew="true">
<tr class="subform_tr"><td>
<%
if(currentRow_qa_mask_execution != null && currentRow_qa_mask_execution.get("maskeninfo_id") != null && !currentRow_qa_mask_execution.get("maskeninfo_id").toString().equals("") )
{
%>
<db:textField hidden="true" fieldName="mask_execution_id" overrideValue="<%= currentRow_qa_mask_execution.get(\"tid\").toString() %>"/>
<div id="fld_felderinfo_id">
<input onblur="updateSelect(this)" style="display:none" size="10" name="key_qa_mask_field_selfelderinfo_id" class="schluesselfeld" type="text" />
<db:select id="inp_qa_mask_field_selfelderinfo_id" styleClass="clsInputStyle" onChange="updateKeyfield(this)" fieldName="felderinfo_id" customEntry=",,true">
<%
sql = "select tid, tid || '-' || name from felderinfo where tid in (select F.felderinfo_id from masken_felder_bez F where F.maskeninfo_id= "+currentRow_qa_mask_execution.get("maskeninfo_id").toString()+") order by name;";
%><db:queryData name="qa_mask_field_sel_felderinfo6" query="<%= sql %>" dbConnectionName="<%= mandantenid %>" />
</db:select>
<span style="display:none" connectId="fld_felderinfo_id" dojoType="tooltip">der Maske</span>
</div>
<%
}
else
{
out.println("Speichern Sie zunächst die Maske");
}
%>
</td><td align="left">
<div id="fld_field_value">
<db:textField nullFieldValue="" styleClass="clsInputStyle" size="40" fieldName="field_value"/>
</div>
<span style="display:none" connectId="fld_field_value" dojoType="tooltip">der Maske</span></td><td align="left">
<div id="fld_is_active">
<db:textField styleClass="clsInputStyle" onBlur="" size="6" fieldName="is_active"/>
</div>
<span style="display:none" connectId="fld_is_active" dojoType="tooltip">Aktiv 0/1</span></td><td class="naviBtn">
<db:updateButton styleClass="clsButtonStyle" style="height:18px" alt="button.update" src="../../images/save.svg" flavor="image" id="db_updateButton"/></td><td class="naviBtn">
<db:deleteButton confirmMessage="button.delete.confirm" styleClass="clsButtonStyle" style="height:18px" title="Datensatz l&ouml;schen" alt="button.delete" src="../../images/delete.svg" id="db_deleteButton" flavor="image"/></td>
</tr>
</db:body>
<db:footer>
<tr class="subform_tr">
<td><td class="naviBtn"><span connectId="new4" dojoType="tooltip">Neuen Datensatz erzeugen. Mit Mausklick auf diesen Button geht das Formular bzw. Unterformular in den Einf&uuml;gemodus, alle vorhandenen Datens&auml;tze werden ausgeblendet. Zum Einf&uuml;gen des neuen Datensatzes klicken Sie dann auf das H&auml;kchen-Symbol rechts neben bzw. unter mir.</span>
<db:navNewButton styleClass="clsButtonStyle" style="height:18px" showAlwaysInFooter="false" alt="button.nav.new" src="../../images/context_add.svg" id="new4" flavor="image"/></td><td class="naviBtn"><span connectId="ins4" dojoType="tooltip">Datensatz einf&uuml;gen. Wenn Sie einen neuen Datensatz erzeugt haben, k&ouml;nnen Sie diesen mit diesem Button speichern.</span>
<db:insertButton showAlways="false" style="height:18px" styleClass="clsButtonStyle" alt="Datensatz einf&uuml;gen" src="../../images/circle_tick.svg" id="ins4" flavor="image"/></td></td>
</tr>
</db:footer>
</db:dbform>
</table>
</td>
</tr>
Loading…
Cancel
Save