DBA Data[Home] [Help]

PACKAGE BODY: APPS.CZ_PS_MGR

Source


1 package body CZ_PS_MGR as
2 /*  $Header: czpsmgrb.pls 120.4 2006/06/29 16:06:59 skudryav ship $	*/
3 
4 
5 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
7 
8 procedure ASSESS_DATA is
9 begin
10 null;
11 end;
12 
13 
14 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
16 
17 procedure REDO_STATISTICS is
18 begin
19 CZ_BASE_MGR.REDO_STATISTICS('PS');
20 end;
21 
22 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
23 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
24 
25 procedure TRIGGERS_ENABLED
26 (Switch in varchar2) is
27 begin
28   CZ_BASE_MGR.TRIGGERS_ENABLED('PS',Switch);
29 end;
30 
31 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
32 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
33 
34 procedure CONSTRAINTS_ENABLED
35 (Switch in varchar2) is
36 begin
37   CZ_BASE_MGR.CONSTRAINTS_ENABLED('PS',Switch);
38 end;
39 
40 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
41 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
42 
43 procedure REDO_SEQUENCES
44 (RedoStart_Flag in varchar2 , -- default '0',
45  incr           in integer default null) is
46 begin
47   CZ_BASE_MGR.REDO_SEQUENCES('PS',RedoStart_Flag,incr);
48 end;
49 
50 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
51 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
52 
53 PROCEDURE delete_Orphaned_Nodes IS
54     TYPE t_arr      IS TABLE OF INTEGER INDEX BY BINARY_INTEGER;
55     t_devl_project_id t_arr;
56     t_ps_node_id      t_arr;
57     t_intl_text_id    t_arr;
58     t_rule_id         t_arr;
59     t_reason_id       t_arr;
60 BEGIN
61 
62     BEGIN
63 
64         SELECT DISTINCT devl_project_id
65         BULK COLLECT INTO t_devl_project_id
66         FROM CZ_PS_NODES a WHERE NOT EXISTS
67         (SELECT devl_project_id FROM CZ_DEVL_PROJECTS WHERE devl_project_id=a.devl_project_id
68          AND deleted_flag='0') AND devl_project_id NOT IN(0,1);
69 
70         DECLARE
71           CURSOR C1 IS
72           SELECT ps_node_id,intl_text_id
73           FROM CZ_PS_NODES a WHERE NOT EXISTS
74           (SELECT devl_project_id FROM CZ_DEVL_PROJECTS WHERE devl_project_id=a.devl_project_id
75            AND deleted_flag='0') AND devl_project_id NOT IN(0,1);
76         BEGIN
77           OPEN C1;
78           LOOP
79              t_ps_node_id.delete; t_intl_text_id.delete;
80              FETCH C1 BULK COLLECT INTO t_ps_node_id,t_intl_text_id LIMIT CZ_BASE_MGR.BATCH_SIZE;
81              EXIT WHEN C1%NOTFOUND AND t_ps_node_id.COUNT = 0;
82              IF t_ps_node_id.Count>0 THEN
83                FORALL i IN t_ps_node_id.First..t_ps_node_id.Last
84                   UPDATE CZ_PS_NODES SET deleted_flag='1'
85                   WHERE ps_node_id=t_ps_node_id(i);
86                COMMIT;
87              END IF;
88              IF t_intl_text_id.Count>0 THEN
89                FORALL i IN t_intl_text_id.First..t_intl_text_id.Last
90                   DELETE FROM CZ_LOCALIZED_TEXTS a
91 		  WHERE a.intl_text_id=t_intl_text_id(i)  AND a.seeded_flag<>'1'
92 		  AND not exists (SELECT null FROM CZ_PS_NODES b
93 		                  WHERE b.deleted_flag='0'
94 		                  and b.intl_text_id = a.intl_text_id);
95                COMMIT;
96              END IF;
97              IF t_ps_node_id.Count>0 THEN
98                FORALL i IN t_ps_node_id.First..t_ps_node_id.Last
99                   UPDATE CZ_LCE_HEADERS SET deleted_flag='1'
100                   WHERE component_id=t_ps_node_id(i);
101                COMMIT;
102              END IF;
103           END LOOP;
104           CLOSE C1;
105         END;
106         IF t_devl_project_id.Count>0 THEN
107               FORALL i IN t_devl_project_id.First..t_devl_project_id.Last
108                   UPDATE CZ_RULES SET deleted_flag='1'
109                   WHERE devl_project_id=t_devl_project_id(i);
110            COMMIT;
111         END IF;
112 
113     EXCEPTION
114         WHEN OTHERS THEN
115             CZ_BASE_MGR.LOG_REPORT('CZ_PS_MGR.delete_Orphaned_Nodes',SQLERRM );
116             raise;
117     END;
118 
119     DECLARE
120        CURSOR C1 IS
121        SELECT rule_id,reason_id
122        FROM CZ_RULES a
123        WHERE NOT EXISTS
124        (SELECT devl_project_id FROM CZ_DEVL_PROJECTS WHERE devl_project_id=a.devl_project_id
125         AND deleted_flag='0') AND a.seeded_flag<>'1' AND devl_project_id NOT IN(0,1);
126 
127     BEGIN
128        OPEN C1;
129        LOOP
130          t_rule_id.delete; t_reason_id.delete;
131          FETCH C1 BULK COLLECT INTO t_rule_id,t_reason_id
132          LIMIT CZ_BASE_MGR.BATCH_SIZE;
133          EXIT WHEN C1%NOTFOUND AND t_rule_id.COUNT = 0;
134 
135          IF t_reason_id.Count>0 THEN
136             FORALL i IN t_reason_id.First..t_reason_id.Last
137                    DELETE FROM CZ_LOCALIZED_TEXTS
138                    WHERE intl_text_id=t_reason_id(i) AND seeded_flag<>'1';
139             COMMIT;
140          END IF;
141 
142          IF t_rule_id.Count>0 THEN
143             FORALL i IN t_rule_id.First..t_rule_id.Last
144                    UPDATE CZ_RULES SET deleted_flag='1'
145                    WHERE rule_id=t_rule_id(i) AND seeded_flag<>'1';
146             COMMIT;
147          END IF;
148        END LOOP;
149        ClOSE C1;
150     EXCEPTION
151          WHEN OTHERS THEN
152              CZ_BASE_MGR.LOG_REPORT('CZ_PS_MGR.delete_Orphaned_Nodes',SQLERRM );
153                  raise;
154     END;
155 
156          CZ_BASE_MGR.exec('CZ_PS_NODES','WHERE NOT EXISTS '||
157          '(SELECT devl_project_id FROM CZ_DEVL_PROJECTS WHERE devl_project_id=cz_ps_nodes.devl_project_id)',
158          'ps_node_id', FALSE);
159 
160 END;
161 
162 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
163 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
164 
165 PROCEDURE update_deleted_flag(p_ps_node_id IN NUMBER) IS
166 BEGIN
167   FOR child IN (SELECT ps_node_id FROM cz_ps_nodes WHERE parent_id = p_ps_node_id
168                    AND deleted_flag = '0') LOOP
169 
170     UPDATE cz_ps_nodes SET deleted_flag = '1' WHERE ps_node_id = child.ps_node_id;
171     update_deleted_flag(child.ps_node_id);
172   END LOOP;
173 END update_deleted_flag;
174 
175 procedure Propogate_DeletedFlag is
176 
177 begin
178 
179 CZ_BASE_MGR.exec('CZ_MODEL_REF_EXPLS','where deleted_flag='''||'0'||''' AND '||
180                  'model_id in(select devl_project_id from cz_devl_projects where deleted_flag='''||'1'||''')',
181                  'model_ref_expl_id',FALSE);
182 
183 CZ_BASE_MGR.exec('CZ_PS_NODES','where deleted_flag='''||'0'||''' AND '||
184                  'devl_project_id in(select devl_project_id from cz_devl_projects where deleted_flag='''||'1'||''')',
185                  'ps_node_id',FALSE);
186 
187 -- necessary?
188 /*
189 for n in(select ps_node_id from cz_ps_nodes where deleted_flag='1')
190   loop
191      update cz_ps_nodes
192      set deleted_flag='1' where deleted_flag='0' and ps_node_id in
193      (select  ps_node_id from cz_ps_nodes
194       start with ps_node_id=n.ps_node_id
195       connect by prior ps_node_id=parent_id);
196      commit;
197   end loop;
198 */
199 
200 CZ_BASE_MGR.exec('CZ_RULE_FOLDERS','where deleted_flag='''||'0'||''' AND '||
201                  'devl_project_id in(select devl_project_id from cz_devl_projects where deleted_flag=''1'' and devl_project_id NOT IN(0,1))',
202                  'rule_folder_id','object_type',FALSE);
203 
204 
205 CZ_BASE_MGR.exec('CZ_RULES','where deleted_flag='''||'0'||''' AND seeded_flag<>'''||'1'||''' AND '||
206                  'devl_project_id in(select devl_project_id from cz_devl_projects where deleted_flag=''1'' and devl_project_id NOT IN(0,1))',
207                  'rule_id',FALSE);
208 
209 CZ_BASE_MGR.exec('CZ_GRID_DEFS','where deleted_flag='''||'0'||''' AND '||
210                  'devl_project_id in(select devl_project_id from cz_devl_projects where deleted_flag='''||'1'||''')',
211                  'grid_id',FALSE);
212 
213 CZ_BASE_MGR.exec('CZ_FUNC_COMP_SPECS','where deleted_flag='''||'0'||''' AND '||
214                  'devl_project_id in(select devl_project_id from cz_devl_projects where deleted_flag='''||'1'||''')',
215                  'func_comp_id',FALSE);
216 
217 CZ_BASE_MGR.exec('CZ_COMBO_FEATURES','where deleted_flag='''||'0'||''' AND '||
218                  'rule_id in(select rule_id from cz_rules where deleted_flag='''||'1'||''')',
219                  'feature_id','model_ref_expl_id','rule_id',FALSE);
220 
221 CZ_BASE_MGR.exec('CZ_POPULATORS','where deleted_flag='''||'0'||'''  AND seeded_flag<>'''||'1'||''' AND '||
222                  'owned_by_node_id in(select ps_node_id from CZ_PS_NODES where deleted_flag='''||'1'||''')',
223                  'populator_id',FALSE);
224 
225 CZ_BASE_MGR.exec('CZ_PS_PROP_VALS','where deleted_flag='''||'0'||''' AND '||
226                  'ps_node_id in(select ps_node_id from CZ_PS_NODES where deleted_flag='''||'1'||''')',
227                  'property_id','ps_node_id',TRUE);
228 
229 CZ_BASE_MGR.exec('CZ_SUB_CON_SETS','where deleted_flag='''||'0'||''' AND '||
230                  'sub_cons_id in(select sub_cons_id from CZ_PS_NODES where deleted_flag='''||'1'||''')',
231                  'sub_cons_id',FALSE);
232 
233 CZ_BASE_MGR.exec('CZ_FILTER_SETS','where deleted_flag='''||'0'||''' AND '||
234                  'rule_id in(select rule_id from CZ_RULES where deleted_flag='''||'1'||''')',
235                  'filter_set_id',FALSE);
236 
237 CZ_BASE_MGR.exec('CZ_EXPRESSION_NODES','where deleted_flag='''||'0'||''' AND seeded_flag<>'''||'1'||''' AND '||
238                  'rule_id in(select rule_id from CZ_RULES where deleted_flag='''||'1'||''')',
239                  'expr_node_id',TRUE);
240 
241 CZ_BASE_MGR.exec('CZ_LCE_HEADERS','where deleted_flag='''||'0'||''' AND '||
242                  'component_id in(select ps_node_id from CZ_PS_NODES where deleted_flag='''||'1'||''')',
243                  'lce_header_id',FALSE);
244 
245 CZ_BASE_MGR.exec('CZ_LCE_LOAD_SPECS','where deleted_flag='''||'0'||''' AND '||
246                  'lce_header_id in(select lce_header_id from CZ_LCE_HEADERS where deleted_flag='''||'1'||''')',
247                  'lce_header_id','attachment_expl_id','required_expl_id',TRUE);
248 
249 CZ_BASE_MGR.exec('CZ_LCE_TEXTS','where '||
250                  'lce_header_id in(select lce_header_id from CZ_LCE_HEADERS where deleted_flag='''||'1'||''')',
251                  'lce_header_id','seq_nbr',TRUE);
252 
253 CZ_BASE_MGR.exec('CZ_LOCALIZED_TEXTS','where deleted_flag=''0''  AND seeded_flag<>'''||'1'||''' AND '||
254                  ' EXISTS(select NULL from CZ_PS_NODES where intl_text_id=cz_localized_texts.intl_text_id and deleted_flag=''1'''||
255                  ') and not exists(select null from CZ_PS_NODES where intl_text_id=cz_localized_texts.intl_text_id and '||
256                  ' deleted_flag=''0'')',
257                  'language','intl_text_id',TRUE);
258 
259 CZ_BASE_MGR.exec('CZ_LOCALIZED_TEXTS','where deleted_flag='''||'0'||'''  AND seeded_flag<>'''||'1'||''' AND '||
260                  'exists (select reason_id from CZ_RULES where reason_id = cz_localized_texts.intl_text_id and deleted_flag='''||'1'||''') and '||
261                  'not exists(select reason_id from CZ_RULES where reason_id=cz_localized_texts.intl_text_id and deleted_flag='''||'0'||''')',
262                  'language','intl_text_id',TRUE);
263 
264 CZ_BASE_MGR.exec('CZ_DES_CHART_CELLS','where deleted_flag='''||'0'||''' AND '||
265                  'rule_id in(select rule_id from CZ_RULES where deleted_flag='''||'1'||''')',
266                  'RULE_ID','PRIMARY_OPT_ID','SECONDARY_OPT_ID','SECONDARY_FEAT_EXPL_ID',TRUE);
267 
268 CZ_BASE_MGR.exec('CZ_DES_CHART_COLUMNS','where '||
269                  'rule_id in(select rule_id from CZ_RULES where deleted_flag='''||'1'||''')',
270                  'rule_id','option_id',TRUE);
271 
272 CZ_BASE_MGR.exec('CZ_DES_CHART_FEATURES','where deleted_flag='''||'0'||''' AND '||
273                  'rule_id in(select rule_id from CZ_RULES where deleted_flag='''||'1'||''')',
274                  'RULE_ID', 'FEATURE_ID', 'MODEL_REF_EXPL_ID', FALSE);
275 
276 CZ_BASE_MGR.exec('CZ_ARCHIVE_REFS','where deleted_flag='''||'0'||''' AND '||
277                  'archive_id in (select archive_id from cz_archives where deleted_flag='''||'1'||''')',
278                  'DEVL_PROJECT_ID', 'SEQ_NBR', 'ARCHIVE_ID', FALSE);
279 
280 CZ_BASE_MGR.exec('CZ_ARCHIVE_REFS','where deleted_flag='''||'0'||''' AND '||
281                  'devl_project_id in (select devl_project_id from cz_devl_projects where deleted_flag='''||'1'||''')',
282                  'DEVL_PROJECT_ID', 'SEQ_NBR', 'ARCHIVE_ID', FALSE);
283 
284 CZ_BASE_MGR.exec('CZ_LOCALIZED_TEXTS','where deleted_flag='''||'0'||''' AND '||
285                  'exists (select intl_text_id from CZ_DEVL_PROJECTS where intl_text_id = cz_localized_texts.intl_text_id and deleted_flag=''1'' and devl_project_id NOT IN(0,1))',
286                  'language','intl_text_id',TRUE);
287 
288 CZ_BASE_MGR.exec('CZ_LOCALIZED_TEXTS','where deleted_flag='''||'0'||''' AND '||
289                  'exists (select violation_text_id from CZ_PS_NODES where violation_text_id = cz_localized_texts.intl_text_id and deleted_flag='''||'1'||''')',
290                  'language','intl_text_id',TRUE);
291 
292 CZ_BASE_MGR.exec('CZ_LOCALIZED_TEXTS','where deleted_flag='''||'0'||''' AND '||
293                  'exists (select unsatisfied_msg_id from CZ_RULES where unsatisfied_msg_id = cz_localized_texts.intl_text_id and deleted_flag='''||'1'||''')',
294                  'language','intl_text_id',TRUE);
295 
296 CZ_BASE_MGR.exec('CZ_LOCALIZED_TEXTS','where deleted_flag='''||'0'||''' AND '||
297                  'exists (select devl_project_id from CZ_DEVL_PROJECTS where devl_project_id = cz_localized_texts.model_id and deleted_flag=''1'' and devl_project_id NOT IN(0,1))',
298                  'language','intl_text_id',TRUE);
299 
300 delete_Orphaned_Nodes;
301 
302 commit;
303 
304 exception
305 when others then
306      --null;
307      raise;
308 end;
309 
310 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
311 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
312 
313 procedure PURGE is
314 
315 
316   TYPE number_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
317 
318   -- changes for bug #5093264
319   -- this cursor returns model nodes which refer to a  model that does not exist.
320   -- ( such nodes will be deleted )
321   CURSOR del_nodes_cur IS
322     SELECT a.ps_node_id
323       FROM CZ_PS_NODES a WHERE a.reference_id IS NOT NULL AND NOT EXISTS
324          (SELECT NULL FROM CZ_DEVL_PROJECTS b
325           WHERE b.devl_project_id=a.reference_id AND b.deleted_flag='0');
326 
327   t_ps_node_id   number_tbl_type;
328 
329 begin
330     --
331     -- propogate deleted_flag for all subschema's tables
332     --
333     Propogate_DeletedFlag;
334 
335     --
336     -- delete views associated with the deleted Populators --
337     --
338     for i in(select view_name from cz_populators where deleted_flag='1')
339     loop
340        begin
341            execute immediate 'drop view '||i.view_name;
342        exception
343            when others then
344                 CZ_BASE_MGR.LOG_REPORT('CZ_PS_MGR.Purge','View "'||i.view_name||'" error :'||SQLERRM );
345        end;
346     end loop;
347 
348     --
349     -- apply Purge --
350     --
351     CZ_BASE_MGR.PURGE('PS');
352 
353     OPEN del_nodes_cur;
354 
355     LOOP
356       FETCH del_nodes_cur BULK COLLECT INTO t_ps_node_id
357       LIMIT 10000;
358       EXIT WHEN del_nodes_cur%NOTFOUND AND t_ps_node_id.COUNT = 0;
359 
360       IF t_ps_node_id.Count>0 THEN
361         FORALL i IN t_ps_node_id.First..t_ps_node_id.Last
362           DELETE FROM CZ_PS_NODES
363            WHERE ps_node_id=t_ps_node_id(i);
364         COMMIT;
365       END IF;
366     END LOOP;
367 
368     CLOSE del_nodes_cur;
369 
370 exception
371     when OTHERS then
372          raise;
373 end;
374 
375 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
376 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
377 
378 procedure RESET_CLEAR is
379 begin
380 null;
381 end;
382 
383 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
384 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
385 
386 procedure MODIFIED
387 (AS_OF in OUT NOCOPY date) is
388 begin
389 CZ_BASE_MGR.MODIFIED('PS',AS_OF);
390 end;
391 
392 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
393 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
394 
395 end;