[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;