--Freemarker Template
--Achtung: Macro fügt Inhalte ein
--Bitte nur Freemarker Variablen füllen

<#assign masken = [
] />

<#assign stylesheet = [
{"filename":"tabelle_jrxml_a4_quer.xsl",
"caption":"Gener. Standardlayout JR (A4 quer)",
"description":"Gener. Standardlayout JR (A4 quer)",
"relation":"table",
"contenttype":"text/xml",
"is_generic":"1",
"toolbar_icon_filepath":"",
"usage_resultset_data":"T",
"stylesheet_type":"XSL_JRXML",
"jr_datasource":""
},
{"filename":"rpta_assistent.xsl",
"caption":"Berichtsassistent", 
"description":"Export als formatierter Bericht", 
"relation":"table", 
"contenttype":"text/html", 
"is_generic":"1",
"toolbar_icon_filepath":"images/icons/magic.svg",
"usage_resultset_data":"T",
"stylesheet_type":"XSL",
"jr_datasource":""
}
] />

<#assign stylesheet_field = [


] />

--Hier eventuell notwendige delete's auf die Tabellen sx_mask_style, sx_stylesheets oder stylesheet_field einfügen.

 <@sx_stylesheets_insert
m_masken=masken
m_stylesheet=stylesheet
m_stylesheet_field=stylesheet_field
/>


<#macro sx_stylesheets_insert m_masken m_stylesheet m_stylesheet_field>

--Sicherstellen, dass keine Duplikate vorkommen:
--####################################################################################################
<#foreach column in m_masken>
delete from sx_mask_style where maskeninfo_id=${column.mask} and stylesheet_id in (select tid from sx_stylesheets where filename ='${column.filename}') and ord=${column.ord};
</#foreach>

<#foreach column in m_stylesheet_field>
delete from stylesheet_field where  stylesheet_id in (select tid from sx_stylesheets where filename ='${column.filename}');
</#foreach>




-- Stylesheets füllen
--####################################################################################################
create temp table tmp_stylesheets (
tid         serial  not null, 
filename    CHAR(255) , 
caption     CHAR(255) , 
description CHAR(255) , 
relation    CHAR(10) , 
useragent   CHAR(255) , 
contenttype CHAR(200)  ,
is_generic smallint,
toolbar_icon_filepath VARCHAR(255) , 
usage_resultset_data CHAR(10)  default 'T' , 
stylesheet_type CHAR(10)  default 'XSL' , 
jr_datasource CHAR(10)  

);

create temp table tmp_hilf (tid integer);
insert into tmp_hilf select max(tid) from sx_stylesheets;
update tmp_hilf set tid=1 where tid is null;

<#assign counter_tid = 1 />
<#foreach column in m_stylesheet>
insert into tmp_stylesheets (tid,
filename,
caption,
description,
relation,
contenttype,
is_generic,
toolbar_icon_filepath  , 
usage_resultset_data  , 
stylesheet_type , 
jr_datasource)
select max(tid)+${counter_tid},'${column.filename}',
'${column.caption}',
 '${column.description}',
 '${column.relation}',
'${column.contenttype}',
${column.is_generic},
'${column.toolbar_icon_filepath}'  , 
'${column.usage_resultset_data}'  , 
'${column.stylesheet_type}' , 
'${column.jr_datasource}'
from tmp_hilf;
<#assign counter_tid = counter_tid + 1 />
</#foreach>

<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')>
update sx_stylesheets set is_generic=1
where filename in (select T.filename from tmp_stylesheets T where T.is_generic=1);
</#if>


--delete für tml_stylesheets hinzugefügt #ak 06.03.2013
delete from tmp_stylesheets where filename in (select filename from sx_stylesheets);


insert into sx_stylesheets (tid,
filename, caption, description, relation, useragent, contenttype
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')>
,is_generic
</#if>
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','toolbar_icon_filepath')>
,toolbar_icon_filepath  , 
usage_resultset_data  , 
stylesheet_type , 
jr_datasource
</#if>
)
SELECT tid, filename, caption, description, relation, useragent, contenttype
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')>
,is_generic
</#if>
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','toolbar_icon_filepath')>
,toolbar_icon_filepath  , 
usage_resultset_data  , 
stylesheet_type , 
jr_datasource
</#if>
FROM tmp_stylesheets;

drop table tmp_stylesheets;


-- Mask Style füllen
--####################################################################################################
create temp table tmp_mask_style (
tid serial    not null, 
maskeninfo_id INTEGER , 
stylesheet_id INTEGER , 
ord           SMALLINT,
filename      char(255)
);

delete from tmp_hilf;
insert into tmp_hilf select max(tid) from sx_mask_style;
update tmp_hilf set tid=1 where tid is null;

<#assign counter_tid = 1 />
<#foreach column in m_masken>
insert into tmp_mask_style (tid,maskeninfo_id,ord,filename)
select max(tid)+${counter_tid},${column.mask},${column.ord},'${column.filename}' from tmp_hilf;

update tmp_mask_style set stylesheet_id=(select max(tid) from sx_stylesheets where filename='${column.filename}')
where filename='${column.filename}';
<#assign counter_tid = counter_tid + 1 />
</#foreach>

insert into sx_mask_style ( tid, maskeninfo_id, stylesheet_id, ord)
SELECT tid, maskeninfo_id, stylesheet_id, ord
FROM tmp_mask_style;

drop table tmp_mask_style;


--Field zu Stylesheet Zuordnungen:
--####################################################################################################
CREATE temp TABLE tmp_stylesheet_field
(
tid           serial        NOT NULL,
stylesheet_id INTEGER,
tablename     char(255),
fieldname     char(255),
filename      char(255)
);

delete from tmp_hilf;
insert into tmp_hilf select max(tid) from stylesheet_field;
update tmp_hilf set tid=1 where tid is null;

<#assign counter_tid = 1 />
<#foreach column in m_stylesheet_field>
INSERT INTO tmp_stylesheet_field (tid, filename, tablename, fieldname)
select max(tid)+${counter_tid}, '${column.filename}', '${column.tablename}', '${column.fieldname}' from tmp_hilf;

update tmp_stylesheet_field set stylesheet_id=(select max(tid) from sx_stylesheets where filename='${column.filename}')
where filename='${column.filename}';
<#assign counter_tid = counter_tid + 1 />
</#foreach>

insert into stylesheet_field ( tid, stylesheet_id, tablename, fieldname)
SELECT tid, stylesheet_id, tablename, fieldname
FROM tmp_stylesheet_field;

drop table tmp_stylesheet_field;
drop table tmp_hilf;

<#if SQLdialect='Postgres'>
select sp_update_sequence('sx_stylesheets');
select sp_update_sequence('sx_mask_style');
select sp_update_sequence('stylesheet_field');
</#if>

</#macro>