DBA Data[Home] [Help]

PACKAGE BODY: APPS.AD_AW_LOADER

Source


1 package body AD_AW_LOADER as
2 /* $Header: adawld9ib.pls 120.0 2005/05/25 12:01:49 appldev noship $ */
3 
4 m_ascii_nl number;
5 m_curr_obj varchar2(32);
6 
7 function CALL_AW(p_cmd in varchar2) return varchar2
8    is
9       l_clob   clob;
10       l_return varchar2(4000);
11       l_pos    number          := 1;
12 begin
13    l_clob := dbms_aw.interp (p_cmd);
14    l_return := dbms_lob.substr(l_clob);
15 
16    if (l_return is null or length (l_return) = 0) then
17       return l_return;
18    end if;
19    loop
20       if (ascii (substr (l_return, l_pos)) = m_ascii_nl) then
21          l_pos := l_pos + 1;
22        else
23          exit;
24       end if;
25    end loop;
26    return substr (l_return, l_pos);
27 end CALL_AW;
28 
29 procedure ATTACH_AW(p_schema in varchar2,
30                     p_aw     in varchar2)
31    is
32       l_ret  varchar2(16);
33       l_aw   varchar2(32);
34 begin
35    l_aw := p_schema||'.'||p_aw;
36    dbms_aw.execute ('awwaittime = 200');
37    if (upper (CALL_AW('shw aw (attached '''||p_aw||''')')) = 'YES' and
38        upper(CALL_AW('shw aw (rw '''||p_aw||''')')) = 'NO') then
39       dbms_aw.execute ('aw detach '||p_aw);
40    end if;
41    if (upper (CALL_AW('shw aw (attached '''||p_aw||''')')) <> 'YES') then
42       dbms_aw.execute ('aw attach '||l_aw||' rw wait');
43    end if;
44 end ATTACH_AW;
45 
46 procedure CREATE_OBJECT(p_object_name       in varchar2,
47                         p_object_type       in varchar2,
48                         p_object_attributes in varchar2,
49                         p_object_ld         in varchar2)
50    is
51       l_ret   varchar2(16);
52 begin
53    if (upper (CALL_AW('shw exists ('''||p_object_name||''')')) = 'YES') then
54       if (p_object_type = 'DIMENSION') then
55          dbms_aw.execute ('cns '||p_object_name);
56          dbms_aw.execute ('property delete all');
57        else
58          dbms_aw.execute ('dlt '||p_object_name);
59          dbms_aw.execute ('dfn '||p_object_name||' '||p_object_type||' '||
60                           p_object_attributes);
61       end if;
62     else
63       dbms_aw.execute ('dfn '||p_object_name||' '||p_object_type||' '||
64                        p_object_attributes);
65    end if;
66    dbms_aw.execute ('ld '||p_object_ld);
67    m_curr_obj := p_object_name;
68 end CREATE_OBJECT;
69 
70 procedure DELETE_OBJECT(p_object_name   in varchar2)
71         is
72 begin
73         if(upper (CALL_AW('shw exists ('''||p_object_name||''')')) = 'YES') then
74                 dbms_aw.execute('delete ' || p_object_name);
75         end if;
76 end DELETE_OBJECT;
77 
78 procedure LOAD_DIMENSION_INT(p_dimension_size in number)
79    is
80       l_size  number;
81       l_diff  number;
82 begin
83    l_size := to_number(CALL_AW('shw obj(dimmax '''||m_curr_obj||''')'));
84    if (l_size < p_dimension_size) then
85       dbms_aw.execute('mnt '||m_curr_obj||' add '||
86                       (p_dimension_size - l_size));
87     elsif (l_size > p_dimension_size) then
88       dbms_aw.execute('mnt '||m_curr_obj||' delete last '||
89                       (l_size - p_dimension_size));
90    end if;
91 end LOAD_DIMENSION_INT;
92 
93 procedure LOAD_DIMENSION_VALUES(p_dimension_values in DIM_VALUES)
94    is
95       i       number := 0;
96       l_value varchar2(32);
97       l_size  number;
98 begin
99    loop
100       if not p_dimension_values.exists(i) then
101          exit;
102       end if;
103       l_value := p_dimension_values(i);
104 
105 
106     --  If not a conjoint, add surrounding parenthesis:
107 
108       if (instr (l_value, '<') <> 1) then
109          l_value := ''''||l_value||'''';
110       end if;
111 
112       if (upper (CALL_AW ('shw isvalue ('||m_curr_obj||' '||l_value||')'))
113           = 'NO') then
114          dbms_aw.execute ('mnt '||m_curr_obj||' add '||l_value||'');
115       end if;
116       dbms_aw.execute('mnt '||m_curr_obj||' move '||l_value||' after '||i);
117       i := i + 1;
118    end loop;
119 
120 
121    --  Remove extra entries:
122 
123    l_size := to_number(CALL_AW ('shw obj(dimmax '''||m_curr_obj||''')'));
124    if (l_size > i) then
125       dbms_aw.execute ('lmt '||m_curr_obj||' to last '||(l_size - i));
126       dbms_aw.execute ('mnt '||m_curr_obj||' delete values('||m_curr_obj||')');
127    end if;
128 
129 end LOAD_DIMENSION_VALUES;
130 
131 procedure LOAD_FORMULA(p_formula in varchar2)
132    is
133 begin
134    dbms_aw.execute ('cns '||m_curr_obj);
135    dbms_aw.execute('eq '||p_formula);
136 end LOAD_FORMULA;
137 
138 procedure LOAD_MODEL(p_model in varchar2)
139    is
140 begin
141    dbms_aw.execute ('cns '||m_curr_obj);
142    dbms_aw.execute('model;'||p_model||';end');
143 end LOAD_MODEL;
144 
145 procedure LOAD_PROGRAM(p_program in CLOB)
146    is
147       templob CLOB;
148 begin
149    templob := 'program;';
150    dbms_aw.execute ('cns '||m_curr_obj);
151    dbms_lob.append(templob, p_program);
152    dbms_lob.append(templob, ';end');
153    templob := dbms_aw.interpclob(templob);
154 end LOAD_PROGRAM;
155 
156 procedure LOAD_PROPERTIES(p_properties in PROP_VALUES)
157    is
158       l_key varchar2(32);
159 begin
160    dbms_aw.execute ('cns '||m_curr_obj);
161    l_key := p_properties.FIRST;
162    while (l_key is not null)
163    loop
164       dbms_aw.execute('prp '''||l_key||''' '||p_properties(l_key));
165       l_key := p_properties.NEXT(l_key);
166    end loop;
167 end LOAD_PROPERTIES;
168 
169 procedure LOAD_VALUESET(p_dimension_values in DIM_VALUES)
170    is
171       i       number := 0;
172       l_value varchar2(32);
173       l_size  number;
174 begin
175    dbms_aw.execute('lmt '||m_curr_obj||' to null');
176    loop
177       if not p_dimension_values.exists(i) then
178          exit;
179       end if;
180       l_value := p_dimension_values(i);
181       dbms_aw.execute('lmt '||m_curr_obj||' add '||l_value);
182       i := i + 1;
183    end loop;
184 
185 end LOAD_VALUESET;
186 
187 procedure UPDATE_AW
188    is
189 begin
190    dbms_aw.execute ('upd');
191 end UPDATE_AW;
192 begin
193   m_ascii_nl := ascii(fnd_global.local_chr(10));
194 end AD_AW_LOADER;