DBA Data[Home] [Help]

PACKAGE BODY: APPS.CZ_PS_MGR

Source


1 package body CZ_PS_MGR as
2 /*  $Header: czpsmgrb.pls 120.8.12020000.4 2013/01/02 18:56:51 smanna 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 --Bug12608421 : Added Deleted_flag in ps_nodes query
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) AND deleted_flag <> '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 
83              CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before logical delete of CZ_PS_NODES : 2','CZ_PS_NODES',0,1);
84              IF t_ps_node_id.Count>0 THEN
85                FORALL i IN t_ps_node_id.First..t_ps_node_id.Last
86                   UPDATE CZ_PS_NODES SET deleted_flag='1'
87                   WHERE ps_node_id=t_ps_node_id(i);
88                COMMIT;
89              END IF;
90 
91              CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After logical delete of CZ_PS_NODES : 2','CZ_PS_NODES',t_ps_node_id.COUNT,1);
92              CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before physical delete of CZ_LOCALIZED_TEXTS : 2','CZ_LOCALIZED_TEXTS',0,2);
93              IF t_intl_text_id.Count>0 THEN
94                FORALL i IN t_intl_text_id.First..t_intl_text_id.Last
95                   DELETE FROM CZ_LOCALIZED_TEXTS a
96 		  WHERE a.intl_text_id=t_intl_text_id(i)  AND a.seeded_flag<>'1'
97 		  AND not exists (SELECT null FROM CZ_PS_NODES b
98 		                  WHERE b.deleted_flag='0'
99 		                  and b.intl_text_id = a.intl_text_id);
100                COMMIT;
101               CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After physical delete of CZ_LOCALIZED_TEXTS : 2','CZ_LOCALIZED_TEXTS',t_intl_text_id.COUNT,2);
102              END IF;
103              IF t_ps_node_id.Count>0 THEN
104                FORALL i IN t_ps_node_id.First..t_ps_node_id.Last
105                   UPDATE CZ_LCE_HEADERS SET deleted_flag='1'
106                   WHERE component_id=t_ps_node_id(i);
107                COMMIT;
108              END IF;
109           END LOOP;
110           CLOSE C1;
111         END;
112         IF t_devl_project_id.Count>0 THEN
113               FORALL i IN t_devl_project_id.First..t_devl_project_id.Last
114                   UPDATE CZ_RULES SET deleted_flag='1'
115                   WHERE devl_project_id=t_devl_project_id(i);
116            COMMIT;
117         END IF;
118 
119     EXCEPTION
120         WHEN OTHERS THEN
121             CZ_BASE_MGR.LOG_REPORT('CZ_PS_MGR.delete_Orphaned_Nodes',SQLERRM );
122             raise;
123     END;
124 
125     DECLARE
126        CURSOR C1 IS
127        SELECT rule_id,reason_id
128        FROM CZ_RULES a
129        WHERE NOT EXISTS
130        (SELECT devl_project_id FROM CZ_DEVL_PROJECTS WHERE devl_project_id=a.devl_project_id
131         AND deleted_flag='0') AND a.seeded_flag<>'1' AND devl_project_id NOT IN(0,1);
132 
133     BEGIN
134        OPEN C1;
135        LOOP
136          t_rule_id.delete; t_reason_id.delete;
137          FETCH C1 BULK COLLECT INTO t_rule_id,t_reason_id
138          LIMIT CZ_BASE_MGR.BATCH_SIZE;
139          EXIT WHEN C1%NOTFOUND AND t_rule_id.COUNT = 0;
140 
141          CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before physical delete of CZ_LOCALIZED_TEXTS (reason_id): 2','CZ_LOCALIZED_TEXTS',0,2);
142          IF t_reason_id.Count>0 THEN
143             FORALL i IN t_reason_id.First..t_reason_id.Last
144                    DELETE FROM CZ_LOCALIZED_TEXTS
145                    WHERE intl_text_id=t_reason_id(i) AND seeded_flag<>'1';
146             COMMIT;
147           CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After physical delete of CZ_LOCALIZED_TEXTS (reason_id): 2','CZ_LOCALIZED_TEXTS',t_reason_id.COUNT,2);
148          END IF;
149 
150          IF t_rule_id.Count>0 THEN
151             FORALL i IN t_rule_id.First..t_rule_id.Last
152                    UPDATE CZ_RULES SET deleted_flag='1'
153                    WHERE rule_id=t_rule_id(i) AND seeded_flag<>'1';
154             COMMIT;
155          END IF;
156        END LOOP;
157        ClOSE C1;
158     EXCEPTION
159          WHEN OTHERS THEN
160              CZ_BASE_MGR.LOG_REPORT('CZ_PS_MGR.delete_Orphaned_Nodes',SQLERRM );
161                  raise;
162     END;
163 
164          CZ_BASE_MGR.exec('CZ_PS_NODES','WHERE NOT EXISTS '||
165          '(SELECT devl_project_id FROM CZ_DEVL_PROJECTS WHERE devl_project_id=cz_ps_nodes.devl_project_id)',
166          'ps_node_id', FALSE);
167 
168 --SKM:Bug13927565 . Physical Delete of Orphan Record for cz_ps_prop_vals
169 --SKM:Bug16042373. Removing Orphan cz_ps_prop_vals deletion as this causes publication & Purge concurrency issue that SUN reported.
170 --This is safe to remove as the clean up is done and there will not be any orphan cz_ps_prop_vals
171   --     CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before Physical delete of CZ_PS_PROP_VALS (Orphan):','CZ_PS_PROP_VALS',0,2);
172 
173   --       CZ_BASE_MGR.exec('CZ_PS_PROP_VALS','WHERE NOT EXISTS '||
174   --       '(SELECT null FROM CZ_PS_NODES WHERE ps_node_id=cz_ps_prop_vals.ps_node_id)',
175   --       'ps_node_id', TRUE);
176 
177   --      CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After Physical delete of CZ_PS_PROP_VALS (Orphan):','CZ_PS_PROP_VALS',0,2);
178 
179 --SKM:Bug13946677 . Physical Delete of Orphan Record for cz_signatures and cz_sinature_arguments
180 
181          CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before Physical delete of CZ_SIGNATURES (Orphan):','CZ_SIGNATURES',0,2);
182 
183          CZ_BASE_MGR.exec('CZ_SIGNATURES','WHERE NOT EXISTS '||
184          '(SELECT null FROM CZ_EXPRESSION_NODES WHERE (argument_signature_id=cz_signatures.signature_id OR param_signature_id=cz_signatures.signature_id)) '||
185          'AND signature_type=''JME'' AND NVL(seeded_flag,''0'') <> ''1''',
186          'signature_id', TRUE);
187 
188          CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After Physical delete of CZ_SIGNATURES (Orphan):','CZ_SIGNATURES',0,2);
189 
190          CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before Physical delete of CZ_SIGNATURE_ARGUMENTS (Orphan):','CZ_SIGNATURE_ARGUMENTS',0,2);
191 
192          CZ_BASE_MGR.exec('CZ_SIGNATURE_ARGUMENTS','WHERE NOT EXISTS '||
193          '(SELECT null FROM CZ_EXPRESSION_NODES WHERE param_signature_id=cz_signature_arguments.argument_signature_id  OR argument_signature_id = cz_signature_arguments.argument_signature_id) '||
194          ' AND NVL(seeded_flag,''0'') <> ''1''',
195          'argument_signature_id', TRUE);
196 
197          CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After Physical delete of CZ_SIGNATURE_ARGUMENTS (Orphan):','CZ_SIGNATURE_ARGUMENTS',0,2);
198 
199 END;
200 
201 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
202 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
203 
204 PROCEDURE update_deleted_flag(p_ps_node_id IN NUMBER) IS
205  updCount NUMBER:=0;
206 BEGIN
207  CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before logical delete of CZ_PS_NODES : 1','CZ_PS_NODES',0,1);
208   FOR child IN (SELECT ps_node_id FROM cz_ps_nodes WHERE parent_id = p_ps_node_id
209                    AND deleted_flag = '0') LOOP
210 
211     UPDATE cz_ps_nodes SET deleted_flag = '1' WHERE ps_node_id = child.ps_node_id;
212     updCount := updCount + SQL%ROWCOUNT;
213     update_deleted_flag(child.ps_node_id);
214   END LOOP;
215   CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After logical delete of CZ_PS_NODES : 1','CZ_PS_NODES',updCount, 1);
216  updCount := 0;
217 END update_deleted_flag;
218 
219 procedure Propogate_DeletedFlag is
220 
221 begin
222 
223 CZ_BASE_MGR.exec('CZ_MODEL_REF_EXPLS','where deleted_flag='''||'0'||''' AND '||
224                  'model_id in(select devl_project_id from cz_devl_projects where deleted_flag='''||'1'||''')',
225                  'model_ref_expl_id',FALSE);
226 
227 --
228 -- vsingava 24th Dec '10. Bug10425915
229 -- Just for Sun, a temporary change. We must have done this by a parallel script.
230 -- TODO: IMPORTANT We need to revert this change.
231 -- Reverted the changes as a part of the bug#12608421 (As a one part of it)
232 
233  CZ_BASE_MGR.exec('CZ_PS_NODES','where deleted_flag='''||'0'||''' AND '||
234                  'devl_project_id in(select devl_project_id from cz_devl_projects where deleted_flag='''||'1'||''')',
235                  'ps_node_id',FALSE);
236 
237 -- necessary?
238 /*
239 for n in(select ps_node_id from cz_ps_nodes where deleted_flag='1')
240   loop
241      update cz_ps_nodes
242      set deleted_flag='1' where deleted_flag='0' and ps_node_id in
243      (select  ps_node_id from cz_ps_nodes
244       start with ps_node_id=n.ps_node_id
245       connect by prior ps_node_id=parent_id);
246      commit;
247   end loop;
248 */
249 
250 CZ_BASE_MGR.exec('CZ_RULE_FOLDERS','where deleted_flag='''||'0'||''' AND '||
251                  'devl_project_id in(select devl_project_id from cz_devl_projects where deleted_flag=''1'' and devl_project_id NOT IN(0,1))',
252                  'rule_folder_id','object_type',FALSE);
253 
254 
255 CZ_BASE_MGR.exec('CZ_RULES','where deleted_flag='''||'0'||''' AND seeded_flag<>'''||'1'||''' AND '||
256                  'devl_project_id in(select devl_project_id from cz_devl_projects where deleted_flag=''1'' and devl_project_id NOT IN(0,1))',
257                  'rule_id',FALSE);
258 
259 CZ_BASE_MGR.exec('CZ_GRID_DEFS','where deleted_flag='''||'0'||''' AND '||
260                  'devl_project_id in(select devl_project_id from cz_devl_projects where deleted_flag='''||'1'||''')',
261                  'grid_id',FALSE);
262 
263 CZ_BASE_MGR.exec('CZ_FUNC_COMP_SPECS','where deleted_flag='''||'0'||''' AND '||
264                  'devl_project_id in(select devl_project_id from cz_devl_projects where deleted_flag='''||'1'||''')',
265                  'func_comp_id',FALSE);
266 
267 CZ_BASE_MGR.exec('CZ_COMBO_FEATURES','where deleted_flag='''||'0'||''' AND '||
268                  'rule_id in(select rule_id from cz_rules where deleted_flag='''||'1'||''')',
269                  'feature_id','model_ref_expl_id','rule_id',FALSE);
270 
271 CZ_BASE_MGR.exec('CZ_POPULATORS','where deleted_flag='''||'0'||'''  AND seeded_flag<>'''||'1'||''' AND '||
272                  'owned_by_node_id in(select ps_node_id from CZ_PS_NODES where deleted_flag='''||'1'||''')',
273                  'populator_id',FALSE);
274 
275 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before physical delete of CZ_PS_PROP_VALS : 1','CZ_PS_PROP_VALS',0,2);
276 CZ_BASE_MGR.exec('CZ_PS_PROP_VALS','where deleted_flag='''||'0'||''' AND '||
277                  'ps_node_id in(select ps_node_id from CZ_PS_NODES where deleted_flag='''||'1'||''')',
278                  'property_id','ps_node_id',TRUE);
279 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After physical delete of CZ_PS_PROP_VALS : 1','CZ_PS_PROP_VALS',0,2);
280 
281 CZ_BASE_MGR.exec('CZ_SUB_CON_SETS','where deleted_flag='''||'0'||''' AND '||
282                  'sub_cons_id in(select sub_cons_id from CZ_PS_NODES where deleted_flag='''||'1'||''')',
283                  'sub_cons_id',FALSE);
284 
285 CZ_BASE_MGR.exec('CZ_FILTER_SETS','where deleted_flag='''||'0'||''' AND '||
286                  'rule_id in(select rule_id from CZ_RULES where deleted_flag='''||'1'||''')',
287                  'filter_set_id',FALSE);
288 
289 CZ_BASE_MGR.exec('CZ_EXPRESSION_NODES','where deleted_flag='''||'0'||''' AND seeded_flag<>'''||'1'||''' AND '||
290                  'rule_id in(select rule_id from CZ_RULES where deleted_flag='''||'1'||''')',
291                  'expr_node_id',TRUE);
292 
293 CZ_BASE_MGR.exec('CZ_LCE_HEADERS','where deleted_flag='''||'0'||''' AND '||
294                  'component_id in(select ps_node_id from CZ_PS_NODES where deleted_flag='''||'1'||''')',
295                  'lce_header_id',FALSE);
296 
297 CZ_BASE_MGR.exec('CZ_LCE_LOAD_SPECS','where deleted_flag='''||'0'||''' AND '||
298                  'lce_header_id in(select lce_header_id from CZ_LCE_HEADERS where deleted_flag='''||'1'||''')',
299                  'lce_header_id','attachment_expl_id','required_expl_id',TRUE);
300 
301 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before physical delete of CZ_LCE_TEXTS : 1','CZ_LCE_TEXTS',0,2);
302 CZ_BASE_MGR.exec('CZ_LCE_TEXTS','where '||
303                  'lce_header_id in(select lce_header_id from CZ_LCE_HEADERS where deleted_flag='''||'1'||''')',
304                  'lce_header_id','seq_nbr',TRUE);
305 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After physical delete of CZ_LCE_TEXTS : 1','CZ_LCE_TEXTS',0,2);
306 
307 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before physical delete of CZ_LOCALIZED_TEXTS (ps_nodes.intl_text_id): 1','CZ_LOCALIZED_TEXTS',0,2);
308 CZ_BASE_MGR.exec('CZ_LOCALIZED_TEXTS','where deleted_flag=''0''  AND seeded_flag<>'''||'1'||''' AND '||
309                  ' EXISTS(select NULL from CZ_PS_NODES where intl_text_id=cz_localized_texts.intl_text_id and deleted_flag=''1'''||
310                  ') and not exists(select null from CZ_PS_NODES where intl_text_id=cz_localized_texts.intl_text_id and '||
311                  ' deleted_flag=''0'')',
312                  'language','intl_text_id',TRUE);
313 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After physical delete of CZ_LOCALIZED_TEXTS (ps_nodes.intl_text_id): 1','CZ_LOCALIZED_TEXTS',0,2);
314 
315 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before physical delete of CZ_LOCALIZED_TEXTS (ps_nodes.reason_id): 2','CZ_LOCALIZED_TEXTS',0,2);
316 CZ_BASE_MGR.exec('CZ_LOCALIZED_TEXTS','where deleted_flag='''||'0'||'''  AND seeded_flag<>'''||'1'||''' AND '||
317                  'exists (select reason_id from CZ_RULES where reason_id = cz_localized_texts.intl_text_id and deleted_flag='''||'1'||''') and '||
318                  'not exists(select reason_id from CZ_RULES where reason_id=cz_localized_texts.intl_text_id and deleted_flag='''||'0'||''')',
319                  'language','intl_text_id',TRUE);
320 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After physical delete of CZ_LOCALIZED_TEXTS (ps_nodes.reason_id): 2','CZ_LOCALIZED_TEXTS',0,2);
321 
322 CZ_BASE_MGR.exec('CZ_DES_CHART_CELLS','where deleted_flag='''||'0'||''' AND '||
323                  'rule_id in(select rule_id from CZ_RULES where deleted_flag='''||'1'||''')',
324                  'RULE_ID','PRIMARY_OPT_ID','SECONDARY_OPT_ID','SECONDARY_FEAT_EXPL_ID',TRUE);
325 
326 CZ_BASE_MGR.exec('CZ_DES_CHART_COLUMNS','where '||
327                  'rule_id in(select rule_id from CZ_RULES where deleted_flag='''||'1'||''')',
328                  'rule_id','option_id',TRUE);
329 
330 CZ_BASE_MGR.exec('CZ_DES_CHART_FEATURES','where deleted_flag='''||'0'||''' AND '||
331                  'rule_id in(select rule_id from CZ_RULES where deleted_flag='''||'1'||''')',
332                  'RULE_ID', 'FEATURE_ID', 'MODEL_REF_EXPL_ID', FALSE);
333 
334 CZ_BASE_MGR.exec('CZ_ARCHIVE_REFS','where deleted_flag='''||'0'||''' AND '||
335                  'archive_id in (select archive_id from cz_archives where deleted_flag='''||'1'||''')',
336                  'DEVL_PROJECT_ID', 'SEQ_NBR', 'ARCHIVE_ID', FALSE);
337 
338 CZ_BASE_MGR.exec('CZ_ARCHIVE_REFS','where deleted_flag='''||'0'||''' AND '||
339                  'devl_project_id in (select devl_project_id from cz_devl_projects where deleted_flag='''||'1'||''')',
340                  'DEVL_PROJECT_ID', 'SEQ_NBR', 'ARCHIVE_ID', FALSE);
341 
342 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before physical delete of CZ_LOCALIZED_TEXTS (devl_proj.intl_text_id): 3','CZ_LOCALIZED_TEXTS',0,2);
343 CZ_BASE_MGR.exec('CZ_LOCALIZED_TEXTS','where deleted_flag='''||'0'||''' AND '||
344                  '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))',
345                  'language','intl_text_id',TRUE);
346 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After physical delete of CZ_LOCALIZED_TEXTS (devl_proj.intl_text_id): 3','CZ_LOCALIZED_TEXTS',0,2);
347 
348 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before physical delete of CZ_LOCALIZED_TEXTS (ps_nodes.violation_text): 4','CZ_LOCALIZED_TEXTS',0,2);
349 CZ_BASE_MGR.exec('CZ_LOCALIZED_TEXTS','where deleted_flag='''||'0'||''' AND '||
350                  'exists (select violation_text_id from CZ_PS_NODES where violation_text_id = cz_localized_texts.intl_text_id and deleted_flag='''||'1'||''')',
351                  'language','intl_text_id',TRUE);
352 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After physical delete of CZ_LOCALIZED_TEXTS (ps_nodes.violation_text): 4','CZ_LOCALIZED_TEXTS',0,2);
353 
354 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before physical delete of CZ_LOCALIZED_TEXTS (cz_rules.unsatisfied_msg): 5','CZ_LOCALIZED_TEXTS',0,2);
355 CZ_BASE_MGR.exec('CZ_LOCALIZED_TEXTS','where deleted_flag='''||'0'||''' AND '||
356                  'exists (select unsatisfied_msg_id from CZ_RULES where unsatisfied_msg_id = cz_localized_texts.intl_text_id and deleted_flag='''||'1'||''')',
357                  'language','intl_text_id',TRUE);
358 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After physical delete of CZ_LOCALIZED_TEXTS (cz_rules.unsatisfied_msg): 5','CZ_LOCALIZED_TEXTS',0,2);
359 
360 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before physical delete of CZ_LOCALIZED_TEXTS (deleted model_id): 6','CZ_LOCALIZED_TEXTS',0,2);
361 CZ_BASE_MGR.exec('CZ_LOCALIZED_TEXTS','where deleted_flag='''||'0'||''' AND '||
362                  '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))',
363                  'language','intl_text_id',TRUE);
364 CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After physical delete of CZ_LOCALIZED_TEXTS (deleted model_id): 6','CZ_LOCALIZED_TEXTS',0,2);
365 
366 delete_Orphaned_Nodes;
367 
368 commit;
369 
370 exception
371 when others then
372      --null;
373      raise;
374 end;
375 
376 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
377 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
378 
379 procedure PURGE is
380 
381 
382   TYPE number_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
383 
384   -- changes for bug #5093264
385   -- this cursor returns model nodes which refer to a  model that does not exist.
386   -- ( such nodes will be deleted )
387   CURSOR del_nodes_cur IS
388     SELECT a.ps_node_id
389       FROM CZ_PS_NODES a WHERE a.reference_id IS NOT NULL AND NOT EXISTS
390          (SELECT NULL FROM CZ_DEVL_PROJECTS b
391           WHERE b.devl_project_id=a.reference_id AND b.deleted_flag='0');
392 
393   t_ps_node_id   number_tbl_type;
394 
395 begin
396     --
397     -- propogate deleted_flag for all subschema's tables
398     --
399     Propogate_DeletedFlag;
400 
401     --
402     -- delete views associated with the deleted Populators --
403     --
404     for i in(select view_name from cz_populators where deleted_flag='1')
405     loop
406        begin
407            execute immediate 'drop view '||i.view_name;
408        exception
409            when others then
410                 CZ_BASE_MGR.LOG_REPORT('CZ_PS_MGR.Purge','View "'||i.view_name||'" error :'||SQLERRM );
411        end;
412     end loop;
413 
414     --
415     -- apply Purge --
416     --
417     CZ_BASE_MGR.PURGE('PS');
418 
419     OPEN del_nodes_cur;
420 
421     CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','Before physical delete of CZ_PS_NODES : 1','CZ_PS_NODES',0,2);
422     LOOP
423       FETCH del_nodes_cur BULK COLLECT INTO t_ps_node_id
424       LIMIT 10000;
425       EXIT WHEN del_nodes_cur%NOTFOUND AND t_ps_node_id.COUNT = 0;
426 
427       IF t_ps_node_id.Count>0 THEN
428         FORALL i IN t_ps_node_id.First..t_ps_node_id.Last
429           DELETE FROM CZ_PS_NODES
430            WHERE ps_node_id=t_ps_node_id(i);
431         COMMIT;
432       END IF;
433     END LOOP;
434 
435     CZ_BASE_MGR.WRITE_TO_DB_LOGS('CZ_PURGE_LOG','After physical delete of CZ_PS_NODES : 1','CZ_PS_NODES',t_ps_node_id.COUNT,2);
436 
437     CLOSE del_nodes_cur;
438 
439 exception
440     when OTHERS then
441          raise;
442 end;
443 
444 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
445 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
446 
447 procedure RESET_CLEAR is
448 begin
449 null;
450 end;
451 
452 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
453 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
454 
455 procedure MODIFIED
456 (AS_OF in OUT NOCOPY date) is
457 begin
458 CZ_BASE_MGR.MODIFIED('PS',AS_OF);
459 end;
460 
461 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
462 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
463 
464 end;