--Freemarker Template --Achtung: Macro fügt Inhalte ein --Bitte nur Freemarker Variablen füllen <#assign masken = [ {"mask":"46000", "filename":"tabelle_html_datenblatt.xsl", "ord":"1"} ] /> <#assign stylesheet = [ ] /> <#assign stylesheet_field = [ ] /> --Hier eventuell notwendige delete's auf die Tabellen sx_mask_style, sx_stylesheets oder stylesheet_field einfügen. --Achtung: ab hier nicht ändern, Mutterdatei ist $SUPERX_DIR/db/module/sos/schluesseltabellen/sx_stylesheets_fuellen.sql <@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 column in m_stylesheet_field> delete from stylesheet_field where stylesheet_id in (select tid from sx_stylesheets where filename ='${column.filename}'); -- 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 ); 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) select max(tid)+${counter_tid},'${column.filename}', '${column.caption}', '${column.description}', '${column.relation}', '${column.contenttype}', ${column.is_generic} from tmp_hilf; <#assign counter_tid = counter_tid + 1 /> <#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); --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 ) SELECT tid, filename, caption, description, relation, useragent, contenttype <#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')> ,is_generic 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 /> 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 /> 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');