--freemarker template
<#if SQLdialect='Postgres'>
select setval('sichten_tid_seq',(select max(tid) from sichten));
</#if>
<#assign systeminfoid="360" />
<#assign  sichten = [
   
{"name_intern":"sxc_hochschulen_nrw_art", 
  "name":"NRW-Hochschulen nach Art",
  "quelle":"<<SQL>> select druck ,apnr, parent, ebene from sxc_hochschulen_nrw_art order by 1",
  "art":"SXC-Kostenstellen-Sicht",
  "sortnr":"10"},
  {"name_intern":"sxc_hochschulen_nrw_liste", 
  "name":"NRW-Hochschulen Liste",
  "quelle":"<<SQL>> select druck ,apnr, parent, ebene from sxc_hochschulen_nrw_liste order by 1",
  "art":"SXC-Kostenstellen-Sicht",
  "sortnr":"20"},
  {"name_intern":"sxc_hochschulen_bland", 
  "name":"Hochschulen nach Bundesland",
  "quelle":"<<SQL>> select druck ,apnr, parent, ebene from sxc_hochschulen_bland order by 1",
  "art":"SXC_Hochschulen-Sicht",
  "sortnr":"30"},
  {"name_intern":"sxc_hochschulen_art", 
  "name":"Hochschulen nach Art",
  "quelle":"<<SQL>> select druck ,apnr, parent, ebene from sxc_hochschulen_art order by 1",
  "art":"SXC_Hochschulen-Sicht",
  "sortnr":"40"},
  {"name_intern":"sxc_hochschulen_liste", 
  "name":"Hochschulen Liste",
  "quelle":"<<SQL>> select druck ,apnr, parent, ebene from sxc_hochschulen_liste order by 1",
  "art":"SXC_Hochschulen-Sicht",
  "sortnr":"50"},
    {"name_intern":"sxc_hochschulen_liste_stammdaten", 
  "name":"Hochschulen Liste Stammdaten",
  "quelle":"<<SQL>> select druck ,apnr, parent, ebene from sxc_hochschulen_liste where apnr in (''1480'',''1140'',''1080'',''1090'',''1130'',''0080'',''1100'',''1110'',''1120'',''0121'',''0130'',''0140'') or ebene=0 order by 1",
  "art":"SXC_Hochschulen-Sicht",
  "sortnr":"60"}
  
  ] />
  
  
--Ab hier braucht man nichts ändern:

CREATE temp TABLE tmp_sichten (
    parent character(255),
    systeminfoid integer DEFAULT 0 NOT NULL,
    art character(40),
    type integer ,
    name_intern character(200),
    name character(200),
    beschreibung character(255),
    sortnr integer DEFAULT 0 NOT NULL,
    quelle character(255),
    alt_hier_id character(150),
    treecfgtable character(255),
    treecfgid character(150),
    label smallint DEFAULT 0 NOT NULL,
    user_rechte smallint DEFAULT 1 NOT NULL,
    rechtequelle character(255),
    sesamkey character(100),
    standbutton smallint DEFAULT 0 NOT NULL,
    attribut1 character(255),
    attribut2 character(255),
    attribut3 integer,
    attribut4 integer,
    xmlmaxentries integer,
    gueltig_seit date ,
    gueltig_bis date,
    aktiv smallint DEFAULT 1
);
<#assign sortnr=0 />
<#foreach sicht in sichten>
<#assign sortnr=sortnr+1 />
--  Sicht ${sicht.name}

INSERT INTO tmp_sichten(
  systeminfoid  , 
  art  , 
  type  , 
  name_intern  , 
  name  , 
  sortnr  ,
  quelle  ,
  label  , 
  user_rechte  ,
  standbutton  , 
    gueltig_seit  ,
   gueltig_bis  , 
   aktiv
   ) select 
  ${systeminfoid}  ,
  '${sicht.art}'  ,
  10  ,
  '${sicht.name_intern}'  , 
  '${sicht.name}'  ,
  ${sortnr}  , 
  '${sicht.quelle}', 
  0  , 
  0  ,  
  0  , 
  date_val('01.01.1900')  , 
  date_val('01.01.3000') , 
  1 from xdummy;
</#foreach>   

--Zur Sicherheit alle Quellen und Standbutton von Sichten 
update sichten set quelle=(select T.quelle from tmp_sichten T
  where T.name_intern=sichten.name_intern)
  where name_intern in (select T2.name_intern from tmp_sichten T2)
  ;
  
update sichten set art=(select T.art from tmp_sichten T
  where T.name_intern=sichten.name_intern)
  where name_intern in (select T2.name_intern from tmp_sichten T2)
  ;

update sichten set standbutton=(select T.standbutton from tmp_sichten T
  where T.name_intern=sichten.name_intern)
  where name_intern in (select T2.name_intern from tmp_sichten T2)
  ;

delete from tmp_sichten where name_intern in (select name_intern from sichten);


  INSERT INTO sichten(
     systeminfoid  , art  , type  , name_intern  , name  , 
    sortnr  , quelle  , label  , 
    user_rechte  ,  standbutton  , 
     xmlmaxentries  , 
    gueltig_seit  , gueltig_bis  , aktiv)
    select systeminfoid  , art  , type  , name_intern  , name  , 
    sortnr  , quelle  , label  , 
    user_rechte  ,  standbutton  , 
     xmlmaxentries  , 
    gueltig_seit  , gueltig_bis  , aktiv
    from tmp_sichten S;


--Rechte für Sichten geben
select 'Rechte für Sichten geben' from xdummy;
delete from sachgeb_sichtarten where sichtart in 
(select distinct art from tmp_sichten);

insert into sachgeb_sichtarten
(
   sachgebiete_id ,
   sichtart 
)
select distinct ${systeminfoid},art from tmp_sichten;


drop table tmp_sichten;

