Modul Laderoutinen für SuperX
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1021 lines
29 KiB

<?xml version="1.0" encoding="UTF-8" ?>
<!-- Stylesheet zur Erzeugung verschd. Scripte des ETL-Prozesses wichtig ist Parameter type
Änderungen
24.6.04 MB blueprintprüfzeile von userid nach variant
16.4.04 MB Blueprintprüfzeile
-->
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="job"/>
<xsl:param name="modulname"/>
<xsl:param name="module_path"/>
<xsl:output method="text" name="text"/>
<xsl:variable name="unknown_id" select="999999" />
<xsl:variable name="unknown" select="Unbekannt" />
<xsl:template match="/">
<xsl:text>-- XML-generiertes SQL-Script fuer psql
--von etl_transfer.xsl
</xsl:text>
<xsl:for-each select="/module/etl/etl-step [@id=$job]">
<xsl:text>--ETL-Transfer </xsl:text><xsl:value-of select="@id" /><xsl:text>: </xsl:text><xsl:value-of select="@name" /><xsl:text>
</xsl:text>
<xsl:for-each select="etl_transfer">
<xsl:call-template name="etl_transfer">
<xsl:with-param name="uniquename" select="../@id"/>
<xsl:with-param name="name" select="../@name"/>
<xsl:with-param name="systeminfo_id" select="/module/@systeminfo_id"/>
</xsl:call-template>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template name="etl_transfer">
<xsl:param name="uniquename"/>
<xsl:param name="name"/>
<xsl:param name="systeminfo_id"/>
<xsl:call-template name="create_tmp_etl_tables" />
<!--zuerst unload:-->
<xsl:variable name="job_uniquename" select="concat('unload_',$uniquename)" />
<xsl:variable name="job_type" select="'unload'"/>
<xsl:variable name="job_logfile" select="concat('unload_',$uniquename,'.log')"/>
<xsl:call-template name="fill_job_metadata">
<xsl:with-param name="uniquename" select="$job_uniquename"/>
<xsl:with-param name="name" select="concat('Entladen ',$name)"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="logfile" select="$job_logfile"/>
</xsl:call-template>
<xsl:call-template name="etl_params_fuellen" >
<xsl:with-param name="job_uniquename" select="$job_uniquename"/>
<xsl:with-param name="job_type" select="$job_type"/>
</xsl:call-template>
<xsl:call-template name="etl_steps_fuellen" >
<xsl:with-param name="job_name" select="$job_uniquename" />
<xsl:with-param name="job_logfile" select="$job_logfile" />
<xsl:with-param name="job_type" select="$job_type"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
</xsl:call-template>
<xsl:call-template name="create_etl_step_relations" >
</xsl:call-template>
<xsl:call-template name="create_etl_step_properties" >
<xsl:with-param name="job_type" select="$job_type"/>
</xsl:call-template>
<!--dann upload:-->
<xsl:call-template name="fill_job_metadata">
<xsl:with-param name="uniquename" select="concat('upload_',$uniquename)"/>
<xsl:with-param name="name" select="concat('Hochladen ',$name)"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="logfile" select="concat('upload_',$uniquename,'.log')"/>
</xsl:call-template>
<xsl:call-template name="etl_params_fuellen" >
<xsl:with-param name="job_uniquename" select="concat('upload_',$uniquename)"/>
<xsl:with-param name="job_type" select="'upload'"/>
</xsl:call-template>
<xsl:call-template name="etl_steps_fuellen" >
<xsl:with-param name="job_name" select="concat('upload_',$uniquename)" />
<xsl:with-param name="job_logfile" select="concat('upload_',$uniquename,'.log')" />
<xsl:with-param name="job_type" select="'upload'"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
</xsl:call-template>
<xsl:call-template name="create_etl_step_relations" >
</xsl:call-template>
<xsl:call-template name="create_etl_step_properties" >
<xsl:with-param name="job_type" select="'upload'"/>
</xsl:call-template>
<!--TODO Übernahme SQL-->
<xsl:call-template name="drop_tmp_etl_tables" />
</xsl:template>
<xsl:template name="drop_tmp_load_tables">
<xsl:for-each select="etl_transfer_tables/etl_transfer_table">
<xsl:text>
drop table if exists tmp_</xsl:text><xsl:value-of select="@name" /><xsl:text>;
</xsl:text>
</xsl:for-each>
</xsl:template>
<xsl:template name="create_tmp_etl_tables">
<xsl:text>
create temp table tmp_etl_step(
tid INTEGER,
uniquename VARCHAR(255) ,
caption VARCHAR(255) ,
systeminfo_id INTEGER not null,
step_type INTEGER,
step_type_uniquename VARCHAR(255),
sortnr SMALLINT not null,
force_continue SMALLINT,
etl_job_id INTEGER ,
parent_step_id INTEGER ,
parent_step_uniquename varchar(255),
parent_job_uniquename varchar(255),
logfile varchar(255),
custom_step smallint,
already_exists smallint
)
;
create temp table tmp_etl_job(
tid INTEGER,
uniquename VARCHAR(255) ,
caption VARCHAR(255) ,
systeminfo_id INTEGER not null,
logfile varchar(255),
already_exists smallint,
custom_job smallint
)
;
create temp table tmp_etl_job_param(
tid SERIAL not null,
etl_job_id INTEGER ,
uniquename VARCHAR(255) not null,
name VARCHAR(255) ,
param_default VARCHAR(255)
)
;
create temp table tmp_etl_step_property(
tid SERIAL not null,
etl_step_id INTEGER not null,
prop_name VARCHAR(255) ,
prop_value text
)
;
create temp table tmp_etl_step_relation(
tid SERIAL not null,
step_id INTEGER not null,
parent_step_id INTEGER ,
job_id INTEGER not null,
force_continue SMALLINT default 1 ,
step_active SMALLINT default 1,
sortnr SMALLINT default 1,
custom_step SMALLINT default 1
)
;
</xsl:text>
</xsl:template>
<xsl:template name="fill_job_metadata">
<xsl:param name="uniquename"/>
<xsl:param name="name"/>
<xsl:param name="systeminfo_id"/>
<xsl:param name="logfile"/>
<xsl:text>
truncate table tmp_etl_job;
truncate table tmp_etl_step;
truncate table tmp_etl_job_param;
truncate table tmp_etl_step_property;
truncate table tmp_etl_step_relation;
--tids der jobs dürfen sich nicht ändern, daher
--
-- 1. vorh. Jobs updaten
-- 2. neue Jobs einfügen
-- 3. alte Jobs löschen
insert into tmp_etl_job(uniquename,caption,systeminfo_id,logfile,already_exists,custom_job)
values ('</xsl:text><xsl:value-of select="$uniquename" /><xsl:text>',
'</xsl:text><xsl:value-of select="$name" /><xsl:text>',
</xsl:text><xsl:value-of select="$systeminfo_id" /><xsl:text>,
'</xsl:text><xsl:value-of select="$logfile" /><xsl:text>',0,2);
update tmp_etl_job set tid=J.tid,
already_exists=1,
caption=J.caption,
logfile=J.logfile,
custom_job=J.custom_job
from etl_job J where J.uniquename=tmp_etl_job.uniquename
and J.systeminfo_id=tmp_etl_job.systeminfo_id
;
--neue jobs:
insert into etl_job(uniquename,caption,systeminfo_id,custom_job)
select uniquename,caption,systeminfo_id,custom_job
from tmp_etl_job
where already_exists=0;
--tid von neuen Jobs ermitteln:
update tmp_etl_job set tid=(select J.tid
from etl_job J where J.uniquename=tmp_etl_job.uniquename
and J.systeminfo_id=tmp_etl_job.systeminfo_id)
where already_exists=0
;
--TODO
--obsolete Jobs: sollen bei Deinstallation des Moduls entfernt werden
</xsl:text>
</xsl:template>
<xsl:template name="etl_params_fuellen">
<xsl:param name="job_uniquename" />
<xsl:param name="job_type" />
<xsl:for-each select="etl_transfer_params/etl_transfer_param">
<xsl:text>
insert into tmp_etl_job_param(
etl_job_id ,
uniquename,
name ,
param_default)
select J.tid,
'</xsl:text><xsl:value-of select="@name" /><xsl:text>',
'</xsl:text><xsl:value-of select="description" /><xsl:text>',
'</xsl:text><xsl:value-of select="default" /><xsl:text>'
from tmp_etl_job J
where J.uniquename='</xsl:text><xsl:value-of select="$job_uniquename" /><xsl:text>'
;
</xsl:text>
</xsl:for-each>
<xsl:text>
insert into tmp_etl_job_param(
etl_job_id ,
uniquename,
name ,
param_default)
select J.tid,
'FORMAT',
'Format',
'XML'
from tmp_etl_job J
where J.uniquename='</xsl:text><xsl:value-of select="$job_uniquename" /><xsl:text>'
;
</xsl:text>
<xsl:if test="$job_type='unload'">
<xsl:text>
insert into tmp_etl_job_param(
etl_job_id ,
uniquename,
name ,
param_default)
select J.tid,
'PATH_TO_OUTPUTFILE',
'Ausgabedatei',
'$SUPERX_DIR/db/</xsl:text><xsl:value-of select="$job_uniquename" /><xsl:text>.xml'
from tmp_etl_job J
where J.uniquename='</xsl:text><xsl:value-of select="$job_uniquename" /><xsl:text>'
;
</xsl:text>
</xsl:if>
<xsl:if test="$job_type='upload'">
<xsl:text>
insert into tmp_etl_job_param(
etl_job_id ,
uniquename,
name ,
param_default)
select J.tid,
'PATH_TO_INPUTFILE',
'Eingabedatei',
'$SUPERX_DIR/db/</xsl:text><xsl:value-of select="$job_uniquename" /><xsl:text>.xml'
from tmp_etl_job J
where J.uniquename='</xsl:text><xsl:value-of select="$job_uniquename" /><xsl:text>'
;
</xsl:text>
</xsl:if>
<xsl:text>
--erst job-params einfügen:
delete from etl_job_param
where etl_job_id in (
SELECT distinct
etl_job_id
FROM tmp_etl_job_param )
;
insert into etl_job_param
(
etl_job_id,
uniquename,
name,
param_default
)
SELECT
etl_job_id,
uniquename,
name,
param_default
FROM tmp_etl_job_param
;
</xsl:text>
</xsl:template>
<xsl:template name="etl_steps_fuellen" >
<xsl:param name="job_name" />
<xsl:param name="job_logfile" />
<xsl:param name="job_type" />
<xsl:param name="systeminfo_id" />
<xsl:for-each select="etl_transfer_groups/etl_transfer_group">
<xsl:variable name="etl_transfer_group_ordnr" select="position()" />
<xsl:variable name="etl_transfer_group" select="@uniquename" />
<xsl:variable name="etl_step_msg" select="concat('start_',$job_type,'_',@uniquename)" />
<xsl:variable name="etl_transfer_group_text" select="." />
<xsl:text>--Gruppe </xsl:text><xsl:value-of select="$etl_transfer_group" /><xsl:text>
</xsl:text>
<xsl:call-template name="create_step_table_msg">
<xsl:with-param name="job_name" select="$job_name" />
<xsl:with-param name="job_logfile" select="$job_logfile" />
<xsl:with-param name="ordnr" select="$etl_transfer_group_ordnr * 100" />
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="step_name" select="$etl_step_msg" />
<xsl:with-param name="step_caption" select="$etl_transfer_group_text" />
</xsl:call-template>
<xsl:for-each select="../../etl_transfer_tables/etl_transfer_table[@transfer_group=$etl_transfer_group]">
<xsl:variable name="table_name" select="@name" />
<xsl:variable name="ordnr" select="position()" />
<xsl:if test="$job_type='unload'">
<xsl:text>--Unload </xsl:text><xsl:value-of select="$table_name" /><xsl:text>
</xsl:text>
<xsl:call-template name="create_step_table_unload">
<xsl:with-param name="job_name" select="$job_name" />
<xsl:with-param name="job_logfile" select="$job_logfile" />
<xsl:with-param name="ordnr" select="($etl_transfer_group_ordnr * 100) + $ordnr" />
<xsl:with-param name="table_name" select="$table_name"/>
<xsl:with-param name="whereclause" select="whereclause"/>
<xsl:with-param name="orderclause" select="orderclause"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="parent_step" select="$etl_step_msg"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$job_type='upload'">
<xsl:text>--Upload </xsl:text><xsl:value-of select="$table_name" /><xsl:text>
</xsl:text>
<xsl:call-template name="create_step_table_upload">
<xsl:with-param name="job_name" select="$job_name" />
<xsl:with-param name="job_logfile" select="$job_logfile" />
<xsl:with-param name="ordnr" select="($etl_transfer_group_ordnr * 100) + $ordnr" />
<xsl:with-param name="table_name" select="$table_name"/>
<xsl:with-param name="whereclause" select="whereclause"/>
<xsl:with-param name="orderclause" select="orderclause"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="parent_step" select="$etl_step_msg"/>
</xsl:call-template>
</xsl:if>
</xsl:for-each>
</xsl:for-each><!--von groups-->
<xsl:if test="$job_type='upload'">
<xsl:for-each select="etl_nativeactions/etl_nativeaction">
<xsl:variable name="etl_nativeaction_ordnr" select="position()" />
<xsl:variable name="name" select="@name" />
<xsl:variable name="filename" select="@filename" />
<xsl:call-template name="create_step_table_nativeaction">
<xsl:with-param name="job_name" select="$job_name" />
<xsl:with-param name="job_logfile" select="$job_logfile" />
<xsl:with-param name="ordnr" select="10000 + $etl_nativeaction_ordnr" />
<xsl:with-param name="step_name" select="$name"/>
<xsl:with-param name="step_caption" select="$name"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="parent_step" select="''"/>
</xsl:call-template>
</xsl:for-each>
</xsl:if>
<xsl:text>
--nun steps einfügen:
update tmp_etl_step set step_type=(select T.tid from etl_step_type T
where T.uniquename=tmp_etl_step.step_type_uniquename);
--select * from tmp_etl_step
--where step_type is null;--_uniquename from tmp_etl_step;
--vorhandene Steps erkennen:
update tmp_etl_step set tid=S.tid,
already_exists=1,
caption=S.caption,
logfile=S.logfile,
custom_step=S.custom_step
from etl_step S where S.uniquename=tmp_etl_step.uniquename
and S.systeminfo_id=tmp_etl_step.systeminfo_id
;
--neue Steps einfügen:
insert into etl_step(
uniquename,
caption,
systeminfo_id,
step_type_id,
logfile,
custom_step)
select
uniquename,
caption,
systeminfo_id,
step_type,
logfile,
custom_step
FROM tmp_etl_step
where already_exists=0
;
--tid von neuen steps ermitteln:
update tmp_etl_step set tid=(select S.tid
from etl_step S where S.uniquename=tmp_etl_step.uniquename
and S.systeminfo_id=tmp_etl_step.systeminfo_id)
where already_exists=0
;
--parent ermitteln:
update tmp_etl_step set parent_step_id=(select S.tid
from etl_step S where S.uniquename=tmp_etl_step.parent_step_uniquename
and S.systeminfo_id=tmp_etl_step.systeminfo_id)
;
</xsl:text>
</xsl:template>
<xsl:template name="create_etl_step_relations">
<xsl:text>delete from etl_step_relation
where job_id in (select J.tid
FROM tmp_etl_job J)
and custom_step=2
;
--jetzt step-relation:
insert into tmp_etl_step_relation(
step_id,
parent_step_id,
job_id,
force_continue,
step_active,
sortnr,
custom_step
)
select
tid,
parent_step_id,
etl_job_id,
0 as force_continue,
1 as step_active,
sortnr,
2
FROM tmp_etl_step
;
insert into etl_step_relation(
step_id,
parent_step_id,
job_id,
force_continue,
step_active,
sortnr,
custom_step
)
select
step_id,
parent_step_id,
job_id,
force_continue,
step_active,
sortnr,
custom_step
FROM tmp_etl_step_relation
;
</xsl:text>
</xsl:template>
<xsl:template name="create_etl_step_properties">
<xsl:param name="job_type" />
<xsl:text>
delete from etl_step_property
where etl_step_id in (select T.tid
FROM tmp_etl_step T )
;
</xsl:text>
<xsl:for-each select="etl_transfer_groups/etl_transfer_group">
<xsl:call-template name="create_etl_step_properties_msg">
<xsl:with-param name="step_uniquename" select="concat('start_',$job_type,'_',@uniquename)"/>
<xsl:with-param name="msg" select="."/>
</xsl:call-template>
</xsl:for-each>
<xsl:for-each select="etl_transfer_tables/etl_transfer_table">
<xsl:if test="$job_type='unload'">
<xsl:call-template name="create_etl_step_properties_unload">
<xsl:with-param name="step_uniquename" select="concat('unload_',@name)"/>
<xsl:with-param name="table_name" select="@name"/>
<xsl:with-param name="whereclause" select="whereclause"/>
<xsl:with-param name="orderclause" select="orderclause"/>
</xsl:call-template>
</xsl:if>
<!--Upload-->
<xsl:if test="$job_type='upload'">
<xsl:call-template name="create_etl_step_properties_upload">
<xsl:with-param name="step_uniquename" select="concat('upload_',@name)"/>
<xsl:with-param name="table_name" select="@name"/>
<xsl:with-param name="whereclause" select="whereclause"/>
</xsl:call-template>
</xsl:if>
</xsl:for-each>
<xsl:if test="$job_type='upload'">
<xsl:for-each select="etl_nativeactions/etl_nativeaction">
<xsl:call-template name="create_etl_step_properties_nativeaction">
<xsl:with-param name="step_uniquename" select="@name"/>
<xsl:with-param name="filename" select="@filename"/>
</xsl:call-template>
</xsl:for-each>
</xsl:if>
<xsl:text>
--einfügen in echte Tabelle:
insert into etl_step_property(
etl_step_id,
prop_name,
prop_value)
select
T.etl_step_id,
T.prop_name,
prop_value
FROM tmp_etl_step_property T
;
</xsl:text>
</xsl:template>
<xsl:template name="create_etl_step_properties_msg">
<xsl:param name="step_uniquename" />
<xsl:param name="msg" />
<xsl:text>
insert into tmp_etl_step_property(
etl_step_id,
prop_name,
prop_value)
select
T.tid as etl_step_id,
'msg',
'</xsl:text>
<xsl:value-of select="$msg"/>
<xsl:text>'
as prop_value
FROM tmp_etl_step T
where uniquename ='</xsl:text><xsl:value-of select="$step_uniquename"/><xsl:text>'
;
</xsl:text>
</xsl:template>
<xsl:template name="create_etl_step_properties_nativeaction">
<xsl:param name="step_uniquename" />
<xsl:param name="filename" />
<xsl:text>
insert into tmp_etl_step_property(
etl_step_id,
prop_name,
prop_value)
select
T.tid as etl_step_id,
'PATH_TO_INPUTFILE',
'</xsl:text>
<xsl:value-of select="$filename"/>
<xsl:text>'
as prop_value
FROM tmp_etl_step T
where uniquename ='</xsl:text><xsl:value-of select="$step_uniquename"/><xsl:text>'
;
</xsl:text>
</xsl:template>
<xsl:template name="create_etl_step_properties_unload">
<xsl:param name="step_uniquename" />
<xsl:param name="table_name" />
<xsl:param name="whereclause" />
<xsl:param name="orderclause" />
<xsl:text>
insert into tmp_etl_step_property(
etl_step_id,
prop_name,
prop_value)
select
T.tid as etl_step_id,
'select_stmt',
'select * </xsl:text>
<!--<xsl:call-template name="get_columns_as_comma_delimited_text">
<xsl:with-param name="table_name" select="$table_name"/>
</xsl:call-template>-->
<xsl:text> from </xsl:text><xsl:value-of select="$table_name"/><xsl:text> </xsl:text>
<xsl:if test="$whereclause !=''">
<xsl:text> where </xsl:text><xsl:value-of select="$whereclause"/>
</xsl:if>
<xsl:if test="$orderclause !=''">
<xsl:text> order by </xsl:text><xsl:value-of select="$orderclause"/>
</xsl:if>
<xsl:text>'
as prop_value
FROM tmp_etl_step T
where uniquename ='</xsl:text><xsl:value-of select="$step_uniquename"/><xsl:text>'
;
</xsl:text>
</xsl:template>
<xsl:template name="create_etl_step_properties_upload">
<xsl:param name="step_uniquename" />
<xsl:param name="table_name" />
<xsl:param name="whereclause"/>
<!--zuerst tmp_-Tabelle droppen, wenn vorhanden-->
<xsl:text>
insert into tmp_etl_step_property(
etl_step_id,
prop_name,
prop_value)
select
T.tid as etl_step_id,
'select_stmt',
'drop table if exists tmp_</xsl:text><xsl:value-of select="$table_name"/>
<xsl:text>'
as prop_value
FROM tmp_etl_step T
where uniquename ='</xsl:text><xsl:value-of select="concat('drop_tmp_',$table_name)"/><xsl:text>'
;
</xsl:text>
<!--dann tmp_-Tabelle erzeugen-->
<xsl:text>
insert into tmp_etl_step_property(
etl_step_id,
prop_name,
prop_value)
select
T.tid as etl_step_id,
'select_stmt',
'select * </xsl:text>
<!--<xsl:call-template name="get_columns_as_comma_delimited_text">
<xsl:with-param name="table_name" select="$table_name"/>
</xsl:call-template>-->
<xsl:text> into tmp_</xsl:text><xsl:value-of select="$table_name"/>
<xsl:text> from </xsl:text><xsl:value-of select="$table_name"/><xsl:text> </xsl:text>
<xsl:text> where 1=0'
as prop_value
FROM tmp_etl_step T
where uniquename ='</xsl:text><xsl:value-of select="concat('create_tmp_',$table_name)"/><xsl:text>'
;
</xsl:text>
<!--dann LOAD-->
<xsl:text>
insert into tmp_etl_step_property(
etl_step_id,
prop_name,
prop_value)
select
T.tid as etl_step_id,
'target_table',
'</xsl:text><xsl:value-of select="concat('tmp_',$table_name)"/><xsl:text>' as prop_value
FROM tmp_etl_step T
where uniquename ='</xsl:text><xsl:value-of select="concat('load_tmp_',$table_name)"/><xsl:text>'
;
insert into tmp_etl_step_property(
etl_step_id,
prop_name,
prop_value)
select
T.tid as etl_step_id,
'format',
'XML' as prop_value
FROM tmp_etl_step T
where uniquename ='</xsl:text><xsl:value-of select="concat('load_tmp_',$table_name)"/><xsl:text>'
;
insert into tmp_etl_step_property(
etl_step_id,
prop_name,
prop_value)
select
T.tid as etl_step_id,
'search_path',
'/etlAction/unload [@name="unload_</xsl:text><xsl:value-of select="$table_name"/><xsl:text>"]/rs/row' as prop_value
FROM tmp_etl_step T
where uniquename ='</xsl:text><xsl:value-of select="concat('load_tmp_',$table_name)"/><xsl:text>'
;
insert into tmp_etl_step_property(
etl_step_id,
prop_name,
prop_value)
select
T.tid as etl_step_id,
'path_to_inputfile',
'$PATH_TO_INPUTFILE' as prop_value
FROM tmp_etl_step T
where uniquename ='</xsl:text><xsl:value-of select="concat('load_tmp_',$table_name)"/><xsl:text>'
;
</xsl:text>
</xsl:template>
<xsl:template name="get_columns_as_comma_delimited_text">
<xsl:param name="table_name" />
<xsl:variable name="col_number" select="count(/module/database/table [@name=$table_name]/columns/column)" />
<xsl:for-each select="/module/database/table [@name=$table_name]/columns/column">
<xsl:value-of select="@name" />
<xsl:if test="position() &lt; $col_number">
<xsl:text>,
</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template name="create_step_table_msg">
<xsl:param name="job_name" />
<xsl:param name="job_logfile" />
<xsl:param name="ordnr" />
<xsl:param name="systeminfo_id" />
<xsl:param name="step_name" />
<xsl:param name="step_caption" />
<xsl:call-template name="create_step">
<xsl:with-param name="job_name" select="$job_name" />
<xsl:with-param name="job_logfile" select="$job_logfile" />
<xsl:with-param name="ordnr" select="$ordnr" />
<xsl:with-param name="step_name" select="$step_name" />
<xsl:with-param name="step_caption" select="$step_caption"/>
<xsl:with-param name="step_type" select="'MSG'"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="parent_step" select="''"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="create_step_table_nativeaction">
<xsl:param name="job_name" />
<xsl:param name="job_logfile" />
<xsl:param name="ordnr" />
<xsl:param name="systeminfo_id" />
<xsl:param name="step_name" />
<xsl:param name="step_caption" />
<xsl:param name="parent_step" />
<xsl:call-template name="create_step">
<xsl:with-param name="job_name" select="$job_name" />
<xsl:with-param name="job_logfile" select="$job_logfile" />
<xsl:with-param name="ordnr" select="$ordnr" />
<xsl:with-param name="step_name" select="$step_name" />
<xsl:with-param name="step_caption" select="$step_caption"/>
<xsl:with-param name="step_type" select="'DOSQL'"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="parent_step" select="''"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="create_step_table_unload">
<xsl:param name="job_name" />
<xsl:param name="job_logfile" />
<xsl:param name="ordnr" />
<xsl:param name="table_name" />
<xsl:param name="whereclause" />
<xsl:param name="orderclause" />
<xsl:param name="systeminfo_id" />
<xsl:param name="parent_step" />
<xsl:variable name="step_name" select="concat('unload_',$table_name)" />
<xsl:variable name="step_caption" select="concat('Entlade ',$table_name)" />
<xsl:call-template name="create_step">
<xsl:with-param name="job_name" select="$job_name" />
<xsl:with-param name="job_logfile" select="$job_logfile" />
<xsl:with-param name="ordnr" select="$ordnr + 1" />
<xsl:with-param name="step_name" select="$step_name" />
<xsl:with-param name="step_caption" select="$step_caption"/>
<xsl:with-param name="step_type" select="'UNLOAD'"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="parent_step" select="$parent_step"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="create_step_table_upload">
<xsl:param name="job_name" />
<xsl:param name="job_logfile" />
<xsl:param name="ordnr" />
<xsl:param name="table_name" />
<xsl:param name="whereclause" />
<xsl:param name="orderclause" />
<xsl:param name="systeminfo_id" />
<xsl:param name="parent_step" />
<xsl:call-template name="create_step">
<xsl:with-param name="job_name" select="$job_name" />
<xsl:with-param name="job_logfile" select="$job_logfile" />
<xsl:with-param name="ordnr" select="$ordnr + 1" />
<xsl:with-param name="step_name" select="concat('drop_tmp_',$table_name)" />
<xsl:with-param name="step_caption" select="concat('drop tmp_',$table_name)"/>
<xsl:with-param name="step_type" select="'DOQUERY'"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="parent_step" select="$parent_step"/>
</xsl:call-template>
<xsl:call-template name="create_step">
<xsl:with-param name="job_name" select="$job_name" />
<xsl:with-param name="job_logfile" select="$job_logfile" />
<xsl:with-param name="ordnr" select="$ordnr + 3" />
<xsl:with-param name="step_name" select="concat('create_tmp_',$table_name)" />
<xsl:with-param name="step_caption" select="concat('Erzeuge tmp_',$table_name)"/>
<xsl:with-param name="step_type" select="'DOQUERY'"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="parent_step" select="$parent_step"/>
</xsl:call-template>
<xsl:call-template name="create_step">
<xsl:with-param name="job_name" select="$job_name" />
<xsl:with-param name="job_logfile" select="$job_logfile" />
<xsl:with-param name="ordnr" select="$ordnr + 5" />
<xsl:with-param name="step_name" select="concat('load_tmp_',$table_name)" />
<xsl:with-param name="step_caption" select="concat('Hochladen tmp_',$table_name)"/>
<xsl:with-param name="step_type" select="'LOAD'"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="parent_step" select="$parent_step"/>
</xsl:call-template>
<!--nur bei Komplettübernahme möglich:
<xsl:variable name="step_name" select="concat('delete_',$table_name)" />
<xsl:variable name="step_caption" select="concat('Delete tmp_',$table_name)" />
<xsl:call-template name="create_step">
<xsl:with-param name="job_name" select="$job_name" />
<xsl:with-param name="job_logfile" select="$job_logfile" />
<xsl:with-param name="ordnr" select="$ordnr + 7" />
<xsl:with-param name="step_name" select="$step_name" />
<xsl:with-param name="step_caption" select="$step_caption"/>
<xsl:with-param name="step_type" select="'DOQUERY'"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="parent_step" select="$parent_step"/>
</xsl:call-template>
<xsl:variable name="step_name" select="concat('drop2_tmp_',$table_name)" />
<xsl:variable name="step_caption" select="concat('drop2 tmp_',$table_name)" />
<xsl:call-template name="create_step">
<xsl:with-param name="job_name" select="$job_name" />
<xsl:with-param name="job_logfile" select="$job_logfile" />
<xsl:with-param name="ordnr" select="$ordnr + 10" />
<xsl:with-param name="step_name" select="$step_name" />
<xsl:with-param name="step_caption" select="$step_caption"/>
<xsl:with-param name="step_type" select="'DOQUERY'"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="parent_step" select="$parent_step"/>
</xsl:call-template>
<xsl:variable name="step_name" select="concat('trans_tmp_',$table_name)" />
<xsl:variable name="step_caption" select="concat('Trans tmp_',$table_name)" />
<xsl:call-template name="create_step">
<xsl:with-param name="job_name" select="$job_name" />
<xsl:with-param name="job_logfile" select="$job_logfile" />
<xsl:with-param name="ordnr" select="$ordnr + 9" />
<xsl:with-param name="step_name" select="$step_name" />
<xsl:with-param name="step_caption" select="$step_caption"/>
<xsl:with-param name="step_type" select="'DOQUERY'"/>
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/>
<xsl:with-param name="parent_step" select="$parent_step"/>
</xsl:call-template>
-->
</xsl:template>
<xsl:template name="create_step">
<xsl:param name="job_name" />
<xsl:param name="job_logfile" />
<xsl:param name="ordnr" />
<xsl:param name="step_name" />
<xsl:param name="step_caption" />
<xsl:param name="step_type" />
<xsl:param name="systeminfo_id" />
<xsl:param name="parent_step" />
<xsl:text>
insert into tmp_etl_step(
uniquename ,
caption ,
systeminfo_id ,
step_type_uniquename,
sortnr,
force_continue,
etl_job_id ,
parent_step_uniquename,
parent_job_uniquename,
logfile,
custom_step,
already_exists
)
select '</xsl:text><xsl:value-of select="$step_name" /><xsl:text>',
'</xsl:text><xsl:value-of select="$step_caption" /><xsl:text>',
</xsl:text><xsl:value-of select="$systeminfo_id" /><xsl:text>,
'</xsl:text><xsl:value-of select="$step_type" /><xsl:text>' as step_type_uniquename,
</xsl:text><xsl:value-of select="$ordnr" /><xsl:text> + 10 as sortnr,
0 as force_continue,
J.tid as etl_job_id,
'</xsl:text><xsl:value-of select="$parent_step" /><xsl:text>' as parent_step_uniquename,
J.uniquename,
'</xsl:text><xsl:value-of select="$job_logfile" /><xsl:text>' as logfile,
2,
0
from etl_job J
where J.uniquename='</xsl:text><xsl:value-of select="$job_name" /><xsl:text>'
and J.systeminfo_id=</xsl:text><xsl:value-of select="$systeminfo_id" /><xsl:text>;
</xsl:text>
</xsl:template>
<xsl:template name="drop_tmp_etl_tables">
<xsl:text>
drop table tmp_etl_step;
drop table tmp_etl_job;
drop table tmp_etl_job_param;
drop table tmp_etl_step_property;
drop table tmp_etl_step_relation;
</xsl:text>
</xsl:template>
</xsl:stylesheet>