diff --git a/superx/WEB-INF/conf/edustore/db/install/conf/kern.xml b/superx/WEB-INF/conf/edustore/db/install/conf/kern.xml index 60ee920c..602b39c5 100644 --- a/superx/WEB-INF/conf/edustore/db/install/conf/kern.xml +++ b/superx/WEB-INF/conf/edustore/db/install/conf/kern.xml @@ -10081,6 +10081,14 @@ where dimension_bp_id=(select D.tid from dimension_bp D where D.apnr='bluep_absc INFORMIX + + + $SUPERX_DIR/db/install/masken + A. Knieschewski + 21.09.2026 + POSTGRES + + diff --git a/superx/WEB-INF/conf/edustore/db/install/masken/71900_felderinfo.unl b/superx/WEB-INF/conf/edustore/db/install/masken/71900_felderinfo.unl new file mode 100644 index 00000000..217fa59a --- /dev/null +++ b/superx/WEB-INF/conf/edustore/db/install/masken/71900_felderinfo.unl @@ -0,0 +1,82 @@ +71900^Tabelle^1^0^0^120^400^1^integer^30^1^1^<>\ +select c.oid::integer,\ + n.nspname || '.' || c.relname\ +from pg_catalog.pg_class c\ +join pg_catalog.pg_namespace n on n.oid=c.relnamespace\ +where c.relkind in ('r','p','v','m','f')\ + and n.nspname not in ('pg_catalog','information_schema')\ + and n.nspname not like 'pg_toast%'\ + and n.nspname not like 'pg_temp_%'\ + and has_table_privilege(c.oid,'SELECT')\ + and 1=(select administration from userinfo where tid=<>)\ +order by n.nspname,c.relname;^ ^ ^ +71901^Felder^2^0^0^120^250^10^char^255^0^1^<>\ +select a.attname::varchar(255) as apnr,\ + a.attname::varchar(255) as name\ +from pg_catalog.pg_attribute a\ +where a.attrelid=nullif('<>','')::oid\ + and a.attnum > 0\ + and not a.attisdropped\ +order by a.attnum;^ ^ ^ +71902^Filterfeld^3^0^0^120^200^1^sql^255^0^1^<>\ +select a.attname,a.attname\ +from pg_catalog.pg_attribute a\ +where a.attrelid=nullif('<>','')::oid\ + and a.attnum > 0\ + and not a.attisdropped\ +order by a.attnum;^ ^ ^ +71903^Operator^4^0^0^120^120^1^sql^30^0^1^<>\ +select '=' as apnr,'=' as name from xdummy\ +union all select '<>','<>' from xdummy\ +union all select '>','>' from xdummy\ +union all select '>=','>=' from xdummy\ +union all select '<','<' from xdummy\ +union all select '<=','<=' from xdummy\ +union all select 'like','LIKE' from xdummy\ +union all select 'ilike','ILIKE' from xdummy\ +union all select 'is null','ist leer' from xdummy\ +union all select 'is not null','ist nicht leer' from xdummy;^ ^ ^ +71904^Wert^5^0^0^120^250^1^char^255^0^0^ ^ ^ ^ +71905^Sortierfeld^6^0^0^120^200^1^sql^255^0^1^<>\ +--Freemarker Template\ +<#if "<>"!="">\ +select apnr,name\ +from\ +(\ + select '__COUNT__'::varchar(255) as apnr,\ + 'Anzahl'::varchar(255) as name,\ + 0::integer as sortnr\ + from xdummy\ +\ + union all\ +\ + select a.attname::varchar(255) as apnr,\ + a.attname::varchar(255) as name,\ + a.attnum::integer as sortnr\ + from pg_catalog.pg_attribute a\ + where a.attrelid=nullif('<>','')::oid\ + and a.attnum > 0\ + and not a.attisdropped\ + and a.attname in (<>)\ +) X\ +order by sortnr;\ +<#else>\ +select a.attname,a.attname\ +from pg_catalog.pg_attribute a\ +where a.attrelid=nullif('<>','')::oid\ + and a.attnum > 0\ + and not a.attisdropped\ +order by a.attnum;\ +^ ^ ^ +71906^Sortierung^7^0^0^120^120^1^sql^10^0^1^<>\ +select 'asc','aufsteigend' from xdummy\ +union all\ +select 'desc','absteigend' from xdummy;^ ^ ^ +71907^Limit^8^0^0^120^100^1^integer^10^1^1^<>\ +select 10,'10' from xdummy\ +union all select 50,'50' from xdummy\ +union all select 100,'100' from xdummy\ +union all select 500,'500' from xdummy\ +union all select 1000,'1.000' from xdummy\ +union all select 5000,'5.000' from xdummy\ +order by 1;^ ^100^ diff --git a/superx/WEB-INF/conf/edustore/db/install/masken/71900_maske_system_bez.unl b/superx/WEB-INF/conf/edustore/db/install/masken/71900_maske_system_bez.unl new file mode 100644 index 00000000..c313eaad --- /dev/null +++ b/superx/WEB-INF/conf/edustore/db/install/masken/71900_maske_system_bez.unl @@ -0,0 +1 @@ +71900^9^ diff --git a/superx/WEB-INF/conf/edustore/db/install/masken/71900_masken_felder_bez.unl b/superx/WEB-INF/conf/edustore/db/install/masken/71900_masken_felder_bez.unl new file mode 100644 index 00000000..b1acb200 --- /dev/null +++ b/superx/WEB-INF/conf/edustore/db/install/masken/71900_masken_felder_bez.unl @@ -0,0 +1,8 @@ +71900^71900^ +71900^71901^ +71900^71902^ +71900^71903^ +71900^71904^ +71900^71905^ +71900^71906^ +71900^71907^ diff --git a/superx/WEB-INF/conf/edustore/db/install/masken/71900_maskeninfo.unl b/superx/WEB-INF/conf/edustore/db/install/masken/71900_maskeninfo.unl new file mode 100644 index 00000000..bb2072b8 --- /dev/null +++ b/superx/WEB-INF/conf/edustore/db/install/masken/71900_maskeninfo.unl @@ -0,0 +1,182 @@ +71900^Tabelleninhalt anzeigen^--Freemarker Template\ +<#include "SQL_lingua_franca"/>\ +<#include "SuperX_general"/>\ +\ +-- Entwicklermaske: Tabelleninhalt direkt aus PostgreSQL-Metadaten ausgeben.\ +-- Tabellennamen und Spaltennamen werden nicht frei eingegeben, sondern\ +-- ueber PostgreSQL-Systemkataloge aufgeloest und mit quote_ident() gequotet.\ +\ +\ +\ +\ +select quote_ident(n.nspname) || '.' || quote_ident(c.relname)\ +from pg_catalog.pg_class c\ +join pg_catalog.pg_namespace n on n.oid=c.relnamespace\ +where c.oid=<>\ + and c.relkind in ('r','p','v','m','f')\ + and n.nspname not in ('pg_catalog','information_schema')\ + and n.nspname not like 'pg_toast%'\ + and n.nspname not like 'pg_temp_%'\ + and has_table_privilege(c.oid,'SELECT')\ + and 1=(select administration from userinfo where tid=<>)\ +\ +\ +\ +select a.attname as feldname,\ + pg_catalog.format_type(a.atttypid,a.atttypmod) as datentyp,\ + quote_ident(a.attname) as qname\ +from pg_catalog.pg_attribute a\ +where a.attrelid=<>\ + and a.attnum > 0\ + and not a.attisdropped\ +order by a.attnum\ +\ +\ +\ +select max(quote_ident(a.attname))\ +from pg_catalog.pg_attribute a\ +where a.attrelid=<>\ + and a.attnum > 0\ + and not a.attisdropped\ + and a.attname='<>'\ +\ +\ +\ +select max(quote_ident(a.attname))\ +from pg_catalog.pg_attribute a\ +where a.attrelid=<>\ + and a.attnum > 0\ + and not a.attisdropped\ + and a.attname='<>'\ +\ +\ +\ +\ +<#assign selected_fields="<>" />\ +<#assign aggregate=false />\ +<#if selected_fields!="">\ + <#assign aggregate=true />\ +\ +\ +<#assign field_list="" />\ +<#foreach feld in get_felder>\ + <#if !aggregate || selected_fields?index_of("'"+feld.feldname+"'")!=-1>\ + <#if field_list!="">\ + <#assign field_list=field_list+", " />\ + \ + <#assign field_list=field_list+feld.qname />\ + \ +\ +\ +/* Operator serverseitig auf erlaubte Werte begrenzen */\ +<#assign operator_sql="" />\ +<#if "<>"="=">\ + <#assign operator_sql="=" />\ +<#elseif "<>"="<>">\ + <#assign operator_sql="<>" />\ +<#elseif "<>"=">">\ + <#assign operator_sql=">" />\ +<#elseif "<>"=">=">\ + <#assign operator_sql=">=" />\ +<#elseif "<>"="<">\ + <#assign operator_sql="<" />\ +<#elseif "<>"="<=">\ + <#assign operator_sql="<=" />\ +<#elseif "<>"="like">\ + <#assign operator_sql="like" />\ +<#elseif "<>"="ilike">\ + <#assign operator_sql="ilike" />\ +<#elseif "<>"="is null">\ + <#assign operator_sql="is null" />\ +<#elseif "<>"="is not null">\ + <#assign operator_sql="is not null" />\ +\ +\ +<#assign apply_filter=false />\ +<#if "<>"!="" && operator_sql!="" && filter_field_sql?has_content>\ + <#if operator_sql="is null" || operator_sql="is not null">\ + <#assign apply_filter=true />\ + <#elseif "<>"!="">\ + <#assign apply_filter=true />\ + \ +\ +\ +/* Sortierrichtung nicht ungeprueft aus der Eingabe uebernehmen */\ +<#assign sort_direction="asc" />\ +<#if "<>"="desc">\ + <#assign sort_direction="desc" />\ +\ +\ +/* LIMIT ebenfalls auf die in der Maske angebotenen Werte begrenzen */\ +<#assign row_limit=100 />\ +<#if "<>"="10">\ + <#assign row_limit=10 />\ +<#elseif "<>"="50">\ + <#assign row_limit=50 />\ +<#elseif "<>"="100">\ + <#assign row_limit=100 />\ +<#elseif "<>"="500">\ + <#assign row_limit=500 />\ +<#elseif "<>"="1000">\ + <#assign row_limit=1000 />\ +<#elseif "<>"="5000">\ + <#assign row_limit=5000 />\ +\ +\ +select\ +${field_list}<#if aggregate>,\ +count(*) as anzahl\ +from ${table_sql}\ +where 1=1\ +<#if apply_filter>\ + and ${filter_field_sql} ${operator_sql}<#if operator_sql!="is null" && operator_sql!="is not null"> <>\ +\ +<#if aggregate>\ +group by ${field_list}\ +\ +<#if "<>"="__COUNT__" && aggregate>\ +order by anzahl ${sort_direction}\ +<#elseif "<>"!="" && sort_field_sql?has_content>\ +order by ${sort_field_sql} ${sort_direction}\ +<#elseif aggregate>\ +order by ${field_list}\ +\ +limit ${row_limit};^--Freemarker Template\ +\ +\ +select a.attname as feldname,\ + pg_catalog.format_type(a.atttypid,a.atttypmod) as datentyp,\ + quote_ident(a.attname) as qname\ +from pg_catalog.pg_attribute a\ +where a.attrelid=<>\ + and a.attnum > 0\ + and not a.attisdropped\ +order by a.attnum\ +\ +\ +\ +<#assign selected_fields="<>" />\ +<#assign aggregate=false />\ +<#if selected_fields!="">\ + <#assign aggregate=true />\ +\ +\ +XIL List\ + sizable_columns horizontal_scrolling\ + white_space_color=COLOR_WHITE fixed_columns=1\ + min_heading_height=35\ +<#assign i=0 />\ +<#foreach feld in get_felder>\ +<#if !aggregate || selected_fields?index_of("'"+feld.feldname+"'")!=-1>\ +Column CID=${i} heading_text="${feld.feldname}" explanation="PostgreSQL-Datentyp: ${feld.datentyp}" center_heading\ + row_selectable col_selectable heading_platform readonly\ + width=20\ +<#assign i=i+1 />\ +\ +\ +<#if aggregate>\ +Column CID=${i} heading_text="Anzahl" explanation="Anzahl der Datensaetze mit dieser Feldkombination" center_heading\ + row_selectable col_selectable rightJust heading_platform readonly\ + width=10\ +\ +@@@^ ^ ^Entwicklerwerkzeug zum Anzeigen von PostgreSQL-Tabellen und Views. Bei Auswahl einzelner Felder werden gleiche Kombinationen gruppiert und mit Anzahl ausgegeben. Tabellen- und Spaltenmetadaten kommen direkt aus pg_catalog.^ ^^1^650^500^^0^Keine Feldauswahl zeigt alle Spalten und Datensaetze im Detail. Werden einzelne Felder ausgewaehlt, erfolgt automatisch eine Gruppierung nach diesen Feldern und eine Ausgabe der Spalte "Anzahl".^ diff --git a/superx/WEB-INF/conf/edustore/db/install/masken/71900_sachgeb_maske_bez.unl b/superx/WEB-INF/conf/edustore/db/install/masken/71900_sachgeb_maske_bez.unl new file mode 100644 index 00000000..26f28d94 --- /dev/null +++ b/superx/WEB-INF/conf/edustore/db/install/masken/71900_sachgeb_maske_bez.unl @@ -0,0 +1 @@ +0^71900^